본문 바로가기
백엔드/Java

[Java]#10 형변환, 스코프

by 쁘띠뀨띠 2023. 12. 16.

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