자바의 정석
자바의 정석 2장
그zi운아이
2023. 5. 27. 11:05
이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다.
Chapter 2

변수
1.변수란
프로그래밍 언어 에서의 변수란 데이터,주소를 저장하는 박스 즉 메모리상의 공간을 의미 한다. 하나의 변수엔 하나의 값만 저장 가능하므로 새로운 값을 저장하면 기존의 값을 사라진다.
1-1. 변수의 선언과 초기화
- 변수를 사용하기 이전에 선언 및 초기화를 해야된다. 변수 선언을 통해 선언한 타입의 크기만큼 메모리 공간이 할당 되고 이 공간은 변수명을 이용해 사용할 수 있다.
- 지역 변수의 경우 선언시에 초기화를 반드시 해줘야 하고 초기화 하지 않은 변수는 사용할 수 없다.
1-2. 변수의 명명 규칙
- 대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다른 것으로 간주된다
- 카멜 표기법 : 각 단어의 처음은 대문자로 사용하고 나머지는 소문자로 사용하는 표기법(변수와 메소드에서 이름을 구분하기 위해 사용된다.)
- 클린코드 책에 변수에 대해 얘기하기론 의미있고 검색하기 쉽게 하기 위해서 변수명을 길게 쓰는것도 좋다고 한다.
- 예약어를 사용해서는 안 된다.
- 숫자로 시작해서는 안 된다.
- 특수문자는 _와 $만을 허용한다.
2.변수의 타입
2-1. 기본형과 참조형
- 기본형 : 기본형 변수는 실제 값을 저장한다. 논리형,정수형,문자형,실수형등 총 8개의 타입이 있다.
- 논리형(boolean) : true와 false중 하나를 저장 할 수 있으며 기본 값은 flase 이다.
- 문자형(char) : 문자가 저장되는 것이 아닌 유니코드(정수)가 저장된다.
- 정수형(byte,short,int,long) : 숫자를 저장하기 위한 타입총 4개의 자료형이 있으며 크기로 나열하면 byte(1) -> short(2) -> int(4) -> long(8) 나타낼 수 있다.(오버 플로우를 방지하기 위해서 타입 선택을 잘해야 한다..)
- 실수형(float,double) : 실수를 조정하기 위한 타입으로 부동 소주점을 이용해 float는 7자리 double은 15자리 까지 정확성을 보장한다.
- 참조형 : 참조형 변수는 어떤 값이 저장되어 있는 참조 주소를 값으로 갖는다. Collection,클레스,인터페이스 등이 포함된다.
3. 진법
3-1 10진법과 2진법
- 우리는 일상생활에서 주로 10진법을 사용하나 컴퓨터는 2진 체계로 설계 되어 있다 .
- 2진법은 0과 1 두개의 기호로만 값을 표현히가 때문에 자리수가 상달히 길어진다. 이러한 단점 보안으로 8진법과 16진 법을 사용한다.(2^n승 진법으로 표현할 수 있기 때문에 자리수가 짧아져서 알아보기 쉽고 서로 변환 방법또한 간단하다.)
3-2 음수의 2진 표현 - 2의 보수
- 음수의 절대값을 2진수로 변환한다.(-5 -> 5 -> 0101)
- 위에서 변환한 2진수를 이용하여 1의 보수를 수한다.(1010)
- 1의 보수에 1을 더한다. (1011)
4.형변환
모든 변수와 리터럴에는 타입이 있다.프로그래밍을 하다 보면 서로 다른 타입간의 연산을 수행해야 하는 경우가 있는데 이때 타입을 일치시켜야 한다.
4-1.형변환 방법
- 형변환 하고자하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙어주면 된다. ex : (타입)피연산자
- 정수형간의 형변환
- 큰 타입에서 작은 타입으로 변환은 크기의 차이만큼 잘려나가기 때문에 값 손실이 발생할 수 있다.
- 작은 타입에서 큰 타입으로의 변환은 값 손일이 발생하지 않고 나머지 빈공간은 0또는 1로 채워진다.
- 실수형간의 형변환
- 정수와 마찬가지로 작은 타입에서 큰타입 변환시 빈공간은 0으로 채우는 방식이다.
- double에서 float으로 변환 하는 경우 double의 기저를 빼고 float의 기저를 더한후 double의 가수중 23자리만 저장 되고 버려진다(24번째 자리에서 반올림발생 가능)
- double to float 형변환시 float타입의 법위를 넘는 값은 무한대 또는 0을 결과로 얻는다
- 정수형과 실수형 간의 형변환
- 정수를 2신수 변환 후 정규화를 거쳐 실수의 저장형식으로 저장된다.
- 실수형이 정수형 보다 훨씬 큰 저장법위를 갖기 때문에 정수형에서 실수형을 변환한다.
- 실수형을 정수형으로 변환시 소수점 이하 값은 버려지고 정수형으로 형변환 된다.
- 실수형에서 정수형 변환시 값이 크면 오버플로우 발생한다.
- 자동 형변환
- 기존의 값을 최대한 보전할 수 있는 타입으로 자동 형변환된다
- byte -> short->int->long->float->double순서
- boolean을 제외한 나머지 7개의 기본형은 형변환 가능하다.