본문 바로가기
내일배움캠프(Sparta)/자바 문법 종합

[Java] 변수

by mmm- 2023. 10. 19.

   변수

변수 타입

    • 기본형 변수
      • Boolean, char, byte, short, int, long, float, double ...
      • 실수형 변수의 표현 범위
        • float는 4byte만쓰는데 long보다 더 넓은 범위를 표현할 수 있는 이유는?
          ➡️ 부동소수점을 사용하기 때문에 표현할 수 있는 식이 더 많음
          • 부동소수점 : 소수점의 길이가 가변적인 방식.
            부호, 지수, 가수의 영역만 정해놓고 지수와 가수를 곱한 값을 저장해 long보다 훨씬 많은 수 표현 가능.
          • 고정소수점 : 소수점의 길이를 제한해놓는 방식
    • 참조형 변수
      • String, Object, Array, List ...
    • wrapper 클래스 변수
      : 기본형 변수를 클래스로 한 번 랩핑(감싸는) 변수
      • 기본형 변수 타입명에서 첫글자를 대문자로 바꿔서 정의
      • 박싱 vs 언박싱
        • 박싱 : 기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것
          int number = 21;
          Integer num = new Integet(number); // 예전에는 이렇게 표현했지만 지금은 지원하지 않는 방식.
          Integer num = number; // boxing. 이제는 wrapping 하지 않아도 할당.
        • 언박싱 : 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것
          int n = num.intValue(); // unboxing. 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공

      • 래퍼 클래스 사용 이유 : 자바의 핵심 기능인 클래스로 변수를 관리하면 객체지향의 많은 기능들을 사용할 수 있기 때문


참조형

Stack 영역

: 정적으로 할당된 메모리 영역

  • 기본형 변수 저장 (불변)
  • 참조형 변수의 주소 값도 저장

 

Heap 영역

: 동적으로 할당된 메모리 영역

  • 참조형 변수의 원본 저장 (가변)

   형변환

: 변수의 타입을 바꾸는 것

 

  • 타입별 크기 순서
    byte(1) → short(2) → int(4) → long(8) → float(4) → double(8)

 

자동 형변환 vs 강제 형변환

자동형변환 강제형변환
  • 작은 타입 → 큰 타입 형변환 시
  • 더 큰 표현범위를 가진 타입으로 변환되는 것이므로 값은 손실 X. 그래서 컴파일러가 자동으로 형변환해줌
  • 저장이나 계산시 자동형변환 일어남
  • 큰 타입 → 작은 타입 형변환 시
  • 더 작은 표현범위를 가진 타입으로 변환되는 것이므로 손실 발생.