Java String은 불변이지만 비공개 최종 필드 중 하나는 변경 가능한 char[] 배열을 참조한다. String 메서드는 배열 내용을 수정하지 않지만 배열 참조가 공개적이라면 다른 코드가 문자열 값을 변경하는 것을 막을 수 없다.
간단한 의문이다. 왜 기본형이아닌 참조형만 컬렉션프레임워크에 사용할수 있도록 설계했을까?이는 자바의 메모리 관리 방식과 객체지향적 특성에서 원인을 찾아볼 수 있다.1\. 자바 메모리관리 방식 : 자바는 기본형 데이터 타입인 int, double 등은 스택메모리에 저장하
컬렉션 프레임워크인 List를 상속받는 클래스로는 ArrayList와 LinkedList가 있다.위와 같은 이미지를 첨부하였지만..사실상 연결리스트를 사용하는 경우는 앞에서의 추가/삭제가 많~이 일어날때 밖에 없다.왜냐면 이론적으론 여러가지 고려해야할 사항이있지만 일단
자바 파일(.java)과 클래스 파일(.class)은 모두 자바 프로그래밍 언어와 관련이 있지만, 그 역할과 내용은 다르다. 다음은 두 파일 간의 주요 차이점:내용: 자바 파일은 자바 소스 코드를 포함. 이 파일에는 클래스, 인터페이스, 메서드, 변수, 주석 등이 포함
제네릭 타입 이레이저(Type Erasure)는 자바 컴파일러가 제네릭 코드에서 타입 정보를 제거하는 과정이다. 이는 자바 런타임 환경에서의 호환성을 유지하고, 코드의 일관성을 보장하기 위해 필요하다.타입 정보 제거: 컴파일러가 제네릭 타입을 컴파일할 때, 모든 제네릭
1. 사용하지 않는 패키지까지 몽땅 import하면 프로그램 성능에 영향을 줄까? 대답은 'NO'다. 우리가 import를 한다고 해서 더 많은 메모리를 사용하지 않는다. 왜냐면 import문은 단순히 컴파일러에게 코드에서 참조된 클래스를 찾을 위치를 알려주기 위한
Optional 클래스를 사용하면 데이터를 래핑하고 null 체크와 일부 try-catch 블록을 피할 수 있다. 이를 통해 메소드 호출을 체인으로 연결하고 더 유연한 코드를 작성할 수 있다. 그러나 남용하면 성능 저하와 코드의 복잡성을 초래할 수 있다. 이 글에서는
EnumSet, EnumMap을 사용하는 주된 이유는 열거형에 특별히 최적화되어 있기 때문이다.1) EnumSet,EnumMap과 HashMap,HashSet의 가장 큰 차이점은 EnumMap,EnumSet은 열거형 키에 최적화 되어 있다. EnumMap,EnumSet
제네릭 클래스: 클래스가 인스턴스화될 때 타입이 결정되므로, 다양한 타입을 유연하게 처리할 수 있다.정적 메서드: 클래스 단위로 작동하며, 클래스 인스턴스와 독립적으로 동작합니다. 제네릭 클래스의 타입 파라미터와 무관하다.정적 제네릭 메서드: 메서드 선언에 제네릭 타입
LinkedHashMap과 TreeMap 자체는 Iterable을 직접 구현하지 않지만, 그들이 반환하는 entrySet(), keySet(), values() 메서드를 통해 이터레이션이 가능하다. (이 메서드들은 Iterable 인터페이스를 상속하는 컬렉션을 반환한다
Closeable 인터페이스 소개 Closeable은 데이터를 소스 또는 대상으로 하는 자원으로, 이를 닫아야 할 필요가 있을 때 close() 메서드를 호출한다. 이 인터페이스는 스트림 클래스의 중요한 인터페이스 중 하나이며, JDK 5에 도입되어 java.io에
로그를 사용하는 것이 System.out.println보다 성능이 좋다는 의미는 여러 가지 측면에서 성능 효율성을 제공한다는 것을 의미한다.구체적으로 다음과 같은 이유로 로그 프레임워크가 성능에 더 유리하다.내부 버퍼링 이유: IO 작업을 최소화하여 성능 저하를 방지