1) String 클래스 데이터 (char[]/문자배열) + 메서드(문자열 다루는데 필요한) 내용을 변경할 수 없는 불변(immutable) 클래스 String a = "a"; String b = "b"; a = a + b; // "ab"문자열이 새로운 객체로 생성되는 것. (a객체가 바뀌는게 아님) 덧셈연산사(+)를 이용한 문자열 결합은 성능이 떨어짐. (계속 새로운 객체가 만들어지니까) 문자열의 결합/변경이 잦은경우, 내용변경 가능한 StringBuffer라는 클래스 사용. 2) 문자열의 비교 - String str1 = "abc"; String str2 = "abc"; // "abc"라는 같은 객체를 str과 str2가 함께 공유 str1 == str2 ? true -> 주소비교 str1.equal..
1) equals() - boolean 타입 - 객체자신(this)과 주어진 객체(obj)를 비교. 같으면 true, 다르면 false. - Object 클래스의 equals()는 객체의 주소를 비교 (참조변수 값 비교) - 인스턴스변수(iv)의 값을 비교하도록 equals()를 오버라이딩 해야한다. ex.예시 int value; Value(int value){ this.value=value; } public boolean equals(Object obj) { //2. Object의 equals()를 오버라이딩 -> 주소가 아닌 value를 비교 if(!(obj instanceof Value)) return false; //4. instanceof로 형변환 가능한지 확인 Value v = (Value)o..
1) hashCode() - 객체의 해시코드(hash code)를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 ex. 예시 public class Object { public native int hashCode(); // native메서드엔 C언어로된 OS메서드가 적혀져 있는데 // 내용을 볼 수는 없지만 사용은 가능.메서드가 객체주소를 int로 변환해서 반환해줌. - equals()를 오버라이딩하면, hashCode()도 오버라이딩 해야 함. equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기때문! ex. 예시 String str1 = new String("abc"); String str2 = new String("abc"); Sy..

1) 연결된 예외 - 한 예외가 다른 예외를 발생시킬 수 있다. - 예외 A가 예외 B를 발생시키면 A는 B의 원인예외 (cause exception) 문법 void install() throws InstallException{ try { startInstall(); //SpaceException 발생 copyFiles(); } catch (SpaceException e) { InstallException ie = new InstallException("설치중 예외발생"); //예외생성 ie.initCause(e); // InstallException의 원인예외를 SpaceException으로 지정 throw ie; //InstallException을 발생시킨다. } catch (MemoryExcepti..

1) 사용자 정의 예외 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception(사용자가 발생시키는 예외)과 RuntimeException(프로그래머 실수로 발생하는 예외)중에서 선택 (웬만하면 예외 선택처리 가능한 RuntimeException로 !) class MyException extends Exception { MyException(String msg) { //문자열을 매개변수로 받는 생성자 super(msg); // 조상인 Exception클래스의 생성자를 호출 = Exception(String msg) } } * 순서 조상 정하기 (Exception or RuntimeException) String 매개변수가 있는 생성자 생성 ex.예시 class MyException1 ..

1) 예외 처리하는 방법 try-catch문 (직접처리) 예외 선언하기 (예외 떠넘기기) 은폐 (감추기/무시) : 빈 catch블럭 사용. 웬만하면 사용하지 않기 2) 예외선언 : 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것 문법 : 메서드명() + throws + 예외1, 예외2... { 메서드 내용 } ex.예시 1 예외처리 할 수 있는 try-catch문이 없어서 예외를 method1 -> method2 -> new Exception순으로 떠넘기다가 마지막에 main메서드 throws Exception으로 인해 예외는 JVM으로 떠넘겨짐. JVM이 실행결과를 출력하고 비정상적으로 (예외처리) 종료됨. ex.예시2 import java.io.*; public class Ex8_10 { ..

checked 예외 (Exception과 자손) : 컴파일러가 예외처리 여부를 체크 (예외 처리 필수 -> try-catch문 필수!) ex. 예시. new Exception은 checked 예외(예외 처리 필수) -> 오류발생 !! -> try-catch문이 있어야함 unchecked 예외 (RuntimeException과 자손) : 컴파일러가 예외처리 여부를 체크 안함 (예외 처리 선택) ex. 예시. RuntimeException은 unchecked 예외(예외 처리 선택) -> 아래 예시 오류 x
1) 예외 (고의로) 발생시키는 법 연산자 new를 이용해 발생시키려는 예외클래스 객체 생성 Exception e = new Exception("고의로 발생시켰음"); 키워드 throw를 이용해서 예외 발생시키기 throw e; *위 두 줄을 아래 한줄로 생략 가능 throw new Exception("고의로 발생시켰음."); public class Ex8_6 { public static void main(String[] args) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; //예외 발생시킴 // 위 두줄을 throw new Exception("고의로 발생시켰음."); 이 한 줄로 사용가능 } catch (Exception e) { Syst..
- Total
- Today
- Yesterday