프로그램 실행 -- 예외 발생!!
이를 방지하기 위하여,
소스 --컴파일--> 프로그램 실행
이라는 일련의 과정이 진행되는 동안...
컴파일 과정에서 미리 예외 처리 코드를 검사.
1. NullPointerException
java.lang.NullPointerException
확인
public class NullPointerExceptionExample {
public static void main(String[] args) {
String data = null;
System.out.println(data.toString());
}
}
결과
2. ArrayIndexOutOfBoundsException
예시
public class ArrayIndexOutOfBoundsExceptionExample {
public static void main(String[] args) {
String data1 = args[0];
String data2 = args[1];
System.out.println("args[0]: " + data1);
System.out.println("args[1]: " + data2);
}
}
결과
3. NumberFormatException
예시
public class NumberFormatExceptionExample {
public static void main(String[] args) {
String data1 = "100";
String data2 = "a100";
int value1 = Integer.parseInt(data1);
int value2 = Integer.parseInt(data2);
int result = value1 + value2;
System.out.println(data1 + " + " + data2 + " = " + result);
}
}
결과
4. ClassCastException
예시
public class ClassCastExceptionExample {
public static void main(String[] args) {
Dog dog = new Dog();
changeDog(dog);
Cat cat = new Cat();
changeDog(cat);
}
public static void changeDog(Animal animal) {
// if(animal instanceof Dog) {
Dog dog = (Dog) animal;
// }
}
}
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
결과
changeDog(cat)
부분에서 매개변수를 cat으로 받는 changeDog 함수가 실행.Dog dog = (Dog) cat;
이 된다.java.lang.RuntimeException
의 하위 클래스 Xjava.lang.RuntimeException
의 하위 클래스RuntimeException
존재try - catch 구문
public class IntegerCompareExample {
public static void main(String[] args) {
Integer obj1 = 100;
Integer obj2 = 100;
Integer obj3 = 300;
Integer obj4 = 300;
System.out.println(obj1 == obj2); // true
System.out.println(obj3 == obj4); // false
}
}
이는 Integer, int의 속성...? 때문인데..
-128 ~ 127까지의 값
은 ==연산자를 사용할 경우 값 자체로 비교를 하게 된다.예시
public class IntegerCompareExample01 {
public static void main(String[] args) {
Integer obj1 = 100;
Integer obj2 = 100;
Integer obj3 = 127;
Integer obj4 = 127;
Integer obj5 = 128;
Integer obj6 = 128;
System.out.println(obj1 == obj2);
System.out.println(obj3 == obj4);
System.out.println(obj5 == obj6);
}
}
위의 예시에 대한 결과
obj1, obj2, obj3, obj4는 127이하의 값이기 때문에 ==연산자로 비교 시 true가
obj5, obj6은 128 이상의 값이기 때문에 ==연산자로 비교 시 false가 나온다.
Wrapper Class