자바 데이터 타입, 변수 그리고 배열
프리미티브 타입 종류와 값의 범위 그리고 기본 값
primitive type이란 프로그래밍 언어가 제공하는 자료형(기본형 혹은 내장형) 중 하나입니다.
자바에서 제공하는 primitive type의 종류로는 8 가지가 있습니다.
primitive type | 크기 | 범위(signed) | 내용 |
---|---|---|---|
byte | 8-bit | -128 ~ 127 | |
short | 16-bit | -32,768 ~ 32,767 | |
int | 32-bit | -2³¹ ~ 2³¹-1 | |
long | 64-bit | -2⁶³ ~ 2⁶³-1 | |
float | single-precision 32-bit | 3.40282347 x 10³⁸, 1.40239846 x 10⁻⁴⁵ | |
double | double-precision 64-bit | 1.7976931348623157 x 10³⁰⁸, 4.9406564584124654 x 10⁻³²⁴ | |
boolean | 8-bit | ||
char | 16-bit | ‘\u0000’ (or 0) ~ ‘\uffff’ (or 65,535 inclusive) | single 16-bit Unicode character. |
프리미티브 타입과 레퍼런스 타입
primitive type을 제외한 모든 타입(객체)은 referenace type입니다.
- referance type은 메모리에 참조값을 저장해 놓는다는 점에서 primitive type과 다릅니다.
-
referance type은 Heap에 객체를 저장하고 스택에 참조타입을 저장합니다. (primitive type은 stack에 저장됨)
- 초기값이 null이 올 수 있습니다.
- 따라서 sql과 연동시 처리가 용이합니다.
- 예로, string, array, Integer 가 있습니다.
Int와 Intger 차이
Int : primitive 타입으로 산술 처리용이
Integer : referance 타입으로 null 을 가질 수 있음 (sql 연동에 용이)
리터럴 & 변수 선언 및 초기화하는 방법
리터럴(literal)이란 소스 코드의 고정된 값입니다. 리터럴은 변수 초기화에 종종 사용됩니다.
int i = 1;
String s = "가을";
변수의 스코프와 라이프타임
Instance 변수
- 범위 : 클래스 안, 함수 밖에 선언된 변수
- 라이프타임 : 객체가 메모리에 남아있을 때까지
Class 변수
- 범위 : 클래스 안, 함수 밖에 static으로 선언된 변수
- 라이프타임 : 프로그램이 끝날 때까지
Local 변수
- 범위 : 인스턴스 변수, 함수 변수가 아닌 변수들, 가장 바깥 블록까지
- 라이프타임 : 가장 바깥 블록 마지막까지
타입 변환, 캐스팅 그리고 타입 프로모션
타입 변환
int a = 1; long b = a;
이러면 에러 발생하므로 캐스팅을 해야합니다.
long a = 1; int b = (int)a;
하게 된다면 큰 타입-> 작은 타입으로 해야 커버가 가능합니다.
1차 및 2차 배열 선언하기
배열의 경우 new 키워드로 선언해야합니다.
int[] a = new int[10];
기본적으로 new키워드는 Heap에 저장되기때문에 각각의 값들은 Heap에 저장되지만, 배열을 참조하는 int[] a는 Stack에 저장됩니다.
타입 추론, var
타입 추론은 어떤 타입인지 예측.
var는 java10 부터 쓸 수 있게된 타입으로, 런타임시 타입이 결정되는 동적타입 키워드입니다.
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html