728x90
반응형
int a = 1;
int b = 2;
int c = a++; // 후위형 사용 = 일단 c라는 값에 1을 넣어놓고 그 후에 a에다가 1을 더함
// 따라서 ++a는 3이되고 (1+1)+1 c는 아직도 1인거
System.out.println(++a); //값 1 증가
System.out.println(--b); // 현재 값 1 마이너스
System.out.println(c);
int i = 10;
i = -i; // -라는 부호는 현재 정수의 부호를 반대로 바꿈 = 산수와 동일
System.out.println("i:"+i);
double ii = 3.1111;
int iii=(int)ii;
System.out.println(ii);
System.out.println(iii);
int aa=65;
char bb = (char)aa;
System.out.println(bb); // 유니코드 문자표, A는 실은 65로 컴퓨터가 인식, 컴퓨터는 0 1 밖에 못읽어서 일단 정해진 숫자로 저장한 후 지정 문자열로 재출력
float f = 1234;
System.out.println(f); // int로 자동형변환 - 실은 (float)1234가 맞는 표현
// 다만 이렇게는 안됨 int i = 1234.1f = 값손실이 발생하기때문에 에러가남 = (int)1234.1f 은가능 = 1234
//값을 보존할 수 있는 큰 값의 타입으로 자동형변환 가능
//byte - short/char - int - long - float - double
int aaa = 12;
int bbb = 6;
short ccc=31777;
System.out.println(aaa/bbb);
System.out.println(aaa/(float)bbb); // int에서 float로 지정을 했기 떄문에 자동으로 큰 타입인 float로 자동변경
System.out.println(aaa+ccc); // short에서 자동으로 int로 변경
// 자동형변환은 작은 타입에서 큰 타입으로 자동으로 변경 = 손실값을 막기 위함
char s='2', ss='0';
System.out.println(s-ss); // 유니코드(50-48) = byte - byte지만 보다 큰 타입으로 미리 일치시켜서 overflow를 방지 = int로 자동 형변환
byte B = 10, BB=20;
byte BBB = (byte)(B+BB); //작은 byte타입에 계산값 30 int의 값을 넣을려고 하니 오류, 따라서 (byte)로 미리 형변환을 시키고 값을 배정해야 컴파일 오류가 나지않음
System.out.println(BBB);
byte BBBB=(byte)(B*BB-72);
System.out.println(BBBB); //-128~127의 범위에서 초과되는 개념이여서 -128로 출력됨 = 원래값은 128 ,overflow 개념
int L=1_000_000 , LL=2_000_000; // 1,000,000, 2,000,000과 동일
long LLL=L*LL;
System.out.println(LLL); //long을 선언함에도 불구하고 -1454759936 = 이미 출력값이 정해진 값이여서 long에 그냥 자동형변환되어 그대로 출력
System.out.println(L*(long)LL); // 값 계산전에 하나의 값만 long으로 선언해주면 알아서 long으로 자동형번환 해줌
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바 학습 & 복습 6일차 - array 배열 (0) | 2022.01.14 |
---|---|
자바 학습 & 복습 5일차 (0) | 2022.01.13 |
자바 학습 & 복습 4일차 (0) | 2022.01.12 |
자바 학습 & 복습 3일차 (0) | 2022.01.11 |
Java 학습 & 복습 1일차 (0) | 2022.01.10 |