기본값, null
int a = null; (불가능)
Integer a = null; (가능)
코드 작성하면서 프리미티브 타입을 쓸까 참조타입을 쓸까 고민했던 적이 있었는데 프리미티브 타입은 제네릭 사용이 불가능 하다 (List 불가.) null 값도 넣을 수 없기도 하고. 그런데 원시타입은 직접 값을 저장하기 때문에 성능이 빠르다고 한다. (접근속도와 메모리 양의 차이 https://siyoon210.tistory.com/139)
1byte | 2byte | 4byte | 8byte | |
논리형 | boolean | |||
문자형 | character | |||
정수형 | byte | short | Integer | long |
실수형 | Float | double |
boolean : true, false값만 갖는다 / 기본값 false
char : 0부터 2의 16승 -1 이다. ( 0 ~ 65,536) / 기본값
byte : - 2의 7승 ~ (2의 7승 -1) ( - 128 ~ 127 ) / 기본값 0
short : -2의 15승 ~ (2의 15승 -1) ( -32,768 ~ 32,767) / 기본값 0
int : -2의 31승 ~ (2의 31승 -1) (대략 +_20억 정도이며 9자리 수라는 것을 기억하면 편하다) / 기본값 0
long : -2의 63승 ~ ( 2의 63승 - 1) / 기본값 0L
(float와 double은 위와 같은 규칙(값의 크기에 따른 범위)을 따르지 않는다.
float (1.4 X 10^-45) ~ (3.4 X 10^38) 정도 / 기본값 0.0f
double (4,9 x 10A^-324) ~ (1.8 x 10^308) 정도 / 기본값 0.0
float, double 표현방식이
int x = 1에서 1이 리터럴이다. 1과 100처럼 그 자체로 값을 의미하는 것이다. 1이 1의 값을 갖는다는 건 고정되어 있고 변하지 않는다.
변하지 않는 데이터를 표현하기 위한 것이기 때문에 primitive type은 리터럴이 될 수 있다.
ex. boolen 타입의 true, flase 리터럴
프리미티브 타입이 아닌 리터럴도 있는데 string이 대표적인 예다.
변수타입 변수이름;
으로 선언한다. 출처 : https://www.w3schools.com/java/java_type_casting.asp, 자바의정석 기초편 https://bong-f.tistory.com/85?category=995830
타입변환 : 데이터 타입을 기존과 다른 타입으로 변환하는 것
캐스팅 : 표현 범위가 더 좁은 쪽으로의 자동 형변환(묵시적형변환)
타입 프로모션 : 표현 범위가 더 넓은 쪽으로의 수동 형변환(명시적형변환)
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환 되는 원칙이 있다. (다른 데이터 타입간의 연산이나 대입이 있을 때)
값 손실이 발생하는 (더 좁은 표혐 범위로 형변환, 예를 들어 1234.56f를 1234 인 정수로 형변환 할 때 0,56의 형변환) 데이터간의 연산일 경우 에러가 뜬다. 명시적 형변환을 해줘야 한다. 값손실을 어떻게 처리할지 모르기 때문
데이터 표현 범위