목록CS 공부 (12)
끄적끄적
- ArrayList는 기본 Capacity=10이다. - add 시 내부에서 count를 한다. 데이터가 10개 있는데 add 하면 resize가 발생하여 15가 된다. - capcity를 설정하지 않았으면 (기존 용량 + 기존용량/2) 즉, 1.5배 크기의 새 배열에 기존 배열을 복사한다. 참고)https://junghyungil.tistory.com/96
String의 생성 방식 1. new 연산자를 이용한 방식 String s = new String("str1"); Heap 영역에 생성 2. 리터럴을 이용한 방식 String literal = "str2"; String 상수풀에 생성. String을 리터럴로 선언하게 되면 내부적으로 String의intern()메서드 호출 String.intern() 주어진 문자열이 String 상수풀에 있는지 검색하고 있으면 주소값 반환, 없으면 새로 추가하고 새로운 주소값 반환 constant pool의 위치 변경 - java 6: perm 영역 - java 8: Perm 영역은 사라지고 Heap 영역 (perm은 고정된 사이즈고 Runtime에 사이즈가 확장되지 않는다. OutofMemoryException문제때문에..
- final 키워드는 여러 컨텍스트에서 단 한번만 할당될 수 있는 entity를 정의할 때 사용 - final 변수, final 메서드, final 클래스로 적용할 수 있다. 1. final 변수 원시 타입 원시 변수를 final 로 선언하면 변경할 수 없는 상수 값 final int x=1; 객체 타입 객체 변수를 final로 선언하면 그 변수에 다른 참조값을 지정할 수 없음. 객체 속성은 변경 가능 final Pet pet = new Pet(); pet.setWeight(2); 메서드 인자 메서드 안에서 변수값 변경 불가 public void setWeight(final int weight){ //final 인자는 메서드 안에서 변경할 수 없음} 2. Final 메서드 - 메서드를 final로 선언..
JVM이란 - 자바 가상머신으로 운영체제 종류에 영향 받지 않고 독립적으로 자바를 동작하게 해주는 중계자. JVM의 메모리 구조 - 총 4단계로, Garbage Collector, Execution Engine, Class Loader, Runtime Data Area가 있다. 자바 실행 시 동작 과정 먼저 자바 컴파일러에 의해 자바 소스(.java) 파일은 Byte code형태인 클래스 파일로 변환된다. 이 클래스 파일을 JVM이 읽어가면서 수행된다. 1. Class Loader - JVM 내로 class를 로드하고 Link 작업을 통해 배치 등 일련의 작업을 한다. - 런타임 시 동적으로 클래스를 로드한다. 2. Execution Engine - 클래스 로더를 통해 JVM Runtime Data Ar..