1_형변환
package casting;
public class Casting1 {
public static void main(String[] args) {
int intValue = 10;
long longValue;
double doubleValue;
longValue = intValue; // int -> long
System.out.println("longValue = " + longValue);
// longValue = 10
doubleValue = intValue; // int -> double
System.out.println("doubleValue = " + doubleValue);
// doubleValue = 10.0
doubleValue = 20L; // long -> double
System.out.println("doubleValue2 = " + doubleValue);
// doubleValue2 = 20.0
}
}
package casting;
public class Casting2 {
public static void main(String[] args) {
double doubleValue = 1.5;
int intValue = 0;
// intValue = doubleValue; 컴파일 오류
intValue = (int)doubleValue;
System.out.println("intValue = " + intValue);
// intValue = 1
System.out.println("doubleValue = " + doubleValue);
// doubleValue = 1.5
int z = (int)1.5;
System.out.println(z);
// 1
}
}
- 묵시적 형변환 : 작은 범위에서 큰 범위로 대입할 수 있다. int → long → double
- 명시적 형변환 : 큰 범위에서 작은 범위의 대입은 소수점 버림, 오버플로우의 문제가 발생한다.
package casting;
public class Casting4 {
public static void main(String[] args) {
int div1 = 3/2; // 1.5
System.out.println("div1 = " + div1);
// div1 = 1
double div2 = 3/2; // 1.5
System.out.println("div2 = " + div2);
// div2 = 1.0
double div3 = 3.0/2; //1.5
System.out.println("div3 = " + div3);
// div3 = 1.5
double div4 = (double) 3/2; //1.5
System.out.println("div4 = " + div4);
// div4 = 1.5
int a = 3;
int b = 2;
double result = (double) a/b;
System.out.println("result = " + result);
// result = 1.5
}
}
- 연산과 형변환 : 같은 타입은 같은 결과를 낸다, 다른 타입은 큰 범위로 자동 형변환이 일어난다.
2_스코프
package scope;
public class Scope1 {
public static void main(String[] args) {
int m = 10; // 생존 시작
if (true) {
int x = 20; // 20 생존 시작
System.out.println("if m = " + m);
System.out.println("if x = " + x);
// if m = 10
// if x = 20
} // x 생존 종료
System.out.println("main m = " + m);
// main m = 10
// System.out.println("main x = " + x); 오류, symbol: variable x
}
}
package scope;
public class Scope2 {
public static void main(String[] args) {
int m = 10;
for (int i = 0; i < 2; i++) { //블록 내부, for문 내
System.out.println("for m = " + m); // 블록 내부에서 외부는 접근 가능
System.out.println("for i = " + i);
// for m = 10
// for i = 0
// for m = 10
// for i = 1
} // i 생존 종료
System.out.println("main m = " + m);
// main m = 10
// System.out.println("main i = " + i); 오류, symbol: variable i
}
}
- 지역 변수 : 특정 지역에서만 사용할 수 있다. 여기서 말하는 지역은 변수가 선언된 코드 블록{}이다.
'백엔드 > Java' 카테고리의 다른 글
[Java]#12 배열(1차원) (1) | 2023.12.18 |
---|---|
[Java]#11 Scanner (0) | 2023.12.16 |
[Java]#9 반복문 For (0) | 2023.12.14 |
[Java]#8 break, continue (0) | 2023.12.14 |
[Java]#7 반복문 While, do While (0) | 2023.12.14 |