본문 바로가기

JavaScript

실습

자바에서 문자열 처리

자바에서 문자열불변(immutable) 객체로, 한 번 생성된 문자열은 수정할 수 없다. 이로 인해 문자열을 상수 풀(String Pool)에 저장하여 메모리를 효율적으로 사용할 수 있다. 만약 두 개의 문자열이 동일한 값을 가지고 있으면, 자바는 같은 메모리 주소를 공유하게 된다. 예를 들어, "hello"라는 문자열이 여러 번 사용되면 그 값은 동일한 메모리 위치에 저장되므로, 동일한 주소를 참조하게 된다.

String str1 = "hello";
String str2 = "hello";
System.out.println(str1 == str2); // true

위 코드에서 str1과 str2는 동일한 값을 가지고 있지만, 자바는 이를 상수 풀에서 참조하기 때문에 주소 값이 동일하다. 즉, 같은 메모리 공간을 공유하게 된다.

 

 

브라켓 노테이션과 점(.) 접근

브라켓 노테이션과 점(.)은 자바에서 배열 접근이나 컬렉션 요소 접근에 사용되는 방법이다. 둘은 기본적으로 기능이 같다. 예를 들어, 배열의 인덱스를 접근할 때 []와 .을 모두 사용할 수 있다.

String[] arr = {"apple", "banana", "cherry"};
System.out.println(arr[0]);  // "apple"

그리고, 배열이나 리스트에서는 []와 점(.)을 모두 사용할 수 있다. 예를 들어, ArrayList에서 get() 메서드를 사용할 때 [] 대신 .을 사용하는 경우도 있다. 하지만, []는 배열에만 사용되고, .은 객체의 속성이나 메서드 호출에 사용된다.

 

 

동기와 비동기

동기(Synchronous)

동기(Synchronous) 방식은 작업을 순차적으로 실행하는 방식이다. 한 작업이 완료되기 전에는 다음 작업을 실행하지 않는다. 즉, 하나의 작업이 완료되어야만 다음 작업을 시작할 수 있다.

예를 들어, 동기적으로 파일을 읽고, 그 파일의 내용을 처리하는 동안 다른 작업을 수행할 수 없다.

public void fetchData() {
    System.out.println("파일을 읽는 중...");
    // 파일을 읽는 작업이 끝날 때까지 기다린다.
    System.out.println("파일 읽기 완료!");
}

비동기(Asynchronous)

비동기(Asynchronous) 방식은 작업을 동시에 실행할 수 있도록 한다. 작업을 요청한 후, 그 작업이 끝나지 않아도 다른 작업을 계속 실행할 수 있다. 즉, 작업을 요청하고 바로 다음 작업을 진행하면서, 다른 작업이 완료되면 결과를 받아서 처리할 수 있다.

예를 들어, 비동기적으로 파일을 읽으면서, 그 파일 읽기가 끝나기 전에 다른 작업을 수행할 수 있다.

public void fetchData() {
    System.out.println("파일을 읽는 중...");
    // 비동기적으로 파일을 읽고 결과를 처리한다.
    new Thread(() -> {
        // 파일을 읽는 작업이 비동기적으로 처리된다.
        System.out.println("파일 읽기 완료!");
    }).start();
    System.out.println("다른 작업 수행 중...");
}

 

주요 차이점

  1. 실행 방식:
    • 동기: 순차적으로 하나의 작업이 끝날 때까지 기다림.
    • 비동기: 작업을 시작하고, 다른 작업을 동시에 실행하면서 결과를 기다림.
  2. 효율성:
    • 동기: 한 번에 하나의 작업만 수행되기 때문에 상대적으로 느림.
    • 비동기: 여러 작업을 동시에 처리할 수 있어 더 효율적일 수 있음.
  3. 사용 예:
    • 동기: 데이터베이스 쿼리, 파일 처리 등.
    • 비동기: 웹 요청, I/O 처리 등.

 

'JavaScript' 카테고리의 다른 글

고차함수  (0) 2024.05.27
JS브라우저 DOM  (0) 2024.05.24
ES6  (0) 2024.05.23
클로저 - 원래 스코프 내부에서는 외부로 접근 가능한거 아니야?  (0) 2024.05.22
객체  (0) 2024.05.22