본문 바로가기

JAVA27

Record Record 개념 record java 14부터 도입되어 16 버전부터 정식 스펙에 포함된 record는 class처럼 타입으로 사용 가능 순수한 데이터를 보유하기 위한 클래스 사용 방식 기존 사용 방식 일반적으로 class로 객체를 선언하고 필드를 입력하고 생성자, getter를 구현한다. record 사용 방식 public record 키워드로 클래스를 선언하면 자동으로 필드를 private final로 생성하고 생성자와 getter를 자동으로 생성한다. getter 메서드의 경우 일반적으로 선언하는 get000() 식의 네이밍이 아니라 000() 형태로 선언한다. Reference https://gyoogle.dev/blog/computer-language/Java/Record.html 2023. 4. 18.
String String 개념 String class new 키워드를 통해 생성된 인스턴스의 메모리 공간은 불변(Immuntable) Garbage Collector로 제거 문자열을 연산할 때 새로운 객체를 생성하여 처리 객체 불변으로 멀티스레드 환경에서 안정함 문자열 연산이 적고 조회가 많은 멀티스레드 환경에 적합 StringBuffer new 키워들 통해 생성하여 수정 가능(Mutable) 문자열 연산할 때 객체를 생성하지 않고 크기를 변경 Thread-safe 하여 멀티 스레드 환경에서 사용 가능 문자열 연산이 많은 멀티스레드 환경에 적합 StringBuilder new 키워들 통해 생성하여 수정 가능(Mutable) 문자열 연산할 때 객체를 생성하지 않고 크기를 변경 Thread-safe 하지 않기 때문에 싱.. 2023. 4. 17.
Call by value & reference Call by value & reference 개념 Call by value 값에 의한 호출 함수가 호출될 때 메모리에 함수를 위한 별도의 공간을 생성하고 전달되는 파라미터를 이곳에 저장 복사된 인자는 지역적으로 사용하고 사라짐 데이터를 복사하여 전달하기 때문에 원본 데이터가 변경되지 않지만 인자를 메모리에 할당해줘야 하기 때문에 메모리 공간을 더 많이 잡는다. Call by refrence 참조를 통한 호출 함수가 호출될 때 인자의 레퍼런스를 전달 함수 내에서 인자 값이 변경되면 전달된 인자 값도 변경 메모리 공간을 따로 할당해서 인자를 저장하지는 않지만 원본 데이터 값이 변경될 수 있다. 자바의 함수 호출 방식 java에서는 항상 call by value로 함수를 호출 C/C++와 다르게 자바에서는 .. 2023. 4. 7.
Intrinsic Lock 고유락 개념 고유 락 Java의 모든 객체는 각자 고유한 lock을 가지고 있다. synchronized 블록은 고유 락을 통해 스레드 접근 제한 Synchronized 블록 synchronized(객체){ … } 를 통해 블록 생성 가능 public synchronized int 처럼 접근제어자 뒤에 붙여 객체를 생성할 필요 없이 블록 생성 가능 재진입 가능성(Reentrancy) lock을 획득한 thread가 lock을 얻기 위해 대기할 필요가 없는 상태 lock을 획득하는 것은 호출 단위가 아니라 스레드 단위이다. 하나의 스레드가 synchronized로 선언된 메서드에 접근하고 그 안에 또 다른 synchronized로 선언된 메서드를 호출하는 상황에서 스레드가 lock을 가지고 있기 때문에 호.. 2023. 4. 6.