프로그래밍/Java

2.변수와 타입

저세상 개발자 2021. 12. 17. 12:08

리터럴

  • 소스코드 내에서 직접 입력된 값을 리터럴이라고 부른다.
  • 사실 리터럴은 상수(constant)와 같은 프로그램에서 상수를 “값을 한 번 저장하면 변경할 수 없는 변수”로 정의하기 때문에 이와 구분하기 위해 리터럴이라는 용어를 사용

 

변수 값 읽기

자바에서는 초기화되지 않은 변수는 읽을 수가 없다.

(C는 IDE에서 워닝은 띄워주지만 읽을 수는 있지 않나?)

 

기본(원시: primitive) 데이터 타입

  1. 원시 데이터 타입
    1. 정수
      1. byte → 1 byte
      2. char → 2 byte (c에서의 char과 다름에 주의)
      3. short → 2 byte
      4. int → 4 byte
      5. long → 8 byte
    2. 실수
      1. float → 4 byte
      2. double → 8 byte
    3. 논리
      1. boolean → 1 byte
  2. 특징
    • 정수 타입의 경우, 저장할 수 있는 값의 범위를 초과할 시 최소값부터 다시 반복 저장 ex> byte 타입에 128 대입 시 -128 저장됨
    • char 타입이 2바이트인 이유 → 자바에서는 모든 문자를 유니코드(Unicode)로 처리
    • String 타입은 기본 타입이 아니다.
      • String은 클래스 타입
      • 따라서 String 변수는 참조 변수 → 문자열이 변수에 직접 저장되는 것이 아니라, String 객체가 생성되고 String 변수는 String 객체의 주소를 참조
    • short 타입은 C언어와의 호환을 위해 사용됨, 자바에서는 잘 사용되지 않음
    • int 타입은 자바에서 정수 연산을 하기 위한 기본 타입 → byte 타입 + short 타입을 해도 int 타입으로 변환 후 연산되고 결과도 int 타입 → 따라서 int로 선언한 것과 성능 차이가 거의 없다.
  3. 타입 변환
    1. 자동(묵시적) 타입 변환
      • 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때, 큰 크기 타입으로 자동 변환됨
      • byte < short < int < long < float < double
      • float가 long보다 표현 값의 범위가 더 커서 더 큰 크기 타입인 점을 주의
    2. 강제(명시적) 타입 변환
      • 캐스팅 연산자 ()를 사용하여 강제 타입 변환 가능
    3. 주의 사항
      1. float는 부호 1비트 + 지수 8비트 + 가수 23비트 로 이루어져있음 → int값은 32비트이기 때문에 모든 int값을 정밀도 손실 없이 실수 타입으로 안전하게 변환시키기 위해서는 가수부가 52비트인 double 타입을 사용해야한다.