7.Java 기본 타입
기본 타입
자바가 제공하는 기본 타입은 8개가 있습니다.
| 정수 타입 | 실수 타입 | 논리 타입 |
| int , byte, char , long , short | float, double | boolean |
| 타입 | 메모리사용크기 | 저장되는 값의 허용 범위 |
| byte | 1byte/8bit | -2^7 ~ (2^7-1) / -128 ~ 127 |
| short | 2byte/16bit | -2^15 ~ (2^15-1) / -32.768 ~ 32.767 |
| char | 2byte/16bit | 0 ~ (2^16-1) / 0 ~ 65535 |
| int | 4byte/32bit | -2^31 ~ (2^31-1)/ -2.147.483.648~ 2.147.483.647 |
| long | 8byte/64bit | -2^63 ~ (2^63-1) / -9.223.372.036.854.775.808 ~ 9.223.372.036.854.775.808 |
각 타입에 저장되는 메모리 사용 크기를 알고 있어야 오류없이 잘 사용할수 있습니다.
예를들어서 2.147.483.647를 넘는 숫자를 변수에 넣어야하거나 출력할때는
long 타입을 사용해야 합니다.
char 타입은 문자를 사용할때 쓰는 타입입니다.
char var1 = 'A' 라고 선언하면 //10진수 65(유니코드) 의 값을 가집니다.
ex)
char var1 = 'A';
int var2 = 'A';
System.out.println(var1);
System.out.println(var2);
이렇게 코드를 작성하면
A를 출력하고
65를 출력합니다.
byte와 short 그리고 Int , long 의 범위를 잘 확인하고 사용해야 합니다.
실수 타입
float과 double은 실수 리터럴을 저장할 수 있는 타입 입니다.
메모리 사용 크기와 허용 범위는 이렇게 됩니다.
| 타입 | 메모리사용크기 | 저장되는 값의 허용 범위(양수기준) | 정밀도 |
| float | 4byte/32bit | (1.4 10^-45) ~ (3.4 10^38) | 7자리 |
| short | 8byte/64bit | (4.9 10^-324) ~ (1.8 10^308) | 15자리 |
double이라는 이름은 float 타입보다 약 2배의 정밀도를 갖는다는 의미에서 붙여진 것이라고 합니다
논리 타입
Java에서는 참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용합니다.
논리 리터럴은 1byte 크기의 boolean 타입 변수에 저장할 수 있습니다.
boolean stop = true;
boolean state = false;
주로 상태값에 따라 조건문이나 제어문의 흐름을 변경하는 데 사용합니다.
String 타입(클래스 타입)
자바에서 큰따옴표로 감싼 문자들은 문자열이라고 부릅니다.
작은따옴표는 문자 리터럴을, 큰따옴표는 문자열 리터럴을 구별하는 기호로 사용됩니다.
문자열을 변수에 저장하고 싶으면 String 타입을 이용합니다.
타입 변환
두 변수의 타입이 동일할 경우, 한쪽 변수값을 다른 쪽 변수에 복사해서 저장할 수 있습니다.
만약 두 변수의 타입이 다르면 값의 저장이 가능할 수도 있고 그렇지 않을 수도 있습니다.
a 변수에 저장된 값을 b 변수에 복사해서 저장하는 코드를 작성해보겠습니다.
byte a = 10;
int b = a;
byte 타입의 값이 int 타입의 값으로 변환되었습니다.
Java에서는 이것을 타입 변환이라고 합니다.
Java의 타입 변환은 기본적으로 두 가지 방식으로 이루어집니다:
자동 타입 변환: Java는 작은 크기의 데이터 타입을 더 큰 크기의 데이터 타입으로 자동으로 변환합니다.
예를 들어, int를 long으로 변환할 때
ex)int myInt = 100; long myLong = myInt; // 자동 타입 변환
강제 타입 변환
큰 데이터 타입을 작은 데이터 타입으로 변환할 때, 데이터 손실이 발생할 수 있으므로 명시적으로 변환해야 합니다.
예를 들어, long을 int로 변환할 때:
ex)long myLong = 100; int myInt = (int) myLong; // 강제 타입 변환
이렇게 타입 변환을 통해 다른 타입의 변수에 값을 할당할 수 있습니다. 자동 타입 변환은 데이터 손실이 없지만, 강제 타입 변환은 데이터 손실이 발생할 수 있으므로 주의해야 합니다.



