정수 타입
타입 | 메모리 크기 | 저장되는 값의 허용 범위 | |
byte | 1byte | 8bit | -128 ~ 127 |
short | 2byte | 16bit | -32,768 ~ 32,767 |
char | 2byte | 16bit | 0 ~ 65535(유니코드) |
int | 4byte | 32bit | -2,147,483,648 ~ 2,147,483,647 |
long | 8byte | 64bit | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
리터럴(literal)
리터럴이란 프로그래머가 직접 입력한 값을 의미한다.
소스 코드의 고정된 값을 대표하는 용어이며, 종류로는 정수, 실수, 문자, 논리, 문자열 리터럴이 있다.
변수에 대입할 정수 리터럴은 진수에 따라 작성하는 방법이 다르다.
public class IntegerLiteralExample {
public static void main(String[] args) {
int var1 = 0b1011; // 2진수
int var2 = 0206; // 8진수
int var3 = 365; // 10진수
int var4 = 0xB3; // 16진수
System.out.println("var1 : " + var1); // 11
System.out.println("var2 : " + var2); // 134
System.out.println("var3 : " + var3); // 365
System.out.println("var4 : " + var4); // 179
}
}
- 2진수 : 0b 또는 0B로 시작하고 0과 1로 작성
- 8 진수 : 0으로 시작하고 0~7 숫자로 작성
- 10진수 : 소수점이 없는 0~9 숫자로 작성
- 16진수 : 0x 또는 0X로 시작하고 0~9 숫자나 A, B, C, D, E, F 또는 a, b, c, d, e, f로 작성
기본적으로 컴파일러는 정수 리터럴을 int 타입 값으로 간주하기 때문에, int 타입의 허용 범위를 초과하는 리터럴은 뒤에 소문자 'l'이나 대문자 'L'을 붙여 long 타입 값임을 컴파일러에게 알려줘야 한다.
문자 타입
하나의 문자를 작은 따옴표(')로 감싼 것을 문자 리터럴이라 한다. 문자 리터럴은 유니코드로 변환되어 저장되며, 자바는 유니코드를 저장할 수 있도록 char 타입을 제공한다. 유니코드가 정수이므로 char 타입도 정수 타입에 속한다. char 변수에 작은따옴표로 감싼 문자가 아니라 유니코드 숫자를 직접 대입할 수 있다.
package ch02.sec03;
public class CharExample {
public static void main(String[] args) {
char c1 = 'A';
char c2 = 65;
char c3 = '가';
char c4 = 44032;
System.out.println(c1); // A
System.out.println(c2); // A
System.out.println(c3); // 가
System.out.println(c4); // 가
}
}
char c = ''; // error
char c = ' '; // 공백 포함 초기화
char 타입의 변수 초기화 방법
실수 타입
타입 | 메모리 크기 | 유효 소수 이하 자리 | |
float | 4byte | 32bit | 7자리 |
double | 8byte | 64bit | 15자리 |
double 타입이 float 타입보다 큰 실수를 저장할 수 있고 정밀도 또한 높다. float 타입과 double 타입은 가수와 지수를 저장하기 위해 전체 bit를 나누어 사용한다. double 타입은 float 타입 보다 약 2배의 유효 자릿수를 가지기 때문에 보다 정확한 데이터 저장이 가능하다
package ch02.sec04;
public class FloatDoubleExample {
public static void main(String[] args) {
// 정밀도 확인
float var1 = 0.1234567890123456789f;
double var2 = 0.1234567890123456789;
System.out.println(var1); // 0.12345679
System.out.println(var2); // 0.12345678901234568
}
}
실수 리터럴을 기본적으로 double 타입으로 해석하기 때문에 double 타입 변수에 대입해야 한다. float 타입에 대입하고 싶다면 리터럴 뒤에 소문자 ‘f’나 대문자 ‘F’를 붙여야한다.
논리 타입
boolean x = true;
boolean y = false;
참과 거짓을 의미하는 논리 리터럴은 true와 false이다. boolean 타입 변수는 주로 두 가지 상태값을 저장할 필요가 있을 경우에 사용되며, 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는 데 사용된다.
문자열 타입
작은따옴표(’)로 감싼 한 개의 문자는 char 타입이지만 큰따옴표(”)로 감싼 여러 개의 문자들은 유니코드로 변환되지 않는다.
char var1 = "A"; // error
char var2 = "홍길동"; // error
문자열을 변수에 저장하고 싶다면 String 타입을 사용한다.
String var1 = "A";
String var2 = "홍길동";
참고로 String 타입은 자바 기본 타입에 속하지 않는 참조 타입이다.
이스케이프 문자
문자열 내부에 역슬래쉬(\)가 붙은 문자를 사용하며, 사용 시 특정 문자를 포함할 수 있고 출력에 영향을 미치기도 한다.
package ch02.sec06;
public class StringExample {
public static void main(String[] args) {
String name = "홍길동";
System.out.println(name); // 홍길동
String str = "나는 \"집에\"가고 싶습니다.";
System.out.println(str); // 나는 "집에"가고 싶습니다.
str = "번호\t이름\t직업";
System.out.println(str); // 번호 이름 직업
// 텍스트 블록 문법
String str1 = "" + "{\n" + "\t\"id\":\"winter\",\n" + "}";
String str2 = """
{
"id":"winter",
}
""";
System.out.println(str1);
System.out.println(str2);
}
}
'IT > Java' 카테고리의 다른 글
[Java] 문자열 기본 타입 변환 (0) | 2024.02.20 |
---|---|
[Java] 연산식 자동 타입 변환 (0) | 2024.02.20 |
[Java] 명시적 타입 변환(강제 타입 변환) (0) | 2024.02.20 |
[Java] 묵시적 타입 변환(자동 타입 변환) (0) | 2024.02.20 |
[Java] 변수 / 변수 선언 / 변수 초기화 (0) | 2024.02.19 |