13일차는 발표;;
<언어>
변수, 자료형, 연산자, 디버깅표, 제어문, 배열, 함수
<OOP 1부>
클래스, 객체, 생성자, 오버로딩, this, 멤버변수, 메서드, 캡슐화, private, g/s, 상속, 오브젝트, 오버라이딩, 슈퍼,
동적바인딩, 다형성, abstract, 인터페이스(메서드 재정의 강제)
이런 정의들에 대해서
1. 말로 설명할 수 있는지
2. 코드로 쓸 수 있는지
</OOP 1부의 요점>
<OOP 2부>
예외처리 - 자바에서만 쓰는게 아님
예외 발생시 해야 할 것!!
1. 캡쳐
2. 에러원인 작성
3. 해결방안 작성
▶ 그렇다면 예외 또는 오류란??
: 코드가 예상과 다른 라인에서 멈춰버리는 현상
: 프로그램이 갑자기 종료되버리는 현상
그러면 사용자 경험이 저하됨
▶예외처리
오류를 해결하는 것이 아니다.
프로그램을 정상적으로 종료 or 프로그램을 끝까지 사용할 수 있게 코딩하는 것
▶try-chtch-finally
public class Practice {
public static void main(String[] args) {
int a=10;
int b=2;
try {
// 예외가 발생할수있는 코드
System.out.println("로그 1");
System.out.println(a/b); // 예외가 발생될 때 즉시 이동
System.out.println("로그 2");
}
catch(ArithmeticException e) {
// 예외발생시 수행될 코드
System.out.println("0으로는 나누기 연산을 수행할 수 없습니다.");
System.out.println("0");
}
finally {
// 예외 발생여부와 무관하게 항상 수행되는 코드
System.out.println("항상 출력되는 코드");
}
/*
if(b!=0) {
System.out.println(a/b);
}
else {
System.out.println("0으로는 나누기 연산을 수행할 수 없습니다.");
System.out.println("0");
}
*/
}
}
catch를 사용하는 법 - 예외가 발생할 수 있는 코드를 블럭잡고 오른쪽마우스클릭- surrounding with- trycatch문
catch문은 부모클래스 아래에 있어야 한다.
catch(ArithmeticException e) { System.out.println("0으로는 나누기 연산을 수행할수없습니다."); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("해당 인덱스는 없습니다."); }
catch(Exception e) { e.printStackTrace(); } 모든예외
버퍼비우기 (개인적으로 중요하다고 생각) : 콘솔을 안보고 프로그램을 만들경우, 잊어버릴 확률높음..잊지말자
sc.nextline(); //한줄을 먹음?!으로써 입력되어 있었을지도 모를 버퍼를 비워준다
▶예외처리 심화
-예외 일부러 발생시키기
-예외 만들기
-예외 미루기 ★
: 실제로 예외가 발생한 곳에서 예외를 처리하는 것은 아니다
해당함수(메서드, 객체)를 호출한 곳에서 예외를 처리하는 것이다
public class Practice {
public static int kim(int index) throws Exception { // 예외 처리를 "강제"하는 키워드
int[] datas= {11,22,33};
return datas[index];
}
public static void main(String[] args) {
int num=-1;
try {
num = kim(3); // 반드시 예외 처리를 해야만함!!!!!
} catch (Exception e) {
System.out.println("정확한 인덱스로 호출해야 함!");
}
System.out.println(num);
for(int i=0;i<10;i++) {
System.out.println("*");
try {
Thread.sleep(1000); // 1000당 1초
// .sleep() 가 throws 를 작성해둔 상황!!!!!
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
<컬렉션 프레임워크> : 일종의 틀 : list, 집합, 맵 등등
예) 스프링 프레임워크 , 마이바티스프레임워크 등등
포인트) 언제, 어떻게 사용해야 하는지와 용법과 문법을 알아야 한다
▶장점
1. 개발자가 개발에 활용하기가 용이
2. 프로그램 동작 중에도 메모리(크기)를 늘리거나 줄일 수 있음
>> 배열의 3요소 중의 하나인 크기를 정해두지 않아도(몰라도) 쓸 수 있음
1.오버로딩
add("apple")
add("작은티모")
add(0,11)
clear() : 비워준다
contains(31); 31번 있니?
get set(0,123); : 0번 인덱스 123으로 바꿈
isEmpty()
size (): 전체크기를 물어봄
remove(0) : 해당인덱스 제거
자료형을 절대 섞어쓰지 않는다
ArrayList<Integer> datas=new ArrayList<>();
컬레션프레임워크는 자바기반이기 때문에 integer , String을 씀.
<> : genelic
: 저장할 데이터의 타입을 "강제" genelic 제네릭필수!!!!!!!
(자료형과 클래스는 같은말)
Iterator 복사체 : 컬렉션 또는 데이터 구조를 순차적으로 탐색할수 있게 해주는 객체
이터레이터를 사용하면 컬렉션의 내부 구현을 신경쓰지 않고 데이터를 하나씩 가져올 수 있음
hasNext() /next() : 이터레이터에 주로 사용하는 메서드
이터레이터가 더 이상 순회할 요소가 있는지 확인하는 기능
=forEach로도 구현가능
자바코드참고
▶HashSet : 집합
1. 중복을 허용하지 않는다
2. 인덱스 개념이 없어 순서가 없다
import java.util.HashSet; //자바에서 제공하는 것이 아닌 import된다는 것
import java.util.Random;
import java.util.Set;
public class Practice {
public static void main(String[] args) {
Set<Integer> set=new HashSet<Integer>();
Random rand=new Random();
while(true) {
int randNum=rand.nextInt(10);
set.add(randNum);
if(set.size()>=5) {
break;
}
}
System.out.println(set);
}
}
▶맵
: index개념은 없는 대신 키값으로 검색 (인덱스를 지정하는 느낌??)
key와 value 값이 한쌍으로 되어 있어서 이 한 쌍이 하나의 데이터다
key:value
키값은 중복되어서는 안된다 (PK)
value는 중복되도 된다(동명이인)
set=replace
add=put
import java.util.HashMap;
import java.util.Map;
public class Practice {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<>();
map.put(101, "t사과");
}
}
'JAVA > 강의' 카테고리의 다른 글
| JAVA 12일차 강의 - 다형성 (0) | 2025.02.23 |
|---|---|
| JAVA 8일차 강의 - 클래스 (0) | 2025.02.17 |
| JAVA 11일차 강의 - 캡슐화와 상속 (0) | 2025.01.30 |
| JAVA 강의 6일차 - 복습과 PK (1) | 2025.01.30 |
| JAVA 강의 4일차- 배열과 NEW 그리고 정렬 (0) | 2025.01.30 |