아래의 연산코드중에서 잘못된 부분을 고치려면
public class Main {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = a + b;
char ch = 'A';
ch = ch + 2;
float f = 3 / 2;
long l = 3000 * 3000 * 3000;
float f2 = 0.1f;
double d = 0.1;
boolean result = d == f2;
System.out.println("c=" + c);
System.out.println("ch=" + ch);
System.out.println("f="+f);
System.out.println("l=" + l);
System.out.println("result=" + result);
}
}
1. byte c = a + b를 연산하면 a+b가 int타입으로 변환되기때문에 byte타입인 c에 저장할 수 없다.
그래서 (a+b)의 연산을 (byte)로 형변환 해주어야 한다.
2.비슷한 이유로 ch = ch + 2도 ch+2는 int타입의 정수값의 결과를 갖기때문에 char타입인 ch에는 저장할 수 없다.
그러므로 (ch+2)의 결과를 (char)로 형변환 해주어야한다.
3.float 3/2는 int타입과 int타입의 연산이므로 소수점자리는 버려지기때문에 정확한 값을 얻기 위해서는 피연산자에 f를 추가해주어야한다.
4.long l = 3000 * 3000 * 3000의 경우 피연산자들이 모두 int타입이므로 long l에 저장되기전에 이미 값이 손실된채로 변수l에 저장되기때문에 정확한값을 얻기위해서는 피연산자에 접미사L을 붙여주어야한다.
5.boolean result = d == f2는 false가 반환되는데 연산 시에 float를 double로 형변환할때 오차가 발생할 수 있다.
그래서 float값을 double로 형변환하기 보다는 float로 형변환해서 비교하는 것이 true의 결과를 얻을 수 있다.
public class Main {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
char ch = 'A';
ch = (char)(ch + 2);
float f = 3f / 2;
long l = 3000L * 3000 * 3000;
float f2 = 0.1f;
double d = 0.1;
boolean result = (float)d == f2;
System.out.println("c=" + c);
System.out.println("ch=" + ch);
System.out.println("f="+f);
System.out.println("l=" + l);
System.out.println("result=" + result);
}
}
실행결과:
c=30
ch=C
f=1.5
l=27000000000
result=true
'Language > Java' 카테고리의 다른 글
| [JAVA] 다형성 (0) | 2024.06.02 | 
|---|---|
| [Java] - 배열(Array) (0) | 2023.10.23 | 
| [Java] - BufferedWriter (0) | 2023.10.18 | 
| [Java] - BufferedReader (0) | 2023.10.18 | 
| [Java] Scanner (0) | 2023.10.18 | 
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!
![[Java] - 배열(Array)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbbV6Th%2FbtsyVY9woBv%2FAAAAAAAAAAAAAAAAAAAAABCb7cIr-Dhv7ZznetyD-kZLGgxJz-7D13KpUV6omnOl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DUTF7t68UC%252FRCqylgQ8QEqlAK9e0%253D) 
                  ![[Java] - BufferedReader](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlnHyG%2FbtsyEwla2I1%2FAAAAAAAAAAAAAAAAAAAAAHRVRNtHexLRDamzjzEVtd8VDVucWvQMffbMZjBOsBbn%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DeMG%252BEZ1QLzCmUnCpuA81YA3xHVI%253D) 
                  ![[Java] Scanner](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbv8oTL%2FbtsyIJQ03B5%2FAAAAAAAAAAAAAAAAAAAAAFdLxdtjbSlkuYd2XZRzwwwWHNgdWVaK-PJgnPP6L8f6%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DAj1siy4Ny7mq3%252BGV3aR86Dyn5Os%253D)