[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 클래스 |
---|---|
int | Integer |
long | Long |
float | Float |
double | Double |
byte | Byte |
char | Character |
short | Short |
boolean | Boolean |
기본 자료형과 참조 자료형은 서로 대입할 수 없다
java.util 패키지
클래스명 | 설명 |
---|---|
Random | 랜덤수를 생성 |
Scanner | 문자 입력 |
Date | 날짜/시간 표현 |
Calendar | 날짜/시간 표현 |
Arrays | 배열 관련 처리 |
Date 클래스는 Calendar 클래스의 하위버전. 서로 형변환 가능하다
java.text 패키지
클래스명 | 설명 |
---|---|
DecimalFormat | 숫자 포맷 지정 |
SimpleDateFormat | 날짜/시간 포맷 지정 |
둘 다 숫자나 날짜 타입을 문자열 포맷으로 지정하여 출력
Author And Source
이 문제에 관하여([Java]기본26~30강/활용 1~4강 까지의 내용 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bacccine/Java기본2630강활용-14강-까지의-내용-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)