목표
자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.
학습할 것
- 프리미티브 타입 종류와 값의 범위 그리고 기본 값
- 프리미티브 타입과 레퍼런스 타입
- 리터럴
- 변수 선언 및 초기화하는 방법
- 변수의 스코프와 라이프타임
- 타입 변환, 캐스팅 그리고 타입 프로모션
- 1차 및 2차 배열 선언하기
- 타입 추론, var
프리미티브 타입 종류와 값의 범위 그리고 기본 값
종류 | 타입 | 크기(byte) | 범위 | 기본 값 |
논리형 | boolean | 1 | true(1), false(0) | false |
문자형 | char | 2 | '\u0000' ~ '\uffff' (0~2¹⁶-1) |
\u0000 |
정수형 | byte | 1 | -128 ~ 127 (-2⁷ ~ 2⁷-1) |
0 |
short | 2 | -32,768 ~ 32,767 (-2¹⁵ ~ 2¹⁵-1) |
0 | |
int | 4 | -2,147,483,648 ~ 2,147,483,647 (-2³¹ ~ 2³¹-1) |
0 | |
long | 8 | -2⁶³ ~ 2⁶³-1 | 0 | |
실수형 | float | 4 | 1.40239846E-45f ~ 3.40282347E+38f | 0.0 |
double | 8 | 4.94065645841246544E-324 ~ 1.79769313486231570E+308 | 0.0 |
프리미티브 타입과 레퍼런스 타입
프리미티브 타입:
실제 값을 저장한다. (위의 표 참조)
레퍼런스 타입:
객체의 주소를 저장한다. 프리미티브 타입을 제외한 모든 타입. (String, System 등 | 4 byte | 0x00000000~0xffffffff)
리터럴
이름에서 보여주듯 문자 값 그대로를 의미한다. (아래 수식의 우항)
int name = 'soojin';
int age = 31;
리터럴의 정의를 찾아보며 상수와 리터럴이 헷갈렸는데 자바의 정석에 잘 설명이 되어있었다.
일반적으로 1, 123, 'A' 등은 '상수'라 부르는데 프로그래밍에서 상수는 '값을 한 번만 저장할 수 있는 공간'이라고 정의해 두었기 때문에 이와 구분하기 위해 리터럴이라는 용어를 사용한다고 한다.
변수 선언 및 초기화하는 방법
변수 선언하는 방법
<변수 타입> <변수명>;
ex) int num;
변수 초기화하는 방법
<변수타입> <변수명> = <초기화 값>;
ex) int num = 17;
변수의 스코프와 라이프타임
변수의 스코프란
변수를 사용 가능한 범위를 뜻한다.
라이프타임
분류 | 설명 | 생성 시점 | 소멸 시점 |
지역 변수 | 중괄호{} 내에 선언된 변수 | 중괄호 시작 점{ | 중괄호 끝 } |
매개 변수 | 메소드에 넘겨주는 변수 | 메소드가 호출될 때 | 메소드가 끝날 때 |
인스턴스 변수 | 클래스 내, 메소드 밖에 선언된 변수 | 객체가 생성될 때 | 객체를 참조하는 다른 객체가 없을 때 |
클래스 변수 | 인스턴스 변수 중 static으로 선언된 변수 | 클래스가 처음 호출될 때 | 자바 프로그램이 끝날 때 |
출처: https://onsil-thegreenhouse.github.io/programming/java/2017/10/31/java_tutorial_1-3/
타입 변환, 캐스팅 그리고 타입 프로모션
boolean을 제외한 나머지 프리미티브 타입은 서로 형 변환이 가능하다.
캐스팅(명시적 타입 변환)
크기가 큰 타입을 더 작은 타입으로 변환할 때 (타입)피연산자와 같이 변환 타입을 명시해줘야 한다.
범위가 큰 타입의 값을 더 작은 범위의 타입으로 변환하면 값이 손실될 수 있다.
ex) long a = 10;
int b = (int)a;
프로모션(묵시적 타입 변환)
크기가 작은 타입을 크기가 큰 타입으로 변환할 때.
ex) int a = 10;
long b = a;
1차 및 2차 배열 선언하기
1차원 배열 선언
타입[] 변수이름; ex) int[] arr;
타입 변수이름[]; ex) int arr[];
길이가 3인 int형 배열 : int[3] arr;
2차원 배열 선언
타입[][] 변수이름; ex) int[][] arr;
타입 변수이름[][]; ex) int arr[][];
타입[] 변수이름[]; ex) int[] arr[];
2행 3열 크기의 int형 배열: int[2][3] arr;
타입 추론, var
자바의 var 타입은 10 버전부터 사용이 가능하다.
var는 지역변수이며 컴파일러가 타입을 추론하므로 타입을 선언할 필요가 없다.
그러나 타입을 추론할 때 제공된 값을 토대로 추론하기 때문에 초기화는 필수이며 null로 초기화할 수 없다.
Java는 정적으로 유형이 지정된 언어이기 때문에 JavaScript의 var와는 달리 다른 유형의 값을 할당할 수 없다.
Reference)
자바의 정석 - 남궁성
'IT > JAVA' 카테고리의 다른 글
자바 상속 - 백기선님 스터디 6주차 과제 (0) | 2021.02.19 |
---|---|
자바 클래스 - 백기선님 스터디 5주차 과제 (0) | 2021.02.13 |
자바 제어문 - 백기선님 스터디 4주차 과제 (0) | 2021.02.10 |
자바 연산자 - 백기선님 스터디 3주차 과제 (0) | 2021.02.05 |
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 - 백기선님 스터디 1주차 과제 (0) | 2021.01.31 |