모르는 것만 짧고 빠르게 정리한 노트입니다.
1.1 변수란?
: 단 하나의 값을 저장할 수 있는 메모리 공간.
1.2 변수의 선언과 초기화
: 변수를 선언하면, 메모리 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 이 공간은 변수이름을 통해 사용할 수 있게 된다.
: 추가로 하나의 프로세스는 가상 메모리를 OS 의해 할당받는데, 하나의 java application 또한 가상 메모리를 할당 받는다. 할당받은 가상 메모리를 이용하여, JVM을 띄운다. JVM 은 특별한 설정을 하지 않으면 기본 350MB 정도의 힙 메모리 제한을 갖는다고 한다. 보통 로컬 변수를 생성할 때는 이 힙 메모리에 생성되고 GC 에 의해 관리된다.
: 한번 JVM 이 할당한 물리메모리는 GC 가 JVM 내의 힙메모리에서 점유를 하지 않아도, OS에게 반납되지 않는다고 한다. (https://woooongs.tistory.com/86?category=798806)
1.3 변수의 명명규칙
- case-sensitive 하며 길이제한이 없다.
- 예약어는 사용 불가
- 숫자로 시작해서는 안된다.
- 특수문자는 '_' 와 '$' 만 허용한다.
- 카멜케이스를 권장한다.
- 상수의 이름은 모두 대문자로 하되, 여러 단어인 경우 '_' 로 구분한다.
- 클래스의 첫 글자는 항상 대문자를 권장한다.
2.1 Primitive type
- 논리형 : bool (1byte)
- 문자형 : char (2byte) => 유니코드를 사용하기 때문(내부적으로는 정수로 저장한다.)
- 정수형 : byte (1byte), short (2byte), int (4byte), double (8byte)
- 실수형 : float (4byte), double (8byte)
2.2 상수와 리터럴
- 상수 : 변수 타입 앞에 final 키워드만 붙여주면 된다, 사용하기 전에만 초기화하면 되지만, 선언과 동시에 초기화하는 것이 좋다.
- 리터럴 : 변수가 아니라 그 자체로 값인 것들. (ex, 20, 'a' 등)
- 리터럴 접미사
: 그냥 숫자를 쓰면 기본적으로 정수는 int, 실수형은 double 이다. long 타입 리터럴은 L 접미사를 붙여야하고, float 타입 리터럴은 f 접미사를 붙여야한다. 또 소수점이나 e 또는 E 를 포함하고 있어도 실수형 리터럴로 간주된다.
(잘 쓰지는 않지만, 16진 지수를 나타내는 p가 포함된 리터럴은 실수형이다.)
- 타입의 불일치
: 리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통, 하지만 넓은 타입 변수에 좁은 타입 리터럴을 저장하는 것은 가능하다. 반대의 경우는 변수가 해당 리터럴을 충분히 표현할 수 없기 때문에, 무조건 오버플로우가 발생한다. 따라서 애초에 컴파일 오류가 난다.
- 문자열 리터럴
: 문자 리터럴과 문자열 리터럴은 다르다. 전자는 char, 후자는 string. 문자열과 다른 자료형 사이의 덧셈이 일어나면, 다른 모든 자료형을 문자열로 변환 후에 문자열 덧셈을 한다.
자동 형변환
: 값 손실이 적게 나는 쪽으로 진행 => 더 큰 범위의 변수로 맞춰짐.
기타
- 진법 변환
- 2의 보수
- 실수형 저장 방식 (S, E, M)
- 다른 타입 간 형변환
'Java > Java의 정석' 카테고리의 다른 글
[Java의 정석] 06. 객체지향 프로그래밍 (0) | 2022.03.08 |
---|---|
[Java의 정석] 05. 배열 (0) | 2022.03.05 |
[Java의 정석] 04. 조건문 (0) | 2022.03.05 |
[Java의 정석] 03. 연산자 (0) | 2022.03.05 |
[Java의 정석] 01. 자바란 (0) | 2022.03.02 |