본문 바로가기

자바 수업 정리

수업정리 13일차.

멀티캐치, 다중캐치 구문

try{ 

 

} catch ( 예외클래스명1 객체) {

 

} catch ( 예외클래스명2 객체) {

 

}

예외를 구체적으로 세분화해서 잡고싶을 때 사용.

모든 예외의 최고조상 : Exception , 어떤예외가 발생하던 전부 캐치.

최고조상은 가장 마지막에 처리.


 

사용자 정의 Exception

사용자가 직접 Exception 클래스 생성시 IllegalArgumentException 클래스 상속

메서드의 부적절한 인수를 사용자가 결정.

 

예로 passwordException을 만드는데

조건 

- 비밀번호는 null이 될 수없다.

- 비밀번호는 5자이상이어야하며 문자로만 이루어지면 안된다.

 

public class PasswordException extends IllegalArgumentException{

	private static final long serialVersionUID = 1L;

	public PasswordException(String message) {
		super(message);
	}
	
}

 

이렇게 IllegalArgumentException 클래스를 상속시켜주고, 내가만든 특별한 클래스이니 시리얼아이디를 부여해준다.

 

class PasswordTest{
	private String password;
	

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		//Exception 처리 
		if(password == null) {
			throw new PasswordException("비밀번호는 null이 될 수 없습니다.");
		} else if(password.length() < 5) {
			throw new PasswordException("비밀번호는 5자 이상이어야합니다.");
		} else if (password.matches("[a-zA-z]+")) {
			throw new PasswordException("비밀번호는 숫자나 특수문자를 포함해야 합니다.");
		}
		this.password = password;
	}
	
	
}

 

클래스를 만들어주고 비밀번호가 변경될 때 조건에 걸리면 만든 PasswordException에 걸리도록 처리

 

public static void main(String[] args) {
		PasswordTest pt = new PasswordTest();
		
		String password = null;
//		String password = "abc";
//		String password = "abcdef";
//		String password = "abcdef01";
		
		try {
			pt.setPassword(password);
			System.out.println(pt.getPassword());
		} catch(Exception e) {
			e.printStackTrace();
		}

 

메인에서 각 상황에맞춰 주석을 풀어주며 에러를 확인하며 제대로 처리되는지 확인.

 


 

익명클래스 (Anonymous Class) - 내부클래스의 일종

- 인터페이스를 이용하여 객체를 생성 할 때 , 클래스를 인터페이스 구현하여 객체를 생성

 

익명클래스를 사용하는 이유

- 인터페이스의 기능이 적고, 그 객체가 1개만 필요한 경우

 

메서드로 매개변수의 값이 들어와야 할 때 익명클래스를 사용함.

 


 

컬렉션 프레임워크 : 표준화된 방식의 자료구조

List, Set, Map => 인터페이스. 반드시 구현 클래스로 객체를 생성

데이터를 묶어서 관리할 때 사용

주로 배열대신 사용

 

List ( 배열과 동일 )

- 값을 하나씩 저장

- index : 순서를 보장

- 중복허용

- 배열 대신에 가장 많이 사용하는 구조

 

Set 

- 값을 하나씩 저장

- index 없음 : 순서를 보장하지않음

- 중복허용 X ( 같은 값이 입력되면 덮어씀)

 

Map

- 값을 두개씩 저장 key / value 쌍으로 저장

- index는 없고, key가 index역할을 함.

- key는 중복 불가능 / value는 중복가능.

- key가 중복되면 value는 덮어써짐.

- 2개의 값이 하나의 자료로 묶어야 할 때 사용

- 아이디 / 패스워드, 제품명 / 가격, 학생명 / 점수  ...

 

배열은 기본자료형이 다 가능하지만, Colletion은 기본자료형은 불가능함. 클래스 자료형만 가능.

래퍼클래스(Wrapper Class) : 기본타입 자료형을 클래스 타입으로 변환한 클래스

기본자료형 ( Boxing )  > 클래스자료형

클래스자료형 ( UnBoxing ) > 기본자료형

 

  기본자료형 > 래퍼클래스 

          int     > Integer
         char    > Character
         byte    > Byte

         short   > Short

         long    > Long

         float   > Float
         double  > Double
         boolean > Boolean

 

리스트 생성

 -  List<className> 객체명 = new 구현클래스<className>();
 -  List<Integer> list = new ArrayList<Integer>();
 -  List의 구현클래스 => ArrayList, LinkedList
  
 ArrayList : 검색 시 유리 ( 배열과 유사한 형태 )
 -   미리 길이를 지정하지 않음. 추가되면 늘어남. 삭제되면 줄어듬
 -   추가, 삭제가 쉽다. 검색이 쉬움
    
 LinkedList : 추가 / 삭제가 많을 경우 유리
 -   중간에 값을 끼워넣거나, 빼는게 쉬움.
 -   검색이 느리다 

 

List Method

- add() : 요소를 추가

- get(index) : index 번지의 요소를 가져오기

- set(index, value) : index번지의 값을 value로 변경

- size() : list의 개수

- remove(index) : index번지의 값을 삭제 => list에서만 가능 , String 리턴 

- remove(object) :  object요소를 삭제 => set / map , boolean 리턴  /  같은 Object가 2개이상이더라도 앞에 하나만삭제

- contains(object) : list에 값이 있는지 검사 true / false로 리턴

- clear() : 리스트비움

- isEmpty() : 리스트가 비었는지 확인 true / false

- indexOf(object) : 해당 object의 index를 리턴 / 없으면 -1

- Collections.sort() : 정렬 , 오름차순만 가능     /  index가 없으면 정렬도 의미없기에 list만 가능

- list.sort(Comparator를 구현한 객체) : 정렬  / Comparator 인터페이스를 구현한 구현체를 넣어야함. ( 익명 클래스 사용 )

 

list.sort() 의 예

list.sort(new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				// 결과가 -면 앞으로 보내고, + 뒤로 보내는 역할
				// o1 - o2 : 오름차순 정렬 o2 - o1  : 내림차순
				return o2 - o1;
			}
			
		});

 

Iterator : index가 없는 자료형을 출력하기 위해 사용
 - list는 index가 있기 때문에 get(i)를 사용하여 원하는 번지에 접근이 가능
 - set / map은 index가 없어서 일반 for문은 사용불가 ( 향상된 for문만 가능 - map은 불가능) 
 - 순서와 상관없이 값을 가져올 수 있는 Iterator 사용
 - map은 향상된 for, Iterator 둘다 직접 사용은 불가능

 

Arrays.asList() : 배열 => 리스트

toArray() : 리스트 => 배열

 

'자바 수업 정리' 카테고리의 다른 글

수업정리 15일차.  (1) 2024.10.11
수업정리 14일차.  (0) 2024.10.10
수업정리 12일차.  (5) 2024.10.07
수업정리 11일차.  (0) 2024.10.04
수업정리 10일차.  (1) 2024.10.02