지역변수

특정 지역을 벗어나면 사용할 수 없는데 여기서 말하는 지역은 변수가 선언된 코드블록 { } 을 뜻함

변수의 접근 가능한 범위를 스코프 라고 한다.

    public static void main(String[] args) {
        int m = 10;    // m 생존 시작
        if (true) {
            int x = 20;    // x 생존 시작
            System.out.println("if m = " + m);
           System.out.println("if x = " + x);
        }
        System.out.println(x);    // x는 위 코드블록 안 까지만이라서 생존 종료
        System.out.println(m);    // m의 생존범위는 더 넓음
    }    // m 생존 종료
}

형변환(Casting)

자바는 기본적으로 같은 타입에 대입 가능

작은 범위에서 큰 범위로의 대입은 자바 언어에서 허용한다. 이를 자동 형변환이라고 한다.

int < long < double

    public static void main(String[] args) {
        int intValue = 10;
        long longValue;
        double doubleValue;

        longValue = intValue;
        System.out.println("longValue = " + longValue);

        doubleValue = intValue;
        System.out.println("doubleValue = " + doubleValue);

        doubleValue = 20L;
        System.out.println("doubleValue2 = " + doubleValue);

    }
}
longValue = 10
doubleValue = 10.0
doubleValue2 = 20.0

반대로 큰 범위에서 작은범위로 대입하는 경우에는 명시적 형변환이 필요

    public static void main(String[] args) {
        double doubleValue = 1.5;
        int intValue = 0;

        //intValue = doubleValue; //컴파일 오류 발생
        intValue = (int)doubleValue; // 명시적 형변환
        System.out.println("intValue = " + intValue); //.5가 사라져서 1이 남음
    }
}
intValue = 1

변경하고 싶은 데이터 타입을 (int)처럼 괄호를 사용해서 명시적으로 입력하면 된다.

형 변환을 한다고 해서 doubleValue의 1.5 자체가 1이 되는것은 아니다.