Ch9-7_String클래스
2021. 12. 22. 23:49
JAVA/Chapter9
Ch9-7_String클래스 - String클래스 = 데이터(char[]) + 메서드(문자열 관련) - 내용을 변경할 수 없는 불변(immutable) 클래스 - 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐. 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용 Ch9-8_문자열의 비교 - String str = "abc"와 String str = new String("abc"); 의 비교 Ch9-9_문자열 리터럴 - 문자열 리터럴은 프로그램 실행시 자동으로 생성된다.(constant pool에 저장) - 같은 내용의 문자열 리터럴은 하나만 만들어진다. Ch9-9_빈 문자열(" ", empty string) - 내용이 없는 문자열 크기가 0인 char형 배열을 저장..
Ch9-1_Object클래스
2021. 12. 22. 02:08
JAVA/Chapter9
Ch9-1_Object클래스 - 모든 클래스의 최고 조상, 오직 11개의 메서드만을 가지고 있다. - notify(), wait() 등은 쓰레드와 관련된 메서드이다. Ch9-2_equals(Object obj) - 객체 자신(this)과 주어진 객체(obj)를 비교한다. 같으면 true 다르면 false - Object클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교)
Ch9-4_hashCode()
2021. 12. 21. 23:59
JAVA/Chapter9
Ch9-4_hashCode() - 객채의 해시코드를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 - equals()를 오버라이딩하면 hashCode()도 오버라이딩해야 한다. equlas()의 결과가 ture인 두 개체의 해시코드는 같아야 하기 때문. - System.identityHashCode(Object obj)는 Object클래스의 hashCode()와 동일 Ch9-4_toString(), toString()의 오버라이딩 - toString() : 객체를 문자열(String)으로 변환하기 위한 메서드
Ch8-18_연결된 예외(chained exception)
2021. 12. 21. 20:13
JAVA/Chapter8
Ch8-18_연결된 예외(chained exception) - 한 예외가 다른 예외를 발생시킬 수 있다. - 예외 A가 예외 B를 발생시키면 A는 B의 원인 예외(cause exception) Throwable initCause(Throwable cause) : 지정한 예외를 원인 예외로 등록 Throwable getCause() : 원인 예외를 반환 [이유1] : 여러 예외를 하나로 묶어서 다루기 위해서 [이유2] : checked예외를 unchecked예외로 변경하려 할 때
Ch8-15_사용자 정의 예외 만들기
2021. 12. 21. 00:16
JAVA/Chapter8
Ch8-15_사용자 정의 예외 만들기 - 우리가 직접 예외 클래스를 정의할 수 있다. - 조상은 Exception과 RuntimeException 중에서 선택 Ch8-17_예외 되던지기(exception re-throwing) - 예외를 처리한 후에 다시 예외를 발생시키는 것 - 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외처리하는 것
Ch8-14_finally 블럭
2021. 12. 20. 19:42
JAVA/Chapter8
Ch8-14_finally 블럭 - 예외 발생여부와 관계없이 수행되어야 하는 코드를 넣는다. try { // 예외가 발생할 가능성이 있는 문장들을 넣는다. } catch (Exception1 e1) { // 예외처리를 위한 문장을 적는다. } finally { // 예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다. // finally블럭은 try-catch문의 맨 마지막에 위치해야한다. } 참고 : try 블럭 안에 return문이 있어서 try블럭을 벗어나갈 때도 finally블럭이 실행된다.
Ch8-11_메서드에 예외 선언하기
2021. 12. 20. 18:59
JAVA/Chapter8
Ch8-11_메서드에 예외 선언하기 - 예외를 처리하는 방법 : try-catch문, 예외 선언하기 - 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것 참고 : 예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구별하자 ▶ 오버라이딩 1. 선언부 일치 2. 접근제어자 좁게 X 3. 조상보다 많은 예외 X static void startInstall() throws SpaceException, MemoryException { if(!enoughSpace()) throw new SpaceException("설치할 공간이 부족합니다."); if(!enoughSpace()) throw new MemoryException("메모리가 부족합니다."); }
Ch8-7_printStackTrace()와 getMessage()
2021. 12. 20. 15:04
JAVA/Chapter8
ch8-7 printStackTrace()와 getMessage() printStackTrace() : 예외 발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다. getMessage() : 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
Ch8-4_예외 처리하기(try-catch문)
2021. 12. 17. 12:41
JAVA/Chapter8
Ch8-4_예외 처리하기(try-catch문) try { // 예외가 발생할 가능성이 있는 문장들을 넣는다. } catch (Exception1 e1) { // Exception1이 발생했을 경우, 이를 처리하기 위한 문장을 적는다. } catch (Exception2 e2) { // Exception2이 발생했을 경우, 이를 처리하기 위한 문장을 적는다. } catch (ExceptionN eN) { // ExceptionN이 발생했을 경우, 이를 처리하기 위한 문장을 적는다. } Ch8-5_try-catch문에서의 흐름 A. try블럭 내에서 예외가 발생한 경우. 발생한 예외와 일치하는 catch블럭이 있는지 확인한다. 일치하는 catch블럭을 찾게 되면, 그 catch블럭 내의 문자들을 수행하고 전..
Ch8-1_프로그램 오류
2021. 12. 17. 11:40
JAVA/Chapter8
Ch8-1_프로그램 오류 1. 컴파일 에러(compile-time error) : 컴파일할 때 발생하는 에러 2. 런타임 에러(runtime error) : 실행할 때 발생하는 에러 3. 논리적 에러(logical error : 작성 의도와 다르게 동작 ▶ javac.exe : 자바 컴파일러 구문체크 번역 최적화 ▶ Java의 런타임 에러 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 ▶ 예외처리(exception handling)의 정의와 목적 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지..
Ch7-51_익명 클래스(anonymous class)
2021. 12. 16. 22:14
JAVA/Chapter7
익명 클래스(anonymous class) -이름이 없는 일회용 클래스. 정의와 생성을 동시에 new 조상클래스이름() { // 멤버 선언 } 또는 new 구현인터페이스이름() { // 멤버 선언 } class EX { Object iv = new Object() { void method() { } }; static Object cv = new Object() { void method() { } }; void myMethod() { Object lv = new Object() { void method() { } }; } }
Ch7-42_내부 클래스(inner class)
2021. 12. 16. 12:55
JAVA/Chapter7
CH7-42 내부 클래스 1. 클래스 안의 클래스 2. 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다, - 코드의 복잡성을 줄일 수 있다.(캡슐화) package ch_7; class AAA{ // AAA는 BBB의 외부 클래스 int i = 100; BBB b = new BBB(); class BBB{///BBB는 AAA의 내부 클래스 void method() { //AAA a = new AAA(); //System.out.println(a.i); System.out.println(i); // 객체 생성 없이 외부 클래스의 멤보 접근 가능 } } } class CCC{ } public class InnerTest { public static void main(Str..
get, set 정보은닉 방식으로 데이터 삽입 및 호출 실시
2021. 11. 6. 00:06
JAVA/getter, setter
추상 클래스 - 템플릿 메서드 사용하기
2021. 11. 5. 01:04
JAVA/추상화