데이터 타입
- 모든 변수에는 타입(type)이 있다
- 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라짐
기본(원시) 타입
- 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입
- 메모리에는 0과 1을 저장하는 최소 기억 단위인 비트(bit)가 있음
- 8개의 비트를 묶어서 바이트(byte)라고 함
- 정수: byte(1byte, 8bit), char(2byte, 16bit), short(2byte, 16bit), int(4byte, 32bit), long(8byte, 64bit)
- 실수: float(4byte, 32bit), double(8byte, 64bit)
- 논리: boolean(1byte, 8bit)
정수 타입
- byte < char < short < int < long
- 자바는 기본적으로 정수 연산을 int 타입으로 수행
package thisisjava.chap02.num02;
public class ByteExample {
public static void main(String[] args) {
byte var1 = -128;
byte var2 = -30;
byte var3 = 0;
byte var4 = 30;
byte var5 = 127;
// byte var6 = 128; // 컴파일에러
System.out.println(var1);
System.out.println(var2);
System.out.println(var3);
System.out.println(var4);
System.out.println(var5);
}
}
package thisisjava.chap02.num02;
public class GarbageValueExample {
public static void main(String[] args) {
byte var1 = 125;
int var2 = 125;
for (int i = 0; i < 5; i++) {
var1++; //1씩 증가시켜
var2++; //1씩 증가시켜
System.out.println("var1: " + var1 + "\t" + "var2: " + var2);
}
}
}
> byte 127(최대값) 넘으면 다시 시작! -128부터 시작
char 타입
- 문자형
- 자바는 모든 문자를 유니코드로 처리
- 유니코드 홈페이지: http://www.unicode.org
- 유니코드는 음수값 없어
- 작은 따옴표(')로 감싼 문자를 대입하면 해당 문자의 유니코드 저장
package thisisjava.chap02.num02;
public class CharExample {
public static void main(String[] args) {
char c1 = 'A'; //문자 직접 저장
char c2 = 65; //10진수로 저장
char c3 = '\u0041'; //16진수로 저장
char c4 = '가'; //문자 직접 저장
char c5 = 44032; //10진수로 저장
char c6 = '\uac00'; //16진수로 저장
int uniCode = c1; //유니코드 얻기
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
System.out.println(uniCode);
}
}
short 타입
- 2byte로 표현되는 정수값을 저장할 수 있는 데이터 타입
- C언어와의 호환을 위해 사용, 비교적 자바에서는 잘 사용되지 않는 타입
int 타입
- 4byte로 표현되는 정수값을 저장할 수 있는 데이터 타입
- 정수 연산 기본 타입
package thisisjava.chap02.num02;
public class IntExample {
public static void main(String[] args) {
int var1 = 10; //10진수
int var2 = 012; //8진수
int var3 = 0xA; //16진수
System.out.println(var1);
System.out.println(var2);
System.out.println(var3);
}
}
long 타입
- 8byte로 표현되는 정수값을 저장할 수 있는 데이터 타입
- 은행 및 우주와 관련된 프로그램과 같이 수치가 큰 데이터를 다루는 프로그램에서 long 타입 필수적 사용
- long타입의 변수를 초기화할 때에는 정수값 뒤에 소문자 l이나 대문자 L을 붙일 수 있음
package thisisjava.chap02.num02;
public class LongExample {
public static void main(String[] args) {
long var1 = 10;
long var2 = 20L;
// long var3 = 1000000000000; //컴파일 에러
long var4 = 1000000000000L;
System.out.println(var1);
System.out.println(var2);
System.out.println(var4);
}
}
> int 타입의 저장 범위를 넘어서는 정수 리터럴에 L을 붙이지 않아서 컴파일 에러!
실수 타입
- 소수점이 있는 실수 데이터를 저장
- float, double
- float보다 double이 더 정밀한 값 저장할 수 있음
- 높은 정밀도를 요구하는 계산에서는 double 사용
- 실수 리터럴의 기본 타입은 double로 간주
- 실수 리터럴을 float 타입 변수에 저장하려면 리터럴 튀에 소문자 f나 대문자 F를 붙여야 함
package thisisjava.chap02.num02;
public class FloatDoubleExample {
public static void main(String[] args) {
//실수값 저장
double var1 = 3.14;
// float var2 = 3.14; //컴파일 에러
float var3 = 3.14F;
//정밀도 테스트
double var4 = 0.1234567890123456789;
float var5 = 0.1234567890123456789F;
System.out.println("var1: " + var1);
System.out.println("var3: " + var3);
System.out.println("var4: " + var4);
System.out.println("var5: " + var5);
//e사용하기
int var6 = 3000000;
double var7 = 3e6;
float var8 = 3e6F;
double var9 = 2e-3;
System.out.println("var6: " + var6);
System.out.println("var7: " + var7);
System.out.println("var8: " + var8);
System.out.println("var9: " + var9);
}
}
논리 타입
- blooean은 1byte로 표현되는 논리값(true/false)을 저장할 수 있는 데이터 타입
- 두 가지 상태값을 저장할 필요성이 있을 경우에 사용
- 조건문과 제어문의 실행 흐름을 변경하는데 주로 이용
package thisisjava.chap02.num02;
public class BooleanExample {
public static void main(String[] args) {
boolean stop = true;
if (stop) {
System.out.println("중지합니다");
} else {
System.out.println("시작합니다");
}
}
}
> stop = true라서 "중지합니다" 출력
> stop = false라면 "시작합니다" 출력
'이것이 자바다' 공부 기록
300x250
'Language > JAVA' 카테고리의 다른 글
[JAVA] 연산자와 연산식 2 // 이항연산자 삼항연산자 (0) | 2021.09.13 |
---|---|
[JAVA] 연산자와 연산식 1 // 단항연산자 이항연산자 (0) | 2021.09.12 |
[JAVA] 데이터 타입 변환 // 자동타입변환 강제타입변환 연산식타입변환 (0) | 2021.09.11 |
[JAVA] 변수 (0) | 2021.09.09 |
[JAVA] 자바! 프로그래밍 언어 / 주석 / 실행문 / 세미콜론 (0) | 2021.09.08 |