Java Thread
Java IO(입출력)
Java Network
Database => MySQL
JDBC
: class를 제공
: ArrayList class
: HashMap class
: HashSet 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);
}
① 데이터 저장의
순서가 없음
② (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);
}
}
}//
=> 순서 상관없이 나옴
: 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 : 모든 Exception class의 최상위 class
API Reference에 이 구조가 나와있음
이런 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("끝");
}
}//
method
안에 나올 수 있음try~catch
를 작성해야 함//던지기만 하고
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(입출력)