210516

3657 단어 errorerror

형변환을 사용하여 오류잡기 🤦‍♀️


byte a = 100;
int b = a;
byte c = b;
코드 넣어주세용
int b = a;
위 코드에서 a는 원래 byte형이다.
변수와 같은 데이터타입으로 변경하기 위해서 형변환을 해줘야 하는데, 
java에서는 이를 int로 자동형변환 시켜준다.
가능한 이유는 자동형변환의 원칙은 표현범위가 좁은 데이터 타입에서 
넓은 데이터 타입으로만 변화 가능하기 때문에
byte -> int로 자동 형변환 된 것이다.
byte c = b;
위 코드는 오류가 뜨는데, 현재 b는 int형의 
데이터타입을 가지고 있기 때문이다.
형변환을 이용하여 강제(명시적)형변환을 시켜주어야 한다.
byte c = (byte)b;
위와 같이 byte형으로 강제형변환을 시켜주면 에러가 잡힌다.
 byte a = 100;
 int b = a;
 byte c = (byte) b;

System.out.println(c);
위와 같이 하면 에러가 잡히고 100이 출력된다.

상수 또한 데이터타입을 가지고 있기 때문에
변수와 상수의 데이터타입을 일치시켜야 한다.
이 개념을 몰랐었고, 
* 표험범위가 좁은 데이터타입에서 넓은 데이터타입으로는 
  자동형변환이 된다는 것
* 반대 경우에는 강제형변환을 시켜줘야 한다는 것

  꼭 숙지!-!

byte a = 100;
int b = 2147483647;
byte c = (byte)b;

System.out.println(c);
위 코드는 -1이 출력되는데 왜 그 값이 나오는지.
이건 남자친구가 궁금하다고 했는데 나도 궁금해져서
이것도 여쭤봐야겠다..

좋은 웹페이지 즐겨찾기