자바의 정석

자바의 정석 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개의 기본형은 형변환 가능하다.