null 값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생한다. 객체가 없는 상태에서 객체를 사용해서 예외가 발생함
ArrayIndexOutOfBoundsException
배열에서인덱스 범위를 초과할 경우 발생
NumberFormatException
숫자로 변환될 수 없는 문자가 포함되면 발생된다.
public class Test{
String data1 ="100";
String data2 ="a100";
int a = Integer.parseInt(data1);
int b = Integer.parseInt(data2); //NumberFormatException 발생, "a100"을 정수형태로 변환X
System.out.println(data1);
System.out.println(data2);
}
ClassCastException
대입된 객체가 아닌 다른 클래스 타입으로 타입 변환될 시 발생하는 예외 이를 발생시키지 않으려면 타입 변환 전에instanceof 연산자로 확인하기!
예외 처리 코드
try-catch-finally 블록
try{
예외 발생 가능 코드
}
catch(예외클래스 e){
예외 처리
}
finally{
항상 실행;
}
정상 실행되었을 경우 catch 블록 코드는 실행되지 않고 finally 블록의 코드를 실행한다. try에서 예외 발생시즉시 실행을 멈추고 catch로 이동해 예외 처리 코드를 실행한다. 그리고 fianlly를 실행한다. (finally 생략 가능
다중 catch
- catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행된다. - 하나의 예외가 발생하면 즉시 실행을 멈추고 해당 catch 블록으로 이동하기 때문이다. - 상위 예외 클래스가 하위 예외 클래스보다 아래 있어야 한다. (순서)
chap 11-1 java.lang 패키지
466p 이미지 첨부
Object 클래스
Object는 자바의 최상위 부모 클래스에 해당된다. - 모든 클래스에서 Object 메소드를 사용할 수 있다. - 생성자와 메소드로 구성됨
toString()
toString() 메소드는 객체의 문자 정보를 리턴한다. 기본적으로 '클래스이름@16진수해시코드'로 구성된 문자 정보를 리턴한다.
⬇️ toString() 메소드를 오버라이딩해서 제작회사와 운영체제를 리턴하기
package sec11exam;
public class SmartPhone {
String company;
String os;
public SmartPhone(String company, String os) {
this.company=company;
this.os = os;
}
@Override
public String toString() {
return company+ ",, " + os;
}
}
package sec11exam;
public class SmartPhoneExam {
public static void main(String[] args) {
SmartPhone myPhone = new SmartPhone("구글","안드로이드");
String strObj = myPhone.toString();//재정의된 toString() 호출
System.out.println(strObj);
//재정의된 toString() 호출하고 리턴값을 받아 출력
System.out.println(myPhone);
}
}
exit()
exit()메소드는 실행 프로세스를 강제 종료시키는 역할을 한다. 일반적으로 정상 종료일 경우 0값을 준다.
package sec11exam;
public class exit {
public static void main(String[] args) {
for(int i=0; i<10; i++) {
if(i == 5) {
System.exit(0);
//break;
}
}
System.out.println("마무리 코드");
}
}
break와 exit()의 차이점! break를 사용할 시에는 for문을 빠져나온 후 "마무리 코드"를 출력하지만 exit()를 사용하면 프로그램을 강제 종료하므로 "마무리 코드"를 출력하지 않는다!
매개값으로 주어진 문자열이 시작되는 인덱스를 리턴한다. 만약 주어진 문자열이 포함되어 있지 않으면 -1을 리턴한다.
package sec11exam;
public class indexOf {
public static void main(String[] args) {
String sjt ="자바 프로그래밍";
int index = sjt.indexOf("프로그래밍");
System.out.println(index);
if(sjt.indexOf("자바") != -1) {//포함된 경우
System.out.println("자바와 관련된 책이군요");
}
else {
System.out.println("자바와 관련이 없는 책이군요");
}
}
}
substring()
주어진 인덱스에서 문자열을 추출한다.
public class substring {
public static void main(String[] args) {
String ssn = "12345-6789";
String change = ssn.substring(0); //0번지부터 끝 인덱스 사이의 문자열 추출
String change2 = ssn.substring(3,9); //3번지 부터 9번지까지 문자열 추출
System.out.println(change); //12345-6789
System.out.println(change2); //45-678
}
}