자바에서 모든 실수의 기본형은 double
public class VariableEx01 {
public static void main(String[] args) {
//int i =2.5; --> 에러
//System.out.println(i);
//float f = 2.5; -->에러 : 2.5f라고 f를 명시해줘야 한다.
double d = 2.5;
System.out.println(d);
//지수
double d1 = 1.0e3; --> 1000.0
System.out.println(d1);
}
}
기본형 자료의 형변환 에러
작은 -> 큰 자료형 --> 자동으로 형변환
(char -> int 형변환 가능)
반대 --> 강제 형변환 해줘야 함
####묵시적 형변환(자동 형변환)
public class TypeCastingEx01 {
public static void main(String[] args) {
short s1 = 10;
//묵시적 형변환(자동 형번환)
int i1 = s1;
System.out.println(i1);
float f1 = 10.0f;
double d1 = f1;
System.out.println(d1);
char c1 ='A';
int i2 = c1;
System.out.println(i2); //아스키 코드 값 출력
}
}
####명시적 형변환(강제 형변환)
public class TypeCastingEx02 {
public static void main(String[] args) {
//명시적 형변환(강제 형변환)
//() --> 캐스팅 하기 위함
int i1 = 20;
short s1 = (short)i1;
System.out.println(s1);
//char int 사이 형변환은 가능하다.
char c1 = 'A';
int i2 = c1 + 3;
c1 = (char)i2;
System.out.println(i2);
System.out.println((char)i2);
System.out.println(c1);
}
}
public class TypeCastingEx02 {
public static void main(String[] args) {
int i1 = 10;
int i2 = 20;
int sum1 = i1 + i2;
System.our.println(sum1);
short s1 = 10;
short s2 = 20;
short sum2 = (short)(s1+s2)
// int sum2 = s1 + s2; --> int 보다 작은 타입들은 자동으로 변환되어 연산 수행하기 떄문에 short로 연산하지 못함(하려면 캐스팅)
}
}
참고로 long으로 연산하게 되면 모두 long으로 처리된다.
자신의 범위를 벗어날 때 나타나는 현상
public class TypeCastingEx02 {
public static void main(String[] args) {
int i1 = 1000000;
int i2 = 1000000;
//int product1 = i1 * i2;
// System.out.println(product1); -727379968 --> 이상한 값 출력
long product1 = (long)i1 * i2; --> long으로 변환해서 타입을 맞춰주기
}
}
public class OperatorEx01 {
public static void main(String[] args) {
int a = 7;
int b = 2;
boolean result;
//&&연산자는 a b 전부 참이어야 참, 따라서 a가 거짓이면 b도 자동 거짓이므로 연산을 하지 않고 바로 거짓으로 출력함
result = (a -= 3) > 7 && (b += 1) <7;
System.out.println(result);
System.out.println(a + " / " + b);
}
}
따라서 b는 연산을 하지 않고 그대로 2가 나온다. (or 연산자도 똑같이 전자가 참이면 후자도 참이기 때문에 계산 할 필요가 없어 하지 않음)
public class OperatorEx01 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println((a += 10) > 15 | (b -= 10) > 15);
System.out.println(a + " / " + b);
a= 10;
b= 20;
System.out.println((a += 10) > 15 || (b -= 10) > 15);
System.out.println(a + " / " + b);
}
}
조건 - 비교연산자와 논리연산자의 결과(true/false)
조건의 의한 분기 (if / switch)
조건의 의한 반복 (for / while / do~ while)
public class ConditionEx01 {
public static void main(String[] args) {
//학점
int score = 51;
switch(score/10) { --> 10으로 나눠서 하기
case 9: System.out.println(score + "는 S등급입니다.");
break;
case 8: System.out.println(score + "는 A등급입니다.");
break;
case 7: System.out.println(score + "는 B등급입니다.");
break;
case 6: System.out.println(score + "는 C등급입니다.");
break;
case 5: System.out.println(score + "는 D등급입니다.");
break;
case 4: System.out.println(score + "는 E등급입니다.");
break;
default : System.out.println(score + "는 F등급입니다.");
break;
}
}
}