예제 5-35(2)
2013-01-14
|
by stvking
1690
class LimitedValue {
final static int UPPER_LIMIT = 100000;
int value;
void setValue (int value) {
if (value < UPPER_LIMIT)
this.value = value;
else
this.value = UPPER_LIMIT;
}
}
위의 클래스가 책에 적혀있는 클래스입니다.
하지만 메소드 setValue의 파라미터 int vaule를 int c로 바꿔보았습니다..
class LimitedValue {
final static int UPPER_LIMIT = 100000;
int value;
void setValue (int c) {
if (value < UPPER_LIMIT)
this.value = c;
else
this.value = UPPER_LIMIT;
}
}
컴파일했는데 error가 뜨지 않더군요.
그런다음 아래 클래스를 컴파일하여 실행하였습니다.
class StaticFieldExample2 {
public static void main(String args[]) {
LimitedValue v = new LimitedValue();
v.setValue(200000);
System.out.println("v.value = " + v.value);
System.out.println("상한값 = " + LimitedValue.UPPER_LIMIT);
}
}
v.value = 200000 // <- 이런결과가 나왔습니다.
상한값 = 100000
if절에서 참이란 판단이 나와서 그런 것 같은데, 어째서 참이라 판단된거죠?