[Java] Java 기초

bagt13·2022년 5월 4일
0

JAVA

목록 보기
1/7



📒 JVM

JVM(Java Virtual Machine)은 자바 코드로 작성한 프로그램을 해석해 실행하는 별도의 프로그램이다. 즉, 프로그램을 실행하는 프로그램이다.

  • 자바에서의 컴파일(compile)이란, 자바 언어를 JVM이 이해할 수 있는 코드(바이트코드, Bytecode)로 변환하는 것을 의미한다.

  • JVM은 바이트코드를 운영체제에 맞는 기계어로 변환해준다.

  • 자바가 운영체제에 독립적인 것은 JVM이 있기 때문에 가능하다.



📒 기본 타입과 참조 타입


기본 타입(primitive type)데이터의 실제 값을 의미한다.

  • ex) byte, int, long, double, char, Boolean 등

참조 타입(reference type)은 데이터가 저장된 주소값을 의미한다.

  • 참조 타입은 객체의 주소를 저장하며, 기본 타입을 제외한 나머지 모든 타입이다.



📒 문자열(String)


String 리터럴과 String 객체

new 연산자를 통해 String 객체를 생성하는 경우 메모리의 Heap 영역에 할당되는 반면,
String 리터럴을 이용한 경우에는 String Constant Pool(상수풀)이라는 영역에 할당된다.

heap 영역에 생성된 객체의 경우, 생성될 때 마다 새로운 인스턴스가 생성되기 때문에 각각 다른 주소값을 가진다.

반면, 상수풀에 저장된 문자열의 경우 하나만 존재할 수 있기 때문에, 같은 내용의 문자열 리터럴을 다시 생성하면 기존의 문자열을 참조하게 된다.



StringBuilder vs StringBuffer

StringBuilder : 동기화를 보장하지 않지만, 연산 속도가 가장 빠르다.

StringBuffer : 동기화를 보장하지만, 동기화 기능으로 인해 StringBuilder보다 상대적으로 느림

=> 반복문과 같이 연산이 빈번히 일어나는 경우에 StringBuilder 사용이 권장된다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글