//프로모션과 캐스팅
public class Exam_01 {
public static void main(String[] ar) {
byte a = 0;
short b = 200;
//b=a; 한다면 Promotion
//a=b; 한다면 Casting => 당장에 10은 byte에 들어갈 수 있는 값이지만, 문법적으로 short가 byte에 넣을 수 없기 때문에 이클립스에서 오류가 남.
a=(byte)b; // short형 변수인 b를 byte로 바꿔주고자 할때 b 앞에 ()에 byte를 씀.
System.out.println(a);
//값이 200인 상태로 byte에 들어가면 들어갈 수 없는 값이기 때문에
//데이터손실이 발생되어 엉뚱한 값이 들어가게 됨.
}
}
//프로모션&캐스팅
public class Exam_02_0 {
public static void main(String[] ar) {
byte b = 10;
short s = 20;
char c = 'A';
int i;
float f;
long l = 100L;
/*
* 문제
* s = b;
* c = b;
* s = c;
* c = s;
* i = 100L;
* l = 500;
* f = l;
* f = 5.11;
*
*/
s = b; //Promotion
c = (char)b; //Casting 캐릭터에 음수를 대입할 수 없기 때문에
s = (short)c; //Casting 캐릭터가 Short형보다 너무 큰 숫자를 가질 수 있어서
c = (char)s; //Casting 위와 상동
i = (int)100L; //Casting 숫자에 L이 붙으면 long(8byte)이기 때문에 int형으로
l = 500; //Promotion
f = l; //Promotion 실수형은 정수형보다 크다
f = (float)5.11; // Casting 실수형에 대한 기본적인 평가가 Double이기 때문에 Casting을 하거나 숫자 뒤에 f를 써줘야함.
}
}
public class Exam_02_1 {
public static void main(String[] ar) {
byte b=10;
char ch='A';
int i=100;
long l = 1000L;
b= (byte)i;
ch=(char)b;
short s=(short)ch;
float f= l;
i=ch;
//실수형은 정수형보다 크기 때문에
//float형 변수 f에 long형 l의 값을 대입할때 Casting은 필요없다.
//int형은 4byte이고 char형은 2byte이기 때문에
//Promotion이 발생하여 Casting할 필요가 없다.
}
}
public class Exam_02_2 {
public static void main(String[] ar) {
int i1=10;
int i2=20;
float f1=3.14f;
char c1='A';
char c2='B';
System.out.println("결과 : " + i1 + i2);
System.out.println("결과 : " + (i1 + i2));
System.out.println("결과 : " + i1 + f1);
System.out.println("결과 : " + (i1 + f1));
System.out.println("결과 : " + f1 + c1);
System.out.println("결과 : " + (f1 + c1));
System.out.println("결과 : " + c1 + c2);
System.out.println("결과 : " + (c1+c2));
/*
* <내가 생각했던 결과값>
* 결과 : 1020
* 결과 : 30
* 결과 : 103.14
* 결과 : 13.14
* 결과 : 3.14A
* 결과 : 3.14A
* 결과 : AB
* 결과 : AB
*
* <실제결과>
* 결과 : 1020
* 결과 : 30
* 결과 : 103.14
* 결과 : 13.14
* 결과 : 3.14A
* 결과 : 68.14
* ==> float(4byte), char(2byte)로
* char형이 float으로 Promotion되어
* 3.14와 A의 아스키코드값이 덧셈연산됨
* 결과 : AB
* 결과 : 131
* ==> 연결되는건 String타입끼리임,
* char는 엄밀히 문자인척하는 숫자값이므로
* 아스키코드값끼리 덧셈연산을 하게 됨
*
*/
}
}
'자바 프로그래밍 > 코드' 카테고리의 다른 글
상수, Literal 상수 (0) | 2020.02.10 |
---|---|
실습문제 - 숫자를 저장하고 연산하고 출력하기, 문자 출력하기 (0) | 2020.02.10 |
자료형 (0) | 2020.02.10 |
System.out.Println 연습 (0) | 2020.02.10 |
main, convention, quotation(따옴표), 주석 (0) | 2020.02.10 |
Comment