목표
자바의 프리미티브 타입, 변수, 그리고 배열을 사용하는 방법을 익힌다.
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 1차 및 2차 배열 선언하기
- 타입 추론, var
프리미티브 타입 종류와 값의 범위 그리고 기본 값
정수형 : bytes, short, int, long, char
소수형 : float, double
논리형: boolean
프리미티브 타입과 레퍼런스 타입
1) Primitive Type(기본형 타입)
프리미티브 타입은 정수, 실수, 문자 등 총 9가지 타입을 미리 정의하여 제공한다.
기본값이 있기에 Null이 존재하지 않는다. 넣고 싶다면 래퍼 클래스를 활용한다.
- 실제 값을 저장하는 공간으로 스택 메모리에 저장된다.
- 컴파일 시점에 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 주로 문법상의 에러가 많다.
2) Reference Type(참조형 타입)
프리미티브 타입을 제외한 타입들이 모두 레퍼런스 타입이다.
빈 객체를 의미하는 Null이 존재한다.
- 값이 저장된 주소값을 저장하는 공간으로 힙 메모리에 저장된다.
- 문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생한다.
Ex) 객체나 배열을 Null 값으로 받으면 NullPointException이 발생하므로 변수값을 넣어야 한다.
리터럴
상수는 값을 가지나 변하지 않는 변수이다. 반면에 리터럴은 값 그 자체이다. 예시로 1, '1', "1" 에서 리터럴은 1 이다.
변수 선언 및 초기화하는 방법
int a; //변수 선언(기본자료형) a = 10; //초기화
Student student //변수 선언(참조자료형)
student = new Student();
변수의 스코프와 라이프타임
변수의 종류
-
지역 변수
지역 변수를 선언한 중괄호 안에서만 유효하다
-
매개 변수
메소드가 호출될 때 생명이 시작되고, 메소드가 끝이나면 소멸한다.
-
인스턴스 변수
객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸한다.(Garbage Collector가 소멸시킨다)
-
클래스 변수
클래스가 처음 호출될 때 생명이 시작되고, 프로그램이 끝이나면 소멸한다
타입 변환, 캐스팅 그리고 타입 프로모션
타입 캐스팅(명시적 변환) : 큰 자료형에서 작은 자료형으로 타입을 변환할 때 사용
타입 프로모션(묵시적 변환) : 작은 자료형에서 큰 자료형으로 타입을 변환할 때 사용
int a = 10; float b = a;
System.out.print(a); System.out.print(b); // 결과 : 10 // 10.0
float a = 10; int b = (int)a;
System.out.print(a); System.out.print(b); // 결과 : 10.0 // 10
타입 캐스팅을 할 때는 (int)처럼 명시적으로 적어주어야한다.
1차 및 2차 배열 선언하기
int[] a; int b[] = {1,2,3} // 배열의 크기는 3
int[] c = new int[4]; // 초기값 0
String[] str = new String[4] // 초기값 ""
Student[] st = new Student[4]; // 초기값 null
st[0] = new Student(); // 참조자료형 배열
int[][] d = new int[2][2];
int[][] e = new int[3][]; // 가변크기
타입 추론, var
타입추론은 타입을 명시하지 않아도 알아서 변수의 타입을 찾아가는 것을 뜻한다. 자바에서도 10버전 이후로 타입추론이 가능한 var를 지원한다.
Reference
'Java' 카테고리의 다른 글
[스터디 5주차] 자바 클래스 (1) | 2020.12.23 |
---|---|
[스터디 4주차] 자바 제어문 (0) | 2020.12.10 |
[스터디 3주차] 자바 연산자 (0) | 2020.11.28 |
[스터디 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.11.21 |