[Java 개념] Chapter 2-2 : 기본 타입
2021.12.11 - [코드/Java] - Chapter 2-1 : 변수
Chapter 2-1 : 변수
변수 : 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름 - 프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을 수 있다. 사용자가 메모리에 값을 저장하고 싶다면 변수를
arcticfox96.tistory.com
- 기본 타입
자바는 정수, 실수, 논리값을 저장할 수 있는 총 8개의 기본 타입을 제공한다.
정수를 저장할 수 있는 타입은 byte, char, short, int, long
소수점이 있는 실수를 저장할 수 있는 타입은 float, double
true, false와 같은 논리값을 저장할 수 있는 타입은 boolean
- 정수 리터럴
소스 코드에서 프로그래머에 의해 직접 입력된 값을 리터럴 이라고 한다.
public class ex2_5 {
public static void main(String[] args){
int var1 = 0b1011;
int var2 = 0206;
int var3 = 365;
int var4 = 0x83;
System.out.println("var1 = " + var1);
System.out.println("var2 = " + var2);
System.out.println("var3 = " + var3);
System.out.println("var4 = " + var4);
}
}
위의 코드를 실행하면
var1 = 11
var2 = 134
var3 = 365
var4 = 131 의 결과 값을 얻는다.
public class ex2_6 {
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 = " + var1);
System.out.println("var2 = " + var2);
System.out.println("var3 = " + var3);
System.out.println("var4 = " + var4);
System.out.println("var5 = " + var5);
System.out.println("var6 = " + var6);
}
}
해당 코드 실행 시 컴파일 오류 발생. byte의 표현 범위를 넘었기 때문이다.
- long 타입
long 타입은 수치가 큰 데이터를 다루는 프로그램에서 사용 - 은행 or 과학
기본적으로 컴파일러는 정수리터럴을 int 타입으로 간주하고 int 범위를 넘는 경우 컴파일러에게 long 타입임을 명시
간단하게 값 끝에 L값을 붙여주면 된다.
long balance = 3000000000; // 컴파일 에러
long balance = 3000000000L;
public class ex2_7 {
public static void main(String[] args){
long var1 = 10;
long var2 = 20L;
// long var3 = 100000000000;
long var4 = 100000000000L;
System.out.println("var1 = " + var1);
System.out.println("var2 = " + var2);
// System.out.println("var3 = " + var3);
System.out.println("var4 = " + var4);
}
}
-char 타입
하나의 문자를 작은따옴표로 감싼 것을 문자 리터럴이라고한다. 문자 리터럴은 유니코드로 변환되어 저장된다.
char var1 = 'A'; // 유니코드: 65
char var2 = 'B'; // 유니코드: 66
char var3 = '가'; // 유니코드: 44032
char var4 = '각'; // 유니코드: 44033
유니코드가 정수이기 때문에 char도 정수 타입에 속한다. 따라서 다음과 같은 표현도 가능하다.
char c = 65; //10진수
char c = 0x0041; //16진수
※ 문자 리터럴을 int 타입에 저장하는 경우
문자 리터럴은 유니코드로 변환되기 때문에 int 타입에도 저장할 수 있지만 유니코드 자체를 출력한다.
public class ex2_8 {
public static void main(String[] args){
char c1 = 'A';
char c2 = 65;
char c3 = '\u0041';
char c4 = '가';
char c5 = 44032;
char c6 = '\uac00';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
System.out.println(c6);
}
}
출력 결과
A
A
A
가
가
가
- String 타입
작은따옴표로 감산 문자는 char 타입으로 저장되어 유니코드로 저장되지만 큰따옴표로 감싼 문자 또는 여러 개의 문자들은 유니코드로 변환되지 않는다.
char var1 = "A";
char var2 = "홍길동";
자바에서 큰 따옴표로 감싼 문자들을 문자열이라고 부른다.
public class ex2_9 {
public static void main(String[] args){
String name = "홍길동";
String job = "프로그래머";
System.out.println(name);
System.out.println(job);
}
}
해당코드는 홍길동, 프로그래머를 출력한다.
※ 이스케이프 문자
문자열 내부에 역슬래시가 붙은 문자를 사용할 수 있는데 이를 이스케이프 문자라고 한다.
이스케이프 문자를 사용하면 문자열 내부에 특정 문자를 포함시킬 수 있다.
String str = "나는 \"자바\"를 좋아합니다.";
System.out.println(str)
=> 나는 "자바"를 좋아합니다.
- 자주 사용되는 이스케이프 문자
public class ex2_10 {
public static void main(String[] args){
System.out.println("번호\t이름\t직업");
System.out.print("행 단위 출력\n");
System.out.print("행 단위 출력\n");
System.out.println("우리는 \"개발자\" 입니다.");
System.out.print("봄\\여름\\가을\\겨울");
}
}
출력은 다음과 같다.
번호 이름 직업
행 단위 출력
행 단위 출력
우리는 "개발자" 입니다.
봄\여름\가을\겨울
- 실수 타입.
소수점이 있는 실수 리터럴을 저장할 수 있는 타입에는 float과 double이 있다.
다음은 float 타입과 double 다입이 저장할 수 있는 사용 크기와 허용 범위이다.
자바는 실수 리터럴은 기본적으로 double 타입으로 해석하기 때문에 double 타입 변수에 저장한다.
실수 리터럴을 float 타입 변수에 저장하면 컴파일 에러가 발생한다.
float var = 3.14; // 컴파일 에러 발생.
double var = 3.14;
double var = 314e-2
실수 리터럴을 float 타입으로 저장하고 싶다면 뒤에 f 나 F를 붙여 명시해야한다.
float var = 3.14;
float var = 3.14f;
float var = 3E6F;
double 타입은 float 타입보다 2배 정도 정밀도가 높아 정확한 데이터 저장이 가능하다.
public class ex2_11 {
public static void main(String[] args){
// float var1 = 3.14;
float var2 = 3.14f;
double var3 = 3.14;
// 정밀도 테스트
float var4 = 0.1234567890123456789f;
double var5 = 0.1234567890123456789;
System.out.println("var2: " + var2);
System.out.println("var2: " + var3);
System.out.println("var2: " + var4);
System.out.println("var2: " + var5);
}
}
출력 결과는 다음과 같다.
var2: 3.14
var2: 3.14
var2: 0.12345679
var2: 0.12345678901234568
- 논리 타입
자바는 참과 거짓을 의미하는 논리 리터럴도 true와 false를 사용한다.
1byte 크기의 boolean 타입 변수에 저장할 수 있다.
boolean stop = true;
boolean state = false;
논리 타입은 주로 두 가지 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는 데에 사용.
public class ex2_12 {
public static void main(String[] args){
boolean stop = true;
if(stop){
System.out.println("중지합니다.");
}
else{
System.out.println("시작합니다.");
}
}
}