[Java]기본26~30강/활용 1~4강 까지의 내용 정리

default 메서드와 static 메서드부터 기본 API까지

인터페이스 구조

  • Java7 버전까진 인터페이스에 상수와 추상 메소드만 사용 가능
  • Java8 버전부터 default 메소드와 static 메소드를 사용할 수 있게 됨
  • default 메소드와 static 메소드 둘 다 접근제한자를 생략해도 되고, 이 때 public이 됨

default 메소드

  • 구현부(실행 블록)가 있는 메소드
  • 배경) 각 구현 클래스마다 동일한 기능을 하는 메소드가 필요하다면 인터페이스의
    추상메소드들을 모든 구현 클래스에 똑같이 구현해야 한다 → 코드의 중복 발생
  • 상속처럼 물려받게 만들어 코드의 중복 문제를 해결

인터페이스 static 메소드

  • 객체 생성 없이 직접 실행
  • 인터페이스는 객체 생성이 불가능하나 static 메소드는 인터페이스만으로 직접 메소드 호출이 가능

에러

프로그램 실행 중 어떤 원인에 의해 오작동을 하거나 비정상적으로 종료되는 경우

예외(exception)

특정 상황 발생 시 프로그램이 중단되는 현상으로, 프로그램 코드에 의해 해결할 수 있는 에러

컴파일 에러

오타, 문법, 자료형 체크 등에서 오류 발생 시 나타난다

런타임 에러

  • 프로그램 실행 중 발생하는 에러로, 잘못된 결과를 출력할 뿐 아니라 비정상적인 프로그램 종료가 발생
  • Error와 Exception 2가지가 존재
  • Error는 메모리 부족 및 스택 오버플로같이 복구할 수 없는 심각한 오류
  • Exception은 적절한 코드로 비정상적인 종료 방지 가능

예외 클래스

Object > Throwable > Error / Exception

Exception 클래스의 하위 클래스들

RuntimeException/ CloneNotSupportException/ InterruptedException/ NotSuchMethodException/ ClassNotFoundException/ IOException

자바는 모든 프로그램에서 반드시 예외 처리가 필요하나 RuntimeException은 예외 처리 생략 가능

try~catch문

try {
	예외 발생 가능성이 있는 코드
} catch(예외클래스 e) {
	예외클래스의 예외가 발생하는 경우 실행될 코드
} finally {
	예외 발생 여부와 상관없이 무조건 실행
}
  • 실행 코드가 한 줄이라도 중괄호를 생략 불가능
  • try문 안에서 예외가 발생하면 바로 catch 블럭으로 넘어가기 때문에 그 다음 코드들은 실행되지 않음

throws문

void 메소드명() throws 예외클래스명{

}

예외클래스에서 예외처리를 하지 않으면 에러가 발생한다

강제로 예외 발생시키기

throw new 예외클래스();
main 메소드에서 throws Exception을 하면 메소드를 호출하는 JVM에서 처리가 일어남

사용자 정의 예외 클래스

  • 예외 클래스를 상속받아 생성한다, 생성자를 통해 부모클래스의 생성자에게 매개변수를 전달해주기만 하면 됨
  • 보통 Exception 클래스를 상속받는 경우가 많다
class 클래스명 extends 예외클래스 {

}

이를 사용하려면 throw new 클래스명("예외메세지");

java.lang 패키지

import를 하지 않아도 사용가능한 패키지 ex. String, System, Object 클래스

Object 클래스

  • 필드는 존재하지 않고 메소드만 존재한다
  • 클래스명 뒤에 따로 상속을 지정해주지 않으면 Object 클래스를 상속받는 것과 같다

Object 클래스가 제공하는 메소드

메소드명설명
equals(Object obj)같은 객체인지 비교
hashCode()해시코드 리턴
toString()문자열 정보 리턴
clone()복제한 객체 리턴
finalize()객체 소멸 시 진행
getClass()클래스 정보 리턴

String

  • 기본 자료형으로 제공되지 않으며, 클래스를 정의해서 사용하여야 한다
  • 관련 메소드들이 필요하기 때문에 클래스의 형태로 제공된다
  • 메소드 사용 시 실제 변수에 들어있는 값은 변하지 않는다는 사실에 유의
    → 메소드의 리턴 값이 새로운 문자열로 리턴된다

String 클래스가 제공하는 주요 메소드

메소드명설명
equals(Object obj)같은 문자열인지 비교
indexOf(String str)문자열 내 매개변수의 위치 리턴
subString(int start[,int end])문자열 중 지정한 위치를 잘라내 리턴
trim()앞/뒤 공백 제거
length()문자열 길이 리턴
replace(String old,String new)문자열 중 old를 new로 치환
split(String s)문자열을 s로 구분해서 배열로 리턴

equals() 같은 메소드는 Object 클래스의 하위 클래스인 String 클래스가 메소드를 재정의한 것

equals()

사용 시 변수.equals(값)으로 사용하기 보다 값.equals(변수)의 형태로 사용한다.
왜냐하면 변수가 null일 수도 있기 때문에 Exception을 예방하기 위함이다

replace() 활용 예

문자열에서 공백 없애기
" asdfs daf ags".replace(" ","");

Wrapper 클래스

  • 기본 자료형을 객체화할 수 있는 클래스
  • 기본 자료형 → Wrapper 클래스 객체 : Autoboxing
  • Wrapper 클래스 객체 → 기본 자료형 : Unboxing

Wrapper 클래스를 사용하는 이유

  • 메소드 사용, 다형성 적용을 위해
  • 만약 메소드에 Object 타입의 매개변수를 사용한다면 Wrapper 클래스로 자동 형변환된다

Wrapper 클래스가 제공하는 주요 메소드

기본 자료형Wrapper 클래스
intInteger
longLong
floatFloat
doubleDouble
byteByte
charCharacter
shortShort
booleanBoolean

기본 자료형과 참조 자료형은 서로 대입할 수 없다

java.util 패키지

클래스명설명
Random랜덤수를 생성
Scanner문자 입력
Date날짜/시간 표현
Calendar날짜/시간 표현
Arrays배열 관련 처리

Date 클래스는 Calendar 클래스의 하위버전. 서로 형변환 가능하다

java.text 패키지

클래스명설명
DecimalFormat숫자 포맷 지정
SimpleDateFormat날짜/시간 포맷 지정

둘 다 숫자나 날짜 타입을 문자열 포맷으로 지정하여 출력

좋은 웹페이지 즐겨찾기