본문 바로가기

한권떼기/자바의 정석

[한권떼기] 자바의정석 챕터02. 변수(Variable)

728x90
반응형

**자바의 정석(남궁성 저)를 읽고 정리한 글입니다.

 

변수란?

변수는 단 하나의 값을 저장할 수 있는 메모리 공간.

변수를 선언하면, 변수 타입에 알맞는 크기의 저장 공간이 만들어지는데, 변수 이름을 통해 접근할 수 있음

 

 

자바의 명명 규칙

자바 프로그래머에게 권장되는 암묵적인 규칙이 있는데, 다음과 같음

1. 클래스 이름 첫글자는 항상 대문자 (ex. HelloController)

2. 여러 단어로 이루어진 이름은 단어 첫글자를 대문자로 함. 특히 CamelCase를 자주 쓴다. (ex. inputList)

3. 상수의 이름은 대문자로 하고, 여러 단어로 이루어진 경우 _ 를 붙인다. (ex. MAX_MEMORY_SIZE)

 

 

변수의 타입

자바의 자료형에는 기본형과 참조형이 있음

 

 

기본형

기본형 변수에는 실제 값이 저장됨

boolean, char, byte, short, int, long, float, double의 8가지가 있음

byte, short, int 모두 정수형 타입이지만 각각 1, 2, 4byte 크기를 갖습니다.
이 때 메모리 절약을 중요시 여긴다면 byte, short를 써도 좋지만 그렇지 않다면 int를 사용하는 것이 좋습니다.
그 이유는 JVM의 피연산자 스택이 결국 피연산자를 4byte 단위로 저장하기 때문에 byte나 short를 사용해도 4byte로 메모리에 올라가기 때문입니다.
또한 int는 CPU가 가장 효율적으로 처리할 수 있는 타입입니다.

float와 double의 경우, 둘 다 실수형을 나타낼 수 있지만 float가 7자리, double이 15자리까지 정밀도를 가지므로 더 높은 정밀도가 필요한 경우 double을 사용해야 함

 

참조형

참조형 변수에는 어떤 값이 저장되어있는 주소를 가리키는 값이 저장됨

-> 따라서 객체의 주소 사이즈인 4byte의 크기를 가짐

기본형의 8가지를 제외한 나머지 타입으로, 새로운 클래스를 작성하여 새로운 참조형을 만들 수 있음 (ex. MyClass input)

 

 

상수와 리터럴

final을 붙여서 상수를 선언할 수 있음 (ex. final int MAX_MEMORY_SIZE = 10;)

상수는 반드시 선언과 동시에 초기화해야 하고, 암묵적으로 대문자를 사용하며 단어 사이를 _ 로 구분함

리터럴은 2014, "ABC"와 같은 값 그대로를 의미함 (ex. final int SIZE = 10; 에서 SIZE는 상수, 10은 리터럴임)

문자 리터럴: 'A'와 같이 작은 따옴표로 감싸고 반드시 문자 하나로 이루어져야 함

문자열 리터럴: "ABC"와 같이 큰 따옴표로 감싸고, 빈 문자열도 허용됨. 또한 덧셈 연산자를 이용해 문자열을 결합할 수 있음.

 

 

진법

10진법: 우리가 평상시에 사용하는 진법 (0~9)

2진법: 컴퓨터가 알아들을 수 있는 진법. 모든 데이터는 2진수로 바뀌어 저장됨 (0~1)

bit는 한 자리의 2진수이며 8bit = 1byte임

CPU가 한 번에 처리할 수 있는 데이터의 크기를 word라고 하는데, 32bit OS에서는 4byte, 64bit OS에서는 8byte가 word의 크기임

 

음수의 2의보수 구하기

1. 음수의 절댓값을 2진수로 변환

2. 1번에서 구한 2진수를 1의 보수로 변환

3. 1의 보수에 1을 더함

2의 보수의 절댓값이 같은 양수와 음수를 더하면 0이 나오게 됩니다.

 

기본형의 개념

정수형

부호비트: 정수형의 왼쪽 첫번째 비트(MSB)가 0이면 양수, 1이면 음수를 의미함

오버플로우: 정수형 기본형에서 타입이 표현할 수 있는 값의 범위를 넘어서는 것을 의미함

 

 

 

 

 

728x90
반응형