-
이것이 자바다 | 2강_변수와 타입JAVA/이것이 자바다 2022. 1. 9. 01:07
변수
- 첫 번째 글자는 문자이거나 '$','_'이어야 하고 숫자로 시작할 수 없다.
실수 리터럴
- 소수점이 있는 리터럴은 10진수 실수로 간주한다.
- E나 e가 있는 리터럴은 10진수 지수와 가수로 간주하다. (ex. 0.12E-5 = 0.12 x 10^-5)
package chap02; public class chap02_1 { //클래스 블록 public static void main(String[] args) { //메소드 블록 //10을 변수 value의 초기값으로 저장 int value = 10; //변수 value 값을 읽고 10을 더하는 산술 연산을 수행 //연산의 결과값을 변수 result의 초기값으로 저장 int result = value + 10; //변수 result 값을 읽고 콘솔에 출력 System.out.println(result); } }
메소드 블록 내에 선언된 변수 = 로컬 변수
package chap02; public class chap02_2{ 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); } }
String
- 클래스 타입
- 참조 변수
char c = ''; //컴파일 에러 char c = ' '; //정상작동 String str = ""; //정상작동
int 타입
- 자바에서는 정수 연산을 4byte로 처리한다.
package chap02; public class chap02_3{ 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); } }
-> 출력값은 모두 10
long 타입
- 메모리 사용 크기: 8byte
- 초기화할 때: 정수값 뒤에 'l'이나 'L'을 붙일 수 있음 (-> 컴파일러에게 8byte 정수 데이터임을 알려주기 위함 | *int 범위 넘어서는 경우 필수)
package chap02; public class chap02_4{ 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); } }
실수타입(float, double)
자바는 실수 리터럴의 기본 타입을 double로 간주한다.
-> 실수 리터럴을 float 타입 변수에 저장하려면 리터럴 뒤에 'f'나 'F'를 붙여야 한다.
double var1 = 3.14; float var2 = 3.14; //컴파일 에러 float var3 = 3.14F;
정수 리터럴에 10의 지수를 나타내는 E 또는 e를 포함하고 있으면 실수 타입 변수에 저장해야 한다.
int var6 = 3000000; //3000000 double var7 = 3e6; //3000000 float var8 = 3e6f; //3000000 double var9 = 2e-3; //0.002
boolean 타입
package chap02; public class chap02_5 { public static void main(String[] args) { boolean stop = true; if(stop) { System.out.println("중지합니다."); } else { System.out.println("시작합니다."); } } }
타입 변환
- 자동 타입 변환작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.
byte byteValue = 10; int intValue = byteValue; //자동으로 타입 변환이 일어난다. int intValue = 200; double doubleValue = intValue; //200.0
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
-자동 타입 변환 예시
package chap02; public class chap02_6 { public static void main(String[] args) { byte byteValue = 10; int intValue = byteValue; //int ← byte System.out.println(intValue); char charValue = '가'; intValue = charValue; //int ← char System.out.println("가의 유니코드=" + intValue); intValue = 500; long longValue = intValue; //long ← int System.out.println(longValue); intValue = 200; double doubleValue = intValue; //double ← int System.out.println(doubleValue); } }
2. 강제 타입 변환
int타입을 byte타입으로 변환할 때:
int 타입을 4개로 쪼갠 다음, 끝에 있는 1byte만 byte 타입 변수에 저장 가능 -> 원래 int 값은 보존되지 않음
하지만, int값이 끝 1byte로만 표현이 가능하다면 byte 타입으로 변환해도 원래 값 유지 가능
package chap02; public class chap02_7 { public static void main(String[] args) { int intValue = 44032; char charValue = (char) intValue; System.out.println(charValue); //가 long longValue = 500; intValue = (int) longValue; System.out.println(intValue); //500 double doubleValue = 3.14; intValue = (int) doubleValue; System.out.println(intValue); //3 } }
/* * 변환으로 인한 데이터 손실이 발생하지 않도록 한다. */ package chap02; public class chap02_8 { public static void main(String[] args) { int i = 128; if( (i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE) ) { //(i<-128)||(i>127)과 동일 System.out.println("byte 타입으로 변환할 수 없습니다."); System.out.println("값을 다시 확인해 주세요"); } else { byte b = (byte) i; System.out.println(b); } } }
기본타입 최댓값 상수 최솟값 상수 byte Byte.MAX_VALUE Byte.MIN_VALUE short Short.MAX_VALUE Short.MIN_VALUE int Integer.MAX_VALUE Integer.MIN_VALUE long Long.MAX_VALUE Long.MIN_VALUE float Float.MAX_VALUE Float.MIN_VALUE double Double.MAX_VALUE Double.MIN_VALUE *(+, -, *, /, %)연산의 경우 int 타입 변수에 저장해야 함
'JAVA > 이것이 자바다' 카테고리의 다른 글
이것이 자바다 | 5강_참조타입 (0) 2022.01.25 이것이 자바다 | 4강_연습문제 (0) 2022.01.24 이것이 자바다 | 4강_조건문과 반복문 (0) 2022.01.17 이것이 자바다 | 3강_연산자 (0) 2022.01.13 이것이 자바다 | 1강_자바 시작하기 (0) 2022.01.07