자바에서 String은 가장 많이 사용하는 타입 중 하나이다. 단순히 문자열 타입이라고 생각하기 쉽지만 사실 String은 Java 언어 전체에서 특별하게 취급되는 객체이다. String은 primitive 타입이 아닌 일반 객체이지만 JVM과 컴파일러가 문자열 처리를 위해 특별한 최적화 전략을 적용하는 클래스이다. 예를 들어 문자열 리터럴 관리, String Pool, 컴파일러 최적화 등이 대표적이다. 또한 String 클래스는 다음과 같이 final 클래스로 선언되어 있어 상속이 불가능하다. public final class S
1. equals() 자바의 equals() 메서드는 두 객체가 논리적으로 같은지 비교할 때 사용하는 메서드이다. 이때 “같다”의 기준은 단순히 같은 메모리 주소를 가리키는지를 의미하는 것이 아닌 객체의 내부 값이 동일한지(논리적 동등성)를 의미한다. String a = new String("BlueCool");String b = new String("BlueCool");System.out.println(a == b); // false (참조값이 다름)System.out.println(a.equals(b)); // true
1. 기본 개념 얕은 복사(Shallow Copy) - 객체의 1차 레벨 필드 값만 새로 담는다. 참조 타입 필드는 주소(참조)만 복사한다. 깊은 복사(Deep Copy) - 중첩 객체까지 새 인스턴스를 만들어 전체 그래프를 복제한다. 결과적으로 얕은 복사는 내부 참조가 공유되고 깊은 복사는 공유되지 않는다. 예를 들어 아래와 같은 도메인이 있을 때 class Address { private String city; public Address(String city) { this.city = city; } public
1. Stream API Stream API는 Java 8에서 도입된 기능으로 컬렉션 데이터를 함수형 프로그래밍 스타일로 처리하기 위해 제공되는 API이다. 기존의 for문이나 Iterator를 이용한 외부 반복 방식 대신 내부 반복 방식을 사용하여 코드의 가독성과 유지보수성을 향상시킨다. // for문for (String name : names) { if (name.length() 4) { System.out.println(name.toUpperCase()); }}// Streamnames.stream() .f
1. 기본 자료형 (Primitive Type) 메모리에 실제 데이터 값을 직접 저장하며 주로 스택(Stack) 메모리 영역에 할당된다. 자바에는 총 8개의 기본 자료형이 정의되어 있다. 정수형 byte 1byte의 크기를 가지며 기본값은 0이다. 표현 가능한 값의 범위는 -128 ~ 127이다. short 2byte의 크기를 가지며 기본값은 0이다. 표현 가능한 값의 범위는 -32,768 ~ 32,767이다. int 4byte의 크기를 가지며 기본값은 0이다. 표현 가능한 값의 범위는 -2^31 ~ (2^31 - 1)이다. (약