목표
자바의 프리미티브 타입, 변수, 그리고 배열을 사용하는 방법을 익힌다.
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 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
자바의 데이터 타입(Primitive type, Reference type)
타입(Data type)이란 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다. 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다.
gbsb.tistory.com
'Java' 카테고리의 다른 글
[스터디 5주차] 자바 클래스 (1) | 2020.12.23 |
---|---|
[스터디 4주차] 자바 제어문 (0) | 2020.12.10 |
[스터디 3주차] 자바 연산자 (0) | 2020.11.28 |
[스터디 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2020.11.21 |