변수타입에 대해 알아보자.
자료형(기본자료형) valueType
논리형 : boolean - 1bit(기본값 False)
문자형 : char - 2byte (기본값 \u0000 or 0) => 0 ~ 65,535
정수형 : byte - 1byte (기본값 0) => -128 ~ 127
short - 2byte (기본값 0) => -32,768 ~ 32,767
int - 4byte (기본값 0) => -21,4748,3648 ~ 21,4748,3647(21억)
# 일반적으로 가장 많이 쓰이는 자료형.
그러나 주식시장이나 증권 관련 분야에서는 long을 사용하는 경우가 더 많음
long - 8byte (기본값 0) => -9,223,372,036,854,775,808 ~ (900경)
실수형 : float - 4byte (기본값 0.0)
double - 8byte(기본값 0.0)
논리형 : true, false
boolean b = true;
System.out.println("b의 값: " +b);
boolean b =1; // 오류
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean b = true;
System.out.println("b의 값 : " + b);
}
}

문자형 : ''안에 하나의 문자만 기술
char ch1 = 'A'; // "A"는 오류
System.out.println("ch = " + ch1); // A output
char ch2 = '\u0041' ; // UNICODE로 A 의미
System.out.println("ch = " + ch2); // A output
char ch3 = 65 + 1; // 66의 의미이지만 ch3은 문자이다
System.out.println("ch3 = " + ch3); // B가 출력
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
char ch='A';
System.out.println("ch = " + ch);
char ch2='\u0041';
System.out.println("ch2 = " + ch2);
char ch3=65+1;
System.out.println("ch2 = " + ch3);
}
}

정수형
byte b = 128; // byte 자료형은 1Byte이므로 2^8/2로 오류가 난다.
byte b = 127;
short s = 32767; // 2Byte이므로 가능
int n = 550; // 4Byte이므로 충분히 가능
System.out.println("b = " + b); // 결과 127
System.out.println("s = " + s); // 결과 32767
System.out.println("n = " + n); // 결과 550
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b = 127;
short s = 32767;
int n = 550;
System.out.println("b = " + b); //결과 127
System.out.println("s = " + s); //결과 32767
System.out.println("n = " + n); //결과 550
}
}

실수형
float f = 3.14f; // java에서 실수는 기본적으로 double형으로 인식하기 때문에
float 자료형을 사용한다는 것을 3.14f식으로 명시해야 한다.
OR
float f = (float)3.14; 식으로 명시적 형변화(casting)해주어야 한다.
double d = 3.14; // 이것으로 충분함
float f1, f2;
f1 = 3.14f;
f2 = 150; // 실수에 정수 대입이 가능. 실수에 정수를 대입하면 자동 150.0으로 실수화 됨
OR float = (float)150; // 같은 4Byte의 타입
System.out.println("f1 = " + f1); // 결과 3.14
System.out.println("f2 = " + f2); // 결과 150.0
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
float f1, f2;
f1 = 3.14f;
f2 = 150f;
System.out.println("f1 = " + f1); //결과 3.14
System.out.println("f2 = " + f2); //결과 150.0
}
}

●형변환●
캐스팅(형 변환)
double 8byte, int 4byte, char 2byte, long 8byte, float 4byte, short 2byte, boolean 1bit 자료형의 크기가 있는데
1) 프로모션(promotion)
- 큰 자료형에 작은 자료형을 대입하는 것(형변환이 자동으로 이루어짐)
double d = 100.5;
int n = 200;
d = n;
System.out.println("d = " + d); // 200.0
char c = 'A';
long l = 100;
l = c; // ASCII는 'A'라는 문자를 65라는 숫자로 인식!!!
System.out.println("l = " + l); // 65
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
double d = 100.5; //8byte
int n = 200; //4byte
d = n;
System.out.println("d = " + d); //결과 : 200.
}
}

package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c = 'A'; //2byte
long l = 100;//8byte
l = c;
System.out.println("l = " + l); //결과 65
}
}

2) 디모션(de(pro)motion)
- 작은 자료 형에 큰 자료 형을 대입하는 것으로 자동으로 이루어지지 않기 때문에 수동으로 형변환을 지정해주어야 함
char c = 'B'; // ASCII로 66
int n = c + 1; // ASCII로 67(문자로 'C')
c = n; // n은 정수(4B), c는 문자(2B)이므로 큰 수가 작은 수에 // 들어감=> 오류!!
c = (char)n; // OK
System.out.println("c = " + c);
float f = 5.5; // 오류!!! 그냥 소수(실수)을 넣으면 자바는 double 형으로 인식!!!
float f = (float)5.5 OR 5.5f;
double d = 5.5; // NO error!!!
int n = 0;
n = (int)f; // n = f;는 오류!!! int와 float는 같은 4B이지만 형이 다름!!
// 수행될 수도 있지만 오류가 뜰 수 있어서 형변환을 해준다.
System.out.println("n = " + n);
package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
char c = 'B'; // c: 2byte
int n = c + 1; //n : 4 byte è 프로모션 캐스팅
c = (char)n;
System.out.println("c = " + c);
}
}

package java02;
public class blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
float f = 5.5f;
int n = 0;
n = (int)f; // f : 4 byte, n : 4 byte
System.out.println("n = " + n);
}
}

'JAVA' 카테고리의 다른 글
| [JAVA]문제 풀이 1 (0) | 2022.07.20 |
|---|---|
| [JAVA]연산자 (0) | 2022.07.20 |
| [JAVA] 변수 타입 1 (0) | 2022.07.19 |
| [JAVA] 실습 07-19 (0) | 2022.07.18 |
| [Java] Java란? (0) | 2022.07.18 |
댓글