에러 - 컴퓨터 하드웨어의 고장으로 인해 응용 프로그램 실행 오류가 발생
예외 - 사용 개발자의 잘못된 코딩으로 인해 오류가 발생
일반예외 : 컴파일러가 예외처리 코드 여부를 검사
ClassNotFoundException
InterruptedException
실행예외 : 컴파일러가 예외처리 코드 여부를 검사하지 않음
NullPointerException
ArrayIndexOutOfBoundsException
NumberFormatException
예외 처리 코드
try { 예외발생커드 }
catch(예외클래스 e) { 예외처리 }
finally {}
예외 발생시키기
public method() throws Exception { 예외 발생 }
throw new 예외 생성
리소스 자동 닫기
리소스 - 데이터를 제공하는 객체
ex> 파일
안전하게 파일 닫기
try {
파일 열기
1. 파일 닫기 }
catch(e) {}
finally {
2. 파일 닫기 }
1번 : 트라이문에 오류가 있을 시 파일 닫기 명령어가 실행되지 않음
2번 : 무조건 파일 닫기 실행으로 안전하게 파일 닫을 수 있음
안전하게 파일 닫기
try-with-resources 블록
조건 : 자동닫기를 하려면 리소스 클래스에서 AutoCloseable() 인터페이스를 구현해야함
try(파일열기) {}
catch(e) {}
라이브러리 : 만들어둔 클래스와 인터페이스(바이트코드파일, ~.class)를 모아둔 것
- JAR 압축파일 형태로 존재
프로그램 개발 시 라이브러리 이용
- 프로젝트의 Build Path에 추가
모듈 (java9부터 지원) : 패키지 관리 기능이 추가된 라이브러리
- 모듈 기술자 module_info.java
프로그램 개발 시 모듈 이용
- JAR파일 다운로드해서 이용
객체 동등 비교
자바는 두 객체가 동등한지 비교할 때
hashCode()와 equals()메소드를 사용
hashCode() 리턴값 같음 -> equals() 리턴값 같음 -> 동등 객체로 인식
레코드 선언 (java14에 도입)
DTO(Data Transfer Object) : 데이터를 전달하는 객체
변수의 타입과 이름을 이용해서 private final 필드 자동생성
생성자 Getter메소드 자동추가
equals(), hashCode(), toString() 메소드 재정의한 코드 자동추가
ex>
public class Person {
private final String name;
private final int age;
생성자
getter메소드
객체동등비교
equals()
hashCode()
toString()
}
------------------------------------
public record Member(String id, String name, int age) { }
(이렇게 간단하게 코드 작성해주면 자동으로 기능 적용)
projectlombok.org/download
cmd명령창에서 설치(관리자모드실행)
자바프로젝트에 lib폴더 생성 jar파일 붙여넣기
build path
requires lombok
String 클래스 : 문자열을 저장하고 조작할 때 사용
StringBuilder클래스
(잦은 클래스 변경 시에 사용)
- 내부버퍼 존재 (데이터를 저장하는 메모리)
: 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 작업이 가능
String data = "abc"
data += "eee"
append() : 문자열 끝에 추가
insert(위치, 기본값 | 문자열) : 믄자열을 지정위치에 추가
delete(시작위치, 끝위치) : 문자열 일부를 삭제
replace(시작위치, 끝위치, 문자열) : 문자열 일부를 대체
toString() : 완서오딘 문자열 리턴
자바 기본 타입
byte, int, char, long, short, boolean, float, double
- 자바는 기본 타입의 값을 갖는 객체 생성할 수 있다 -> 포장 객체
<클래스>
byte - Byte
long - Long
short - Short
float - Float
double - Double
boolean - Boolean
char - Character
int - Integer
Wrapper(포장) 클래스
Boxing : 자바 기본 타입의 값을 포장 객체로 만드는 과정
Unboxing : 포장 객체에서 기본 타입의 값을 얻어내는 과정
ex>
Integer obj = 100; // 박싱
int value = obj; // 언박싱
비교 연산자 : 내부의 값을 비교하는게 아니라 포장 객체의 번지를 번지
int num = 10;
int num2 = 10;
num == num2;
수학 클래스 Math : 수학 계산에 사용할 수 있는 메소드를 제공하는 클래스
- 모든 메소드가 정적 메소드
Math.메소드
절대값
Math.abs(-100) ---> 100 double타입
올림값
Math.ceil(5.3) ---> 6.0 double타입
버림값
Math.floor(5.3) ---> 5.0 double타입
반올림값
Math.round(5.3) ---> 5 long타입
랜덤값
Math.random() 0.0<=v<1.0
최소값
Math.min(2,6,4,9,8) --- 2
최대값
Math.max(2,6,4,9,8) --- 9