본문 바로가기
혼공단/혼공자

혼공자 - 6주차

by 珠延 2024. 2. 13.

Chap 10 -1 예외 클래스

예외(expection)

  1. 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
  2. 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.
  3. 자바에서는 예외를 클래스로 관리한다
  4. 예외 발생시 JVM이 해당 예외 클래스로 객체를 생성한다.
  5. 모든 예외 클래스는 java.lang.Exception 클래스를 상속받음

일반 예외 (컴파일러 체크 예외)

  • 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사한다.
  • 예외 처리 코드가 없다면 컴파일 오류 발생

실행 예외 (컴파일러 넌 체크 예외)

  • 실행 시 예측할 수 없이 갑자기 발생하기에
  • 컴파일 과정에서 예외 처리 코드를 검사하지 않는다.

일반 예외와 실행 예외 클래스의 기준

이 두 클래스는 RuntimeExption 클래스를 기준으로 구별한다.
만약 RuntimeExption의 하위 클래스가 아니면 일반 예외 클래스이고
RuntimeExption 하위 클래스이면 실행 예외 클래스이다 
(↑ 부모에 RuntimeExption이 있어야 된다.)

 


실행 예외의 종류

다음은 실행 예외에는 어떤 것들이 있는지 알아 보도록 하겠다.

더보기

NullPointerException

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()를 사용하면 프로그램을 강제 종료하므로 "마무리 코드"를 출력하지 않는다!

 

 

String 메소드

더보기

charAt()

매개값으로 주어진 인덱스의 문자를 리턴한다. (0부터 문자열길이-1까지)
String subject = "JAVA";
char ch = subject.charAt(3);
System.out.println(ch);
//subject의 3번째 인덱스를 반환 : A​

 

indexOf()

매개값으로 주어진 문자열이 시작되는 인덱스를 리턴한다.
만약 주어진 문자열이 포함되어 있지 않으면 -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

	}

}​

 

trim()

앞뒤 공백을 제거한 새로운 문자열을 생성하고 리턴한다.
- 중간의 공백은 제거하지 않는다!
String tel1 =" 02";
String tel2 =" 022 ";
String tel3 =" 자바 프로그래밍 ";

System.out.println(tel1); //02
System.out.println(tel2); //022
System.out.println(tel3); //자바 프로그래밍​

 

 

Math 클래스

메소드 설명 예제 코드 리턴값
int abs(int a)
double abs(double a)
절대값 int v1 = Math.abs(-5);
double a = Math.abs(-5.2);
v1 = 5
v2 = 5.2
double ceil(double a) 올림값 double a = Math.ceil(5.4); a = 6.0
double floor(double a) 버림값 double a = Math.floor(5.2); a = 5.0
int max(int a, int b);
double max (int a, int b);
최대값 int a = Math.max(5,9) a=9
int min(int a, int b);
double min (int a, int b);
최소값 int a = Math,min(4.2); a = 2
double random() 랜덤값 double a = Math,random()  
double rint(double a) 가까운 정수의 실수 값 double a = Math.rint(2.3) a = 2.0
long round(double a) 반올림값 long a = Math.roung(5.3);
long b = Math.round(6.7);
a = 5
b = 7

 


 

Chap 11-2 java.util 패키지

 

자바 표준 API

클래스 용도
Date 날짜와 시간 정보를 저장하는 클래스
calendar 운영체제의 날짜와 시간을 얻을 때 사용
import java.util.*;
import java.text.*;
public class substring {

	public static void main(String[] args) {
 
		
		 Date now = new Date();
		 String str1 = now.toString();
		 System.out.println(str1);
		 
		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 ww월 dd일 hh시 mm분 ss초");
		 String strNow2 = sdf.format(now);System.out.println(strNow2);
	}

}

'혼공단 > 혼공자' 카테고리의 다른 글

[ 혼공단 11기 회고록 ]  (0) 2024.02.18
혼공자 - 5주차  (0) 2024.02.05
혼공자 - 4주차  (1) 2024.01.29
혼공자 - 3주차  (1) 2024.01.21
혼공자 - 2주차  (0) 2024.01.13