음 실습 내용을 빼면 정리 할 내용이 많지는 않지만 정리를 해야겠지!
Map / 상속 / 인터페이스 / 예외 / 클래스 / 꿀팁
흠 이정도로 나눌 수 있다.
리스트와 조금 다른 형태
리스트는 인덱스가 있고 인덱스에 객체를 넣는 형태
맵은 key,value 두가지로 구성되어 있고
key가 리스트의 인덱스같은 기능을 하는데
리스트의 인덱스는 자동으로 값의 위치에 따라 변경되지만
key는 한번 정하면 계속 유지가 되고
자기가 원하는 클래스로 지정이 가능하다.

Map<Integer, String> map1 = new HashMap<>();
Map<Integer, String> map1 = new HashMap<Integer, String>();
리스트와 마찬가지로 우변의 <>는 생략 가능하다
왜 좌변과 우변이 다른지 모르겠다
좌변은 Map이고 우변은 HashMap일까
Map1.put(key값, value값);
키값이 순차적일 필요는 없는데 순차적인 것이 관리가 편함
써보니 순차적인게 맞는듯?
map1.put(11, “deta123t”);
System.out.println(map1.get(11));
이렇게 하면 덮어쓰기가 된다
System.out.println(map1.get(1));
System.out.println(map1.get(1));
get()메서드를 사용해서 괄호안에 키값을 적어 준다
keyset() : 키값으로 구성된 값
// 반복문에 활용
for (Integer n:map1.keySet()) {
String s = map1.get(n);
System.out.println(s);
System.out.println(map1.get(n));
}
키값이 일정하지가 않아서 for문으로는 힘드나보다
map3.remove(1);
remove()메서드를 사용하고 괄호안에 키값을 적어준다
Map<Integer, TestDTO> testMap = new HashMap<>();
testMap.put(1, test1);
testMap.put(2, test2);
testMap.put(3, test3);
System.out.println(testMap.get(2));
test2 객체 출력
for (Integer t : testMap.keySet()) {
System.out.println(testMap.get(t));
}
key값은 Integer이라서 testDTO가 아니라 Integer으로 해야함
상속을 하는 이유
공통 속성을 뽑아낸다?
예를 들면 게임에서 랩과 스텟을 만들고 클래스를 나누면 랩과 스텟을 부모클래스로 하고
클래스별로 다르게 성장하는 것을 자식 클래스로 나눠서 하는 그런 기능인가?
부모클래스, 자식클래스
상속은 주면 없어지는 것이 아니라 사용권한을 주는 것
부모>자식> 자식> 자식 가능
두개의 클래스로 부터 상속 받을 수는 없음
부모가 둘인 것은 안된다는 건가
public class 자식클래스 extends 부모클래스 {
}
모든 매개변수 포함 생성자를 만들 때 부모클래스도 포함시켜서 생성하면
super() 메서드 안에 부모클래스 생성자가 생성된다
단 부모 생성자의 형식과 super()안의 형식이 일치해야 한다
생성자 순서

super()메서드가 먼저 실행이 된다

스위치같은 느낌인가??
인터페이스는 생성자가 없음
우변에는 인터페이스의 구현클래스 생서자를 활용
만들 때 클래스로 만들지 말고 인터페이스로 만들어야함
BoardServiceInterface bs = new BoardServiceInt1();
bs = new BoardServiceInt2();
1을 쓰다가 다시 2로 바꿔서 사용가능
메타몽같은 친구구나
인터페이스에서 만든 메서드는 구현된 클래스에서 반드시 만들어야해서 일관성이 있다
C(Create) : 새로운 데이터 생성
R(Read) : 데이터 조회, 출력
U(Update) : 데이터 수정
D(Delete) : 데이터 삭제
이건 왜 나왔더라?
메서드 재정의
https://velog.io/@captain1/자바-11일차에서 사용했었음
실행 도중 발생하는 일종의 오류
예외종류
try {
실행블록
} catch(예외 클래스 e) {
예외 발생시 실행할 내용
} finally {
필수항목은 아님
try가 끝나거나 catch 부분이 끝나면 무조건 실행
}
예외 클래스 e 예외가 발생할 클래스 이름을 적으면 된다.
throws는 안쓰나?
catch를 여러개 사용해서 여러 개의 예외를 처리 가능
이건 내가 찾아본 클래스이다
선언
SimpleDateFormat sdf = new SimpleDateFormat("패턴방식");
년 : y
월 : M (대문자)
일 : d
시 : h
분 : m
초 : s
오전/오후 : a
두개를 붙여쓰면 1의자리숫자가 01 으로 앞에 0이 붙어서 나온다
년도는 숫자에 따라 다르다
y = 2021
yy = 21
yyyy = 2021
String s = String.format(“%02d”, int)
01
05
String s = String.format(“%03d”, int)
015
007
마우스 오른쪽 클릭
source
generate hashcode() and equals()를 눌러서 생성
하면
DTO클래스안의 필드값이 같은지 비교할 수 있다.
내용물이 같으면 같은 hashcode값을 가지도록 만들어 준다
https://velog.io/@captain1/자바-13일차에서 나중에 알아봅시다 라고 한 내용
여기 까지가 자바를 배운 내용이다
자바 책같은 걸 보면 아직 안배운 내용도 있는데 지금은 시간이 촉박해서 안배운 내용도 있고
스프링이나 나중에 하면서 배우는 내용도 있다
다음주부터는 데이터베이스를 나간다.