백기선 자바 스터디 2: 자바 데이터 타입, 변수 그리고 배열

Hoyoung Jung·2020년 11월 21일
0

자바 프리미티브 타입

Data TypeDefault Value (for fields)minmax
byte0-128127
short0-3276832767
int0-2^312^31 - 1
long0L-2^632^63 -1
float0.0f32bit single precision(IEEE754 참고)
double0.0d64bit double precision
char'\u0000''\u0000''\uffff'
booleanfalsefalsetrue
  • 참고로 String 및 Object의 기본값은 null 이다.
  • boolean 의 크기는 표준에 정의되어 있지 않지만 oracle JVM의 경우 8bits.

레퍼런스 타입

자바에는 4가지 레퍼런스 타입이 있다.

  1. class types
  2. interface types
  3. type variables
  4. array types
  • 3번이 참조라는 건 처음 알았다.
  • String도 class이다.
  • 참조 타입에 의해 참조되는 객체는 힙에 저장되고 gc의 대상이 된다.

리터럴

  • 자바독
  • 1, 3.0, "hello", true 등
  • 1_000_000 처럼 숫자 사이에 _를 사용 가능

변수 선언 및 초기화하는 방법

  • 멤버 변수는 선언과 동시에 초기화 가능
  • 멤버 변수 초기화 생략시 기본 값을 갖는다.
  • 지역변수는 반드시 초기화가 필요하다!

변수 스코프

  • 일반적인 지역변수는 block 스코프이다.
  • 내부 블록은 외부 블록에서 선언된 변수의 참조가 가능하다.
  • 문득 생각나서 확인해 보니 closure가 있다.
        int x = 3;
        int[] a = {2, 4, 6, 8};
        Arrays.stream(a).forEach((i) -> {
            System.out.println(i * x);
        });

타입 컨버전

  • C 언어에서 캐스팅이라고 사용했었는데 공식 문서에는 conversion이라고 나와 있었다.
  • 스펙에 의해 지정된 타입간 컨버전이 가능한다.
  • 클래스의 경우 상속 관계에 있는 클래스들간 컨버전이 가능하다. 런타임 에러에 주의할 것!

타입 프로모션

  • 값의 범위가 작은 타입에서 큰 타입으로 캐스팅(A widening primitive conversion)이 필요할 경우 자동으로 캐스팅이 일어나는 현상
    int x = 3;
    double d = 0.3f + x;

타입 추론, var

  • 자바 10부터 도입
  • 지역 변수에 한해 var 키워드 사용 가능
Map<Integer, String> map = new HashMap<>();
var idToNameMap = new HashMap<Integer, String>();
var monsters = new ArrayList<Monster>();
//...
for (var m: monsters) {
}
profile
주짓수를 좋아하는 개발자

0개의 댓글