2주차 12/06(화)

하이·2022년 12월 6일
1

수업

목록 보기
1/41
post-custom-banner

Java Thread
Java IO(입출력)
Java Network

Database => MySQL
JDBC

ArrayList

List 계열

: class를 제공
: ArrayList class

Map 계열

: HashMap class

Set 계열

: HashSet Class

HashMap class

① 데이터를 저장할 때 key,value 를 쌍으로 저장함
② List(ArrayList)계열은 데이터의 순서가 있음
Map(HashMap)은 key를 통해 data를 제어하는 구조로 순서가 없음
③ key와 value는 instance(객체)로 사용
④ key값은 unique


코드로 알아보기

<Java의주요자료구조> 프로젝트 생성

package com.test;

import java.util.HashMap;

public class MapTest {
	
	public static void main(String[] args) {
		
		HashMap<String, String> map = new HashMap<String, String>();
		
		// Map에 데이터를 저장할 때
		map.put("123", "Hello");
		map.put("4", "안녕!");
		
		//Map에서 데이터를 추출할 때
		System.out.println(map.get("123"));
		
	}
	
}//




package com.test;

import java.util.HashMap;

public class MapTest {
	
	public static void main(String[] args) {
		
		HashMap<String, String> map = new HashMap<String, String>();
		
		// Map에 데이터를 저장할 때
		map.put("123", "Hello");
		map.put("4", "안녕!");
		map.put("kk", "홍길동");
		map.put("aa", "신사임당");
		map.put("123", "소리없는 아우성");
		
		
		//Map에서 데이터를 추출할 때
		System.out.println(map.get("123"));
		

	}
	
}//




		
		//Map안에 있는 모든 key를 알고 싶어요
		Set<String> s = map.keySet();
		for(String a : s) {
			System.out.println(a);
		}



HashSet class

① 데이터 저장의 순서가 없음
② (data)value만 저장(instance 객체)
중복을 배제! (안에 있는 데이터가 유니크해서 중복 안됨)



코드로 알아보기

package com.test;

import java.util.HashSet;

public class SetTest {

	public static void main(String[] args) {
	
		HashSet<String> set = new HashSet<String>();
		
		//set안에 데이터를 저장하는 건 쉬움
		set.add("123");
		set.add("홍길동");
		set.add("신사임당");
		set.add("Hello");
		
		//set안에 저장된 데이터를 꺼내려면 어떻게 해야 하나요?
		//set은 순서가 없음. 순서를 이용해서 꺼낼 수 없음
		//set은 key가 없음	. key를 이용해서 꺼낼 수 없음
		for(String s : set) {
			System.out.println(s);
		}
		
	}
	
}//

=> 순서 상관없이 나옴


Exception (예외)

: compile time(source code를 작성하는 시점)에는 문제가 없음
(code에 문법적인 오류가 없는 경우)

  • but, Runtime(실행시점)에 의도치 않은 예외적인 상황 발생
    => 당연히 프로그램이 "강제 종료" = Exception이 발생
    => 이를 해결해서 강제 종료되지 않도록 처리해줘야 함
    => Exception Handling

<-> Error(관심 대상이 아님. 복구 불가)

코드로 알아보기

package com.test;

public class ExceptionTest {

	public static void main(String[] args) {
		System.out.println("예외상황을 발생시켜요!");
		
		int result = 10/0;		//문법적인 오류는 없음
								//하지만 Runtime에 이상한 상황(Exception)이 발생
		
		System.out.println("여기는 출력되나요!");
	}
}

ArithmeticExceptio : 수학적 오류?


package com.test;

class Customer {
	public String name;
	public long	balance;
}

public class ExceptionTest {

	public static void main(String[] args) {
		System.out.println("예외상황을 발생시켜요!");
		
		
		Customer a = null;
		a.name = "홍길동";
//		int result = 10/0;		//문법적인 오류는 없음
								//하지만 Runtime에 이상한 상황(Exception)이 발생
		
		System.out.println("여기는 출력되나요!");
	}
}

java.lang.NullPointerException: 객체가 없다


  • 그럼 이 Exception에 관련된 class는 어떤게 있나요? 외워야 하나요?
    : 불가능
    NullpointException
    ArithmaticException
    IOException
    => class 계층구조로 이루어져 있음

Exception : 모든 Exception class의 최상위 class
API Reference에 이 구조가 나와있음


Java의 Exception 처리 방법

이런 Exception 객체를 어떻게 처리해야 강제종료를 막을 수 있나요?
: Exception Handling 하려면 어떻게 해야 하나요?
: 딱 1가지 방법만 존재

try{
	//code에서 exception이 발생하면(여러종류 excetion 발생 가능)
}catch(잡은 except 객체) {	//catch문은 문제가 없으면 실행 안 함
	//exception  쿼리 코드 
}catch(잡은 except 객체) {

}catch(잡은 except 객체) {

} finally {
	//exception이 있거나 or 없거나 무조건 수행 !
}

코드로 알아보기

package com.test;

class Customer {
	public String name;
	public long	balance;
}

public class ExceptionTest {

	public static void main(String[] args) {
		System.out.println("예외상황을 발생시켜요!");
		
		
		Customer a = null;
//		a.name = "홍길동";
		try {
		int result = 10/0;		//문법적인 오류는 없음
								//하지만 Runtime에 이상한 상황(Exception)이 발생
		} catch(NullPointerException e) {
			System.out.println("널포인터 익셉션 !");
			//원래는 예외상황 처리코드가 나와야 함
		} catch(ArithmeticException e) {
			System.out.println("수학연산 잘못됐어요 !");
		}
		
		System.out.println("여기는 출력되나요!");
	}
}

package com.test;

class Customer {
	public String name;
	public long	balance;
}

public class ExceptionTest {

	public static void main(String[] args) {
		System.out.println("예외상황을 발생시켜요!");
		
		
		Customer a = null;
//		a.name = "홍길동";
		try {
		int result = 10/0;		//문법적인 오류는 없음
								//하지만 Runtime에 이상한 상황(Exception)이 발생
		} catch(NullPointerException e) {
			System.out.println("널포인터 익셉션 !");
			//원래는 예외상황 처리코드가 나와야 함
		} catch(Exception e) {	
			System.out.println("수학연산 잘못됐어요 !");
		}finally {
			//얘는 무조건 수행됨(예외가 있거나 없거나 상관없이 수행)
		}
		
		System.out.println("여기는 출력되나요 !");
	}
}

상위class가 하위class보다 밑에 있어야함




package com.test;

class MyClass extends Exception {
	
}

public class CustomeExceptionTest {

	public static void main(String[] args) {
		
		try {
			
			throw new MyClass();	//exception 객체가 생성됨 (아직은 그냥 객체 단계)
									//이런 exception객체를 던져야 함 => throw
		} catch(Exception e) {
			
		}
		System.out.println("끝");
		
	}
	
}//



Throws

  • logic code는 모두 method 안에 나올 수 있음
    : method 안에 try~catch를 작성해야 함
    => 너무 많음 (모든 method 마다 몽땅 try~catch가 다른재?????)
    => method는 본인을 호출한 곳으로 exception을 throw 가능

//던지기만 하고

package com.test;

class MyClass extends Exception {
	
}

public class CustomeExceptionTest {

	public static void main(String[] args) throws Exception {
		System.out.println("시작");
			
		throw new MyClass();	//exception 객체가 생성됨 (아직은 그냥 객체 단계)

		System.out.println("끝");
		
	}	
}//

Java IO(입출력)

profile
기록의 즐거움 😆💻
post-custom-banner

0개의 댓글