직접 데이터를 담는 데이터 타입
public class IntegerType {
public static void main(String[] args) {
System.out.println("byte 크기 " + Byte.SIZE);
System.out.println("short 크기 " + Short.SIZE);
System.out.println("int 크기 " + Integer.SIZE);
System.out.println("long 크기 " + Long.SIZE);
System.out.println("char 크기 " + Character.SIZE);
}
}
byte 크기 8
short 크기 16
int 크기 32
long 크기 64
char 크기 16
public class FloatingPointType {
public static void main(String[] args) {
System.out.println("float 크기 " + Float.SIZE);
System.out.println("double 크기 " + Double.SIZE);
}
}
float 크기 32
double 크기 64
프리미티브 타입 | 레퍼런스 타입 | |
---|---|---|
유형 | 내장된 기본 유형 | 프리미티브 타입을 제외한 모든 타입 |
Null | 기본값이 있어 Null이 존재X | 빈 객체를 의미하는 Null이 존재 |
저장 | stack 메모리에 실제 값 저장 | heap 메모리에 주소 값 저장 |
프로그램에서 직접 표현한 값
int a = 15; // 10진수
int b = 015; // 8진수
int c = 0x15; // 16진수
int d = 0b0101; // 2진수
double f = 0.1234; // 소수점
double g = 1234E-4; // 지수
float h = 0.1234f; // f 필수
double i = .1234d; // d 생략가능
char a = 'H'; // 알파벳 리터럴
char b = '한'; // 한글 리터럴
char c = \uae00; // 유니코드 리터럴
char d = '\n'; // 특수문자 리터럴
String e = "JAVA";
boolean a = true;
boolean b = 10 > 0;
⚠️ C언어와 달리 0과 1로 논리 값을 나타낼 수 없다
변수를 선언하고 처음으로 값을 저장하는 것을 변수 초기화라고 한다
int a; // 프리미티브 타입
String b = new String() // 레퍼런스 타입
a = 100;
b = "Java";
static int var = 10;
int hello = 3;
{ // 인스턴스 초기화 블록
System.out.println("hello -> 5 초기화");
hello = 5;
}
static { // 정적 초기화 블록
System.out.println("var -> 20 초기화");
var = 20;
}
변수는 어디에서 선언되었는지에 따라 사용 범위가 달라진다. 일반적으로 중괄호로된 블록내에서 사용가능하다
변수의 스코프에 따라 라이프타임 역시 변한다
연산을 수행하기 위해선 데이터들이 같은 자료형이어야한다. 같은 타입으로 만들기 위해 변환하는 것을 타입(형) 변환이라고 한다.
(자료형)변수;
구조로 명시적으로 변수를 해당 자료형으로 변환한다.long
--> float
에서처럼 표현 범위가 더 넓다면 단순 자료형 크기를 떠나 변환 가능하다배열 : 같은 타입의 자료를 하나로 묶어 놓은 것
다음처럼 선언할 수 있다
type[] arr1
type arr2[]
메모리를 할당 받으려면 크기를 명시하거나 초기화 해야한다
int[] arr1 = new int[5]; // 크기 명시
int[] arr2 = new int[] {1, 2, 3, 4, 5}; // 초기화
int[]arr3 = {1, 2, 3, 4, 5}; // new type 명시 생략 가능
이때 arr1, arr2, arr3는 실제로는 배열의 레퍼런스를 담고 있기 때문에 하나의 배열을 다수의 변수가 참조하는것도 가능하다
int arr[][] = { {1,2,3}, {4,5,6}, {7,8,9} }
위 코드는 3x3 크기의 정방형 배열을 만든다.
자바는 각 행의 열 크기가 다른 비정방형 배열도 지원한다
타입을 명시하지 않고 컴파일러가 알아내는 것
String msg = "Java"; // 타입 명시
var msg = "java"; // 타입 추론
var 사용 시에는 반드시 선언과 초기화를 동시에 해줘야한다