Promotion(자동형변환)과 Casting(명시적형변환), Upcasting vs Downcasting
·
Language/Java
Promotionpromotion은 작은 크기의 자료형에서 큰 크기의 자료형으로 자동 변환되는 것을 의미한다.'암시적형변환', '자동형변환'이라고도 한다.int i = 100;long l = i; // int -> long으로 자동 변환float f = l; // long -> float으로 자동 변환  위의 코드에서 int 타입의 변수 i는 long 타입의 변수 l로,long 타입의 변수 l은 float타입의 변수 f로 자동 형변환 된다.더 큰 크기의 자료형으로 변환되어 데이터 손실이 발생하지 않기 때문에 자동 변환되어도 안전하다.참고로 + 연산자를 사용 시, 하나 이상의 피연산자가 String 타입이면, 다른 모든 피연산자도 String타입으로 promotion 된다. public class Stri..
String Interning
·
Language/Java
String Interning 이란?String Interning은 문자열 객체의 메모리 사용을 최적화하고, 문자열 비교를 효율적으로 수행하기 위한 기법이다.간단히 말하자면, 각각 구별되는 String 값의 복사본 하나만 저장하는 기법이다String은 String Pool이라는 특별한 메모리 영역에 저장된다.동일한 문자열에 대해 하나의 인스턴스만 유지하여 메모리 사용을 줄인다.==연산을 사용하여 빠르게 비교할 수 있다.String Pool과 String Interning이전 포스팅에서 String에 대해 설명하며 String Pool에 대해 언급한 적이 있다. String Pool이 정확히 무엇인지, String Interning과 무슨 관계가 있는지 알아보자.String PoolJava에서 문자열 리터..
String vs String Builder vs String Buffer
·
Language/Java
Java에서는 문자열을 다루기 위한 클래스로 String, StringBuilder, StringBuffer가 있다.각각 특성에 따라 상황에 맞게 선택하여 사용해야한다. String예시String str1 = "Hello";String str2 = "World";String str3 = str1 + " " + str2; // 새로운 문자열 객체가 생성됨 특징불변성String객체는 불변(imuutable) 특징을 갖고 있다. 즉, 한번 생성된 String객체의 값은 변경할 수 없다.만약 새로운 문자열을 만들려면 기존 문자열을 기반으로 새로운객체를 생성해야 한다.리터럴 풀문자열 리터럴은 JVM의 문자열 풀에 저장되어 메모리 효율성을 높인다.이는 동일한 값을 가지는 문자열 리터럴은 동일한 객체를 참조하게끔 한..
Stream API
·
Language/Java
Stream API 란?java 8에 도입된 기능으로, Collection(예: list, set, map 등)을 처리하는데 사용된다.데이터의 연속적인 흐름으로, 람다 표현식과 함께 사용하여 매우 간결하고 효율적으로 데이터를 처리할 수 있다. 주요 특징은 다음과 같다.선언적스트림 API는 데이터를 어떻게 처리할지에 대한 '방법'보다는 '무엇을 할 것인지'에 초점을 맞춘다.함수형 프로그래밍람다 표현식을 사용하여 더 간결하고 읽기 쉬운 코드를 작성할 수 있다.지연 연산스트림의 중간 연산은 지연(lazy) 연산으로, 최종 연산이 호출될 때까지 실제로 수행되지 않는다.최종연산이 호출될 때, 스트림 파이프라인 전체가 실행되며 데이터 처리가 수행된다.병렬 처리스트림은 쉽게 병렬 처리를 할 수 있는 메서드를 제공한다..
Java는 Call by Reference가 존재하지 않는다.
·
Language/Java
값에 의한 호출 (Call by Value)메서드 호출 시 전달된 인수의 값을 복사하여 메서드에 전달하는 방식이다.이 경우 원래 변수는 메서드 내부 변화에 영향을 받지 않는다. 예시)public class Main { public static void modifyValue(int x) { x = 10; } public static void main(String[] args) { int a = 5; modifyValue(a); System.out.println(a); // 출력: 5 }} modifyValue에서 10으로 값 변경하기를 시도했음에도, a는 여전히 5인것을 볼 수있다.이는 인수로 a가 전달될 때, 변수 x에..
JVM(Java Virtual Machine)과 Java 컴파일 과정
·
Language/Java
JVM(Java Virtual Machine)이란?JVM의 정의와 특징JVM은 Java 바이트코드를 실행하는 가상 컴퓨팅 엔진이다.주요 특징은 다음과 같다.⭐️ 플랫폼 독립성 : 다양한 OS에서 자바 프로그램을 실행할 수 있음.메모리 관리 : 가비지 컬렉션을 통한 자동 메모리 관리.바이트코드 실행 : 컴파일된 바이트코드를 기계어로 변환하여 실행. JVM의 구조아래의 이미지는 JVM의 구조이다. 크게 Class Loader, Runtime Data Area, Execution Engine으로 나눌 수 있다. 클래스 로더(Class Loader): 자바 클래스를 로드하고 링크하여 런타임 데이터 영역에 배치.Bootstrap Class Loader: JVM이 시작될 때 가장 먼저 로드되는 클래스 로더로, JD..