특정 지역을 벗어나면 사용할 수 없는데 여기서 말하는 지역은 변수가 선언된 코드블록 { } 을 뜻함
변수의 접근 가능한 범위를 스코프 라고 한다.
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 생존 종료
}
자바는 기본적으로 같은 타입에 대입 가능
작은 범위에서 큰 범위로의 대입은 자바 언어에서 허용한다. 이를 자동 형변환이라고 한다.
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이 되는것은 아니다.