파이썬과는 달리 JAVA는 바로 치환이 안 됨. 따라서 변수문자열 tmp를 하나 만들어서 하나의 값을 일시적으로 tmp에 담은 상태에서 바꾸기를 진행해야함.
더 작은 자료형 -> 더 큰 자료형은 문제가 없지만,
더 큰 자료형 -> 더 작은 자료형은 문제가 있다. 값이 흘러넘쳐 잘려버리기 때문이다. 하지만 우리 개발자들은 이것을 유용하게 이용할 수 있다.
문자열+정수+정수 = 문자열
정수+문자열+정수 = 문자열
우선 2항연산자인 덧셈부터 시작 그런데 제일 앞에서 부터 시작됨.
우선 포멧팅은 먼저 사용해보자.
int num1 = 7;
int num2 = 3;
System.out.printf("%.2f",num*1.0/num2);
#2.33
이처럼 한 줄로 처리가 가능하다. 하지만 포멧팅을 사용하지 않는 방법도 있다.
double result1 = (num1/(double)num2);
int result2 = (int)(result1*100);
System.out.println(result2*0.01);
double 타입으로 소수점을 살린뒤 백의 자리로 만들고 int타입으로 233로 만든다 다음 출력문에서 0.01을 곱하여 2.33값으로 만들어주면 된다.
char i = '2';
char j = '0';
System.out.println(i-j);
#2 (int타입)
왜 이렇게 나오는 것인가?
우선 char타입 2는 유니코드로 50으로 변환이 된다.
char타입 0은 유니코드로 48으로 변환이 된다.
따라서 50-48이기 때문에 결과값은 문자열-문자열을 했음에도 불구하고 int형 값이 나온다. 쉽게 이해하기위해선 그냥 문자열 '0'으로 문자열을 벗긴다고 생각하면 쉽다.
공부중 타입을 찍어보는기 계속하여 신텍스에러가 발생하였다.
파이썬은 그냥 type()을 찍어보면 되지만 자바를 그렇지 않았다.
실제로 코드 작성중 type을 찍어보는 일이 많았기에 자세히 알아보았다.
우선 자바는 primative type 과 reperence type이 있다. 말 그대로 원시적이거나 참조할 수 있는 타입이 있다.
이때 래퍼런스 타입은
변수.getClass().getName();
으로 알 수 있지만 8개의 바꿀수 없는 타입을 지닌 primative 타입은 반드시 option 을 캐스팅해야한다.
((option)변수).getClass().getName();
반드시 알아두자.