본문 바로가기

개발도서/자바

[ Core Java Volum ] Chapter 3 자바의 기본 구조

C 와 달리 새로웠던 점

- 자바는 일반적인 종료 코드는 0 하나 뿐인다. 다른 코드로 프로그램 종료는 System.exit 를 통해서 가능하다.

- 자바는 프로그램 이식성을 위해 원시 자료형의 범위를 고정했다. Unsigned 지원하지 않는 이유도 이와 같다.

- 부동 소수점 계산은 이진수 시스템의 표현 때문에 오차가 존재한다. 정확한 수치 계산은 BigDecimal 클래스 사용을 통해 가능하다.

- 자바는 10 버전부터 var 키워드를 제공한다.

- 유니코드 인식은 u 개수의 상관 없이 마지막 u를 기준으로 이루어진다. 

   -> ASCII와 유니코드 Conversion 과정 중 u가 더해질 수 있기 때문이다.

- 자바는 C/C++과 달리 선언과 정의를 구별하지 않는다.

- 문자열은 원소를 변경할 수 없는 Immutable 특성을 가지고 있다. 수정이나 문자 연결을 할 때면 새로운 문자열을 생성한다.

   -> 자바 구현자가 문자열의 변경보다 참조가 많이 일어나기에 부여한 문자열의 특성이다.

   -> 문자 연결을 빈번하게 일어날 경우 StringBuilder와 StringBuffer를 사용할 수 있다.

- Block Scope에서 같은 이름의 변수 선언은 되지 않는다. 

   -> 같은 이름의 지역 변수로 인해 생길 수 있는 에러를 방지하기 위해서다.

- Switch문에서는 2가지 표현 방식이 있다.

   -> 콜론(:)을 통한 방식은 fallthrough가 발생하기 때문에 break가 필요하다.

   -> 화살표(->) 방식은 fallthrough가 발생하지 않는다.

- 8바이트보다 큰 숫자는 BigNumber라고 하며 정수는 BigInteger, 부동 소수점은 BigDecimal 클래스를 통해 처리가 가능하다.

- 자바에는 다차원 배열이 존재하지 않는다. 단일 배열 중첩을 통해 다차원 배열인 척 보이게 한 것이다.

   -> 위같은 이론으로 자바 비정형 배열이 가능하다.

궁금한 것

1. JIT 컴파일러 동작 원리와 다른 컴파일러에 비해 성능이 좋은 이유?

2. 자바의 UTF16의 코드 포인트와 Char를 통해서 제어하는 방식

3. JVM, JRE, JDK 등 자바 관련 용어

'개발도서 > 자바' 카테고리의 다른 글

[ Core Java Volum ] Chapter 5 상속  (0) 2022.10.23
[ Core Java Volum ] Chapter 4 클래스와 객체  (0) 2022.10.16