studyplan
자바의 데이터 타입과 캐스팅 ,묵시적 형변환/ java data type , casting/ 명시적 형변환 본문
자바의 데이터형태엔 2 가지 모습이 있다
기본형과 참조형이있는데
오늘은 2 가지중에 기본형을 알아볼 생각이다.
정수 엔 byte , short ,int ,long 이 있고
이 타입엔 각각 들어갈수있는 용량이 정해져 있는데
byte는 1 , short 2 ,int 4 ,long 8 만큼 들어간다
byte는 128 , short 32000 ,int 20억 ,long 900경 이라는 숫자를 담을수 있다
요즘엔 하드웨어가 발전해서 보통 byte나 short는 잘 쓰지 않으므로
기억만 해두자
소수를 포함한 실수형도 있는데
float가 4 double 8 의 용량을 차지한다
왠만하면 double 을 쓰자
문자형에는
char 의 용량은 2 /String 은 가변적으로 변한다
이렇게 자바에는 많은 데이터 타입이 있는데
연산 계산을 할때 는 무조건 같은 타입이어야만 서로 연산이 가능하다
int a = 1;
double b = 1.0;
char c = '0';
String d = "0";
int a = 1; // 크기 4
double b = 1.0; // 크기 8
char c = '1'; // 크기 2
String d = "1"; // 크기 //무제한
// int 에 서로 다른 문자를 더할때
System.out.println(a + (int) b); //2
// 단순히 char 에 int를 씌워서 계산하면
// char 안에 숫자는 아스키코드로 변환되어서 '1' 은 49라는 숫자가 된다
System.out.println(a + (int) c); // 1+49 //50
// char 를 아스키코드로 변환을 막아주고 단순히 숫자로 변환시키려면
// char(숫자)에 -'0' 을 하면 '1'이 숫자 1 로 바뀐다
System.out.println(a + (c - '0')); // 2
//System.out.println(a+(int)d); 불가
System.out.println("======================================");
System.out.println(b + (double) a); // 2.0
// char 1 은 double로 바꿔도 49.0으로 바뀐다
System.out.println(b + (double) c); // 1.0 +49.0 == 50.0
// 이 계산에서 알아볼것은
// casting이라는 개념인데
// double 이 8로 int보다 공간이 큰데
// char 인 c를 double 로 형변환을 하고
// double을 int 로 바꿔서
// double + int 였는데
//
// double + double로 계산이 되어벼렸다
//
// 이를 우리는 암묵적 형 변환이라고 한다
// 그중에 작은것이 큰것으로 바뀌는걸 "묵시적 형 변환" 이라고 한다
//
System.out.println(b + (int) (double) c); // 50.0
// System.out.println(b+(double)d); 스트링은 아무리 계산해도 안됨
System.out.println("======================================");
// char 에 더해보자
System.out.println(c+a); // char + int ? int 50
System.out.println((c+a)*2); // (char + int) * (int) 2 = int 100 ?
// 결론 : char크기 2 , int크기 4 이고
// char+int 는 int로 계산이 된다
System.out.println(c+b); // char + double = double //
// 데이터 값이 작은 char 이 int 가 됐다가 double 로 한번더 바뀌어서
// char + double 값은 double로 됐다 그래서 50.0
//
System.out.println(c+d); //char + String 은 ?
// 문자 + 문자 = 1+1은 11 로 옆에 붙어버린다
System.out.println(c+d+c);
// 문자 + 문자 + 문자 == 1+1+1
// 111 로 나온다
System.out.println(c+d+a);
// 문자 + 문자 + 숫자 = 1 + 1 + 1
// 숫자가 문자로 바뀐다
// 여기서 정리 :
// 크기가 작은 것은 무조건 큰것으로 치환이 된다는점이다
'자바정리' 카테고리의 다른 글
Comments