기본형 변수 : 실제 값을 저장(Data)
boolean, char, byte, short, int, long, float, double 총 8개
참조형 변수 : 값이 저장되어 있는 주소를 값을 저장
null, 4byte의 주소값
참조형 변수는 변수의 타입으로 클래스의 이름을 사용
1byte | 2byte | 4byte | 8byte | |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
논리형 : true/false, 조건식과 논리적 계산에 사용
문자형 : 문자 저장에 사용, 문자를 내부적으로 정수 값 코드로 저장
정수형 : 정수 값 저장
byte는 이진데이터
short는 C언어와의 호환을 위해
주로 사용되는 것은 int, long
실수형 : 실수 값 저장
boolean | char | byte | short | int | long | float | double | |
bit | 8 | 16 | 8 | 16 | 32 | 64 | 32 | 64 |
byte | 1 | 2 | 1 | 2 | 4 | 8 | 4 | 8 |
△ 8가지 기본형의 크기
논리형을 제외한 나머지 자료형은 서로 변환이 가능(형변환)
정수형의 값의 범위는 -2^(n-1) ~ 2^(n-1)-1 (n은 bit수)
논리형 - boolean
기본값은 false
문자형 - char
변수에 값을 저장할 때는 ‘’(작은따옴표) 사용
문자의 코드를 저장하므로 음수가 필요 없음 - 첫 번째 자리에 부호를 사용 X
어떤 문자의 유니코드를 알고 싶으면 int형 변수로 형변환
변수에 저장되는 값은 부호없는 정수의 형태로 저장 - 모든 데이터가 숫자로 저장
하나의 문자만 저장 가능하므로 문자열을 저장하고 싶으면 String 클래스를 사용해야 함
String str = new String(“New”); / String str = “New”; 둘 다 가능
덧셈 연산자(+)를 사용하여 문자열 결합 가능
+는 왼쪽에서 오른쪽으로 연산 수행
한쪽만 String일 경우 +를 사용하면 비String인 데이터를 String으로 변환한 뒤 결합시킴
int와 같은 기본형 타입 값을 문자열로 변환할 때는 아무 내용없는 빈 문자열(“”)을 더해주면 됨
어떤 타입의 변수라도 문자열과 +를 수행하면 결과는 문자열
특수문자 | 리터럴 |
tab | \t |
backspace | \b |
form feed | \f |
new line | \n |
carriage return | \r |
역슬래쉬(\) | \\ |
작은따옴표 | \’ |
큰따옴표 | \” |
유니코드(16진수) 문자 | \u유니코드 ex)char a = ‘\u0041’ |
△ 특수문자를 표현하는 방법
|
정수형 - byte, short, int, long
다른 3타입과 달리 long 타입은 뒤에 L or l 붙여야 함
16진수는 “0x” or “0X”, 8진수는 “0”를 앞에 붙이면 됨
int oct = 010; int hex = 0x10;
왼쪽에서 첫 번째 자리는 부호자리(0이면 양수, 1이면 음수)
입력할 수 있는 범위를 넘어서면 오버플로 됨 - 2진수화 해서 생각
오버플로되면 최소값부터 다시 반복됨
변수의 범위를 넘는 값으로 초기화할 수 없음
실수형 - float, double
부동소수점 방식으로 저장
±a * 10^n (a : 가수, n : 지수, 0 ≤ a < 1 범위의 실수)
float = 부호 1bit + 지수 8bit + 가수 23bit = 32bit = 4byte
double = 부호 1bit + 지수 11bit + 가수 52bit = 64bit = 8byte
float보다 double이 정밀도가 더 높음 - 더 높은 값 표현 가능
float는 뒤에 f or F를, double은 뒤에 d or D를 붙임(double은 생략 가능)
값에 소수점, 10의 제곱을 나타내는 E or e, f, F, d, F를 포함하면 실수형
10. = 10.0 / .10 = 0.10 / 3.14e3 = 3140.0 / 1e-3 = 0.001
형변환(캐스팅)
모든 연산은 같은 타입일 때만 수행
형변환 : 변수의 타입을 다른 타입으로 변환하는 것 - (타입)피연산자
기본형-기본형, 참조형-참조형 은 가능하나 기본형-참조형 은 불가능
피연산자는 형변환 후에도 변화가 없음, 값이 바뀌지 않음
기본형은 boolean을 제외한 나머지 간에 형변환 가능
범위가 큰 자료형에서 작은 자료형으로 형변환 시 값 손실 발생할 수 있음
작은 자료형에서 큰 자료형으로 형변환 시에는 값 손실이 없음 - 캐스트 연산자 생략 가능
byte → int | int → byte | |
10진수 | 10 / 10 | 300 / 44 |
값 손실 | 없음 | 있음 |
실수형은 정수형과 값을 표현하는 방식이 다르므로 같은 크기라도 실수형이 정수형보다 더 큰 표현 범위를 갖음
char와 short는 같은 2byte지만 범위가 다르므로 어느 쪽으로의 형변환도 값 손실이 있을 수 있음
'JAVA' 카테고리의 다른 글
[Java의 정석] 3.2. 단항 연산자 (0) | 2016.03.01 |
---|---|
[Java의 정석] 3.1. 연산자 (operator) (0) | 2016.03.01 |
[Java의 정석] 2.1. 변수 (0) | 2016.03.01 |
[Java의 정석] 1.2. JVM (JAVA Virtual Machine) (0) | 2016.03.01 |
[Java의 정석] 1.1. 자바의 장점 (0) | 2016.03.01 |