Exception
try {
int num=3/0;
}
catch(ArithmeticException e) {
System.out.println(e.getMessage());
}
- try {에러 발생 가능 코드} catch {에러 해결, 처리} finally {예외 발생 무관하게 수행할 코드}
- ArithmeticException : 산수적 예외 처리
- NullPointerException : 생성하지 않고 클래스의 메서드를 호출하는 예외 처리
- IOException : input, output 관련 예외 처리
반드시 Exception 처리되는 methods
InputStream is=System.in;
int a=0;
System.out.println("한글자 입력:");
try {
a=is.read();
} catch (IOException e) {
e.printStackTrace();
}
#2 Thread
System.out.println("3초뒤출력");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("입력값: "+(char)a);
파일 가져오기(#3 FileReader & BufferedReader)
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class FileException_04 {
public static void read() {
String fileName="D:\\sist0615\\file\\Monday.txt";
BufferedReader br=null;
FileReader fr=null;
- BufferedReader(가져온 파일을 한 줄씩 읽음)와 FileReader(파일을 경로를 통해 가져옴) 생성
try {
fr=new FileReader(fileName);
br=new BufferedReader(fr);
while(true)
{
String s=br.readLine();
if(s==null)
break;
System.out.println(s);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
} finally {
try {
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 예외 처리는 즉각 해주어야 함(그렇지 않으면 복잡해짐)
public static void main(String[] args) {
read();
}
}
Split & Tokenizer
import java.util.StringTokenizer;
public class StringToken_07 {
public static void main(String[] args) {
String str="red,magenta,gray,pink,yellow";
String [] arrColors=str.split(",");
System.out.println("총 "+arrColors.length);
for(int i=0;i<arrColors.length;i++)
System.out.println(i+":"+arrColors[i]);
StringTokenizer st=new StringTokenizer(str, ",");
System.out.println("총 토큰수: "+st.countTokens());
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
}
- Split은 문자열을 분리해서 배열로 만듦
- Tokenizer는 문자열을 분리해서 각각의 문자열로 만듦(호출 위해서는 (참조변수).nextToken() 사용)
- (참조변수).nextToken()은 각 문자열 구분 불가(순서대로 호출할 뿐, 이를 변수화 가능)
- while((참조변수).hasMoreToken())을 통해 출력 가능
Collection & Generics
- Set : 데이터의 중복 허용 X, 순서 유지 X
- List : 데이터의 중복 허용 O, 순서 유지 O
- Map : Key값을 알면 Value값을 구하기 가능
Set
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class ExHashSet_10 {
public static void main(String[] args) {
Set<String> set1=new HashSet<String>();
- Set은 인터페이스, HashSet은 클래스(다형성과 유사)
- (인터페이스 or 클래스)<데이터형> 객체이름=new 클래스명<데이터형>;
set1.add("사과");
set1.add("포도");
set1.add("키위");
set1.add("오렌지");
set1.add("바나나");
set1.add("사과");
System.out.println(set1.size());
for(String s:set1)
System.out.println(s);
Iterator<String> iter=set1.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
Object [] ob=set1.toArray();
for(int i=0;i<ob.length;i++)
{
String s=(String)ob[i];
System.out.println(s);
}
- (참조변수).toArray();는 (참조변수) 내의 자료를 배열로 만듦(리턴 값의 클래스가 Object)
set1.clear();
if(set1.isEmpty())
System.out.println("Set타입안에 데이터가 없다");
else
System.out.println("Set타입안에 데이터가 있다");
}
}
- (참조변수).isEmpty : (참조변수) 컬렉션의 값이 존재하지 않으면 true, 존재하면 false
List
- List 인터페이스를 구현한 클래스로는 Vector와 ArrayList가 있다
- 처음 생성 시 일정한 개수로 생성되고 그 이상의 데이터를 넣으면 공간이 자동 증가(10+a)
import java.util.List;
import java.util.Vector;
public class List_12 {
public static void main(String[] args) {
Vector<String> list=new Vector<String>();
System.out.println("초기할당크기: "+list.capacity());
System.out.println("초기 데이터 크기: "+list.size());
list.add("사과");
list.add("포도");
list.add("사과");
list.add("키위");
list.add("바나나");
list.add("오렌지");
System.out.println("초기할당크기: "+list.capacity());
System.out.println("초기 데이터 크기: "+list.size());
for(int i=0;i<list.size();i++)
{
String s=list.get(i);
System.out.println(s);
}
for(String s:list)
System.out.println(s);
Object [] ob=list.toArray();
for(int i=0;i<ob.length;i++)
{
String s=(String)ob[i];
System.out.println(s);
}
}
}
List의 method 연습
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class ArrayList_13 {
public static void write(String title,List<String> list) {
System.out.println(title);
for(int i=0;i<list.size();i++)
System.out.println(i+":"+list.get(i));
}
public static void main(String[] args) {
String [] data= {"영준","순영","연주","진평"};
- (참조변수).get( i )를 통해 컬렉션 내의 index 값 추출
List<String> list=new ArrayList<String>();
for(String d:data)
list.add(d);
write("초기에 배열데이터 add후 출력",list);
list.remove(1);
write("1번 삭제후 결과",list);
list.add("현규");
write("현규추가후 출력",list);
list.set(0, "영환");
write("0번인덱스 변경후 출력",list);
list.clear();
System.out.println("사이즈: "+list.size());
}
}
Map
- Key는 중복 허용 X , Value는 중복을 허용 O
- Key 와 Value 쌍으로 저장
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Map_14 {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String, String>();
map.put("name", "손석구");
map.put("age", "23");
map.put("addr", "제주시 애월읍");
map.put("name", "제니");
System.out.println("size: "+map.size());
System.out.println("이름: "+map.get("name"));
System.out.println("나이: "+map.get("age"));
System.out.println("주소: "+map.get("addr"));
Set<String> keySet=map.keySet();
Iterator<String> keyIter=keySet.iterator();
while(keyIter.hasNext())
{
String key=keyIter.next();
System.out.println(key+"==>"+map.get(key));
}
for(String key:keySet)
System.out.println(key+"==>"+map.get(key));
}
}