Java

    [Java의 정석] 11. Collections Framework

    [Java의 정석] 11. Collections Framework

    1.5 Iterator, ListIterator, Enumerator : JCF 에서는 저장된 요소를 읽어오는 방법을 표준화하였다. Iterator 인터페이스에 정의되었고, Collection 인터페이스에 Iterator 를 반환하는 iteratore() 를 정의하고 있다 List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다. Iterator it = list.iterator(); while(it.hasNext()) { // do sth.. } Map 인터페이스에는 iterator 를 반환하도록 되어있지 않기 때문에, key 나 entry 집합으로 반환한 후에 iterator 호출이 가능하다. Iterator keyIt = map.keySet().i..

    [Java의 정석] 09. java.lang 패키지

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.1 Object 클래스 hashCode() : 객체의 주소값을 이용해서 해시코드를 만들어 반환한다. str 클래스는 문자열 내용이 같으면 도일한 해시코드를 반환하도록 오버라이딩되어 있다 toString() : 클래스이름 + @해시코드 값이 기본으로 설정되어있다. clone() : 객체의 값을 복사한다.. 참조타입의 경우에는 주소값을 복사하므로, 얕은복사문제가 있다. Cloneable 인터페이스를 상속받아 오버라이딩해야한다. 1.2 String 클래스 생성자를 이용한 경우에는 항상 새로운 String 인스턴스가 생성된다. 리터럴은 클래스가 메모리에 로드될 때 미리 생성되어있다. 따라서 같은 리터럴로 초기화되는 변수들은 모두 같은 주소의 문자열 리터럴을 갖는다..

    [Java의 정석] 08. 예외 처리

    [Java의 정석] 08. 예외 처리

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.1 프로그램 오류 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 1.2 예외 클래스 : Exception 은 checked Exception 과 unchecked Exception 으로 나뉜다. unchecked Exception 은 보통 프로그래머의 실수에 의해 발생하고, checked Exception 은 어플리케이션 외적인 요인으로 발생한다. 1.3 메서드에 예외 선언하기 main 에서도 예외가 처리되지 않으면, 프로그램이 종료된다. 1.9 자동 자원 반환 try with resources 문 try (FileInputStream fis =..

    [Java의 정석] 7.2 메소드 오버라이딩 시 예외 선언

    책에서는 예외 부분을 굉장히 간단하게 설명이 되어있는 것 같아, 더 구체적인 자료를 찾아봄 "예외는 조상 클래스이 메서드보다 많이 선언할 수 없다." 라고 적혀있지만, 엄밀히 말하면 checked Exception 에만 해당하는 내용이다. unchecked Exception 에 대해서는 자식 클래스에서 추가로 선언해도 상관없다. (case 1) 부모 메서드가 checked exception 던질 때, class Parent{ void method1() throws SQLException { //checked exception } } class Child extends Parent{ void method1() { } } (case 2) 부모 메서드가 unchecked exception 던질 때, class..

    [Java의 정석] 07. 클래스 상속 & 인터페이스 상속

    [Java의 정석] 07. 클래스 상속 & 인터페이스 상속

    모르는 것만 짧고 빠르게 정리한 노트입니다. 2.2 오버라이딩의 조건 조상 클래스이 메서드를 자손 클래스에서 오버라이딩 할 때, 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. 예외는 조상 클래스이 메서드보다 많이 선언할 수 없다. 인스턴스메서드를 static 메서드로 또는 그 반대로 변경할 수 없다. 책에서는 예외 부분을 굉장히 간단하게 설명하는 것 같아, 따로 더 정리했다. [Java의 정석] 7.2 메소드 오버라이딩 시 예외 선언 책에서는 예외 부분을 굉장히 간단하게 설명이 되어있는 것 같아, 더 구체적인 자료를 찾아봄 "예외는 조상 클래스이 메서드보다 많이 선언할 수 없다." 라고 적혀있지만, 엄밀히 말하면 checked letsmakemyselfprogrammer.tisto..

    [Java의 정석] 06. 객체지향 프로그래밍

    모르는 것만 짧고 빠르게 정리한 노트입니다. 4.5 가변인자(varargs)와 오버로딩 기존에는 메서드의 매개변수 개수가 고정적이었으나, JDK1.5 부터 동적으로 지정해 줄 수 있게 되었다. '타입... 변수명' 과 같은 형식응로 선언. 매개변수 중에서 가장 마지막에 선언해야 한다. (컴파일러의 매개변수 매핑 로직인듯하다.) 인자가 아예 할당되지 않을 수도 있고, 배열이 포함될 수도 있다. public PrintStream(String format, Object... args); 여러개의 문자열을 타입으로 받는 메서드를 생각해보자. 아래와 같이 두가지 버전으로 작성할 수 있다. //1st String concatenate(String... str) {...} //2nd String concatenate..

    [Java의 정석] 05. 배열

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.2 배열의 선언과 생성 byte, short, int, long 타입 배열 : 0으로 초기화 char 타입 배열 : null('/u0000')로 초기화 float, double 타입 배열 : 0.0 으로 초기화 boolean : false 로 초기화 참조 타입 배열 : null 로 초기화 1.3 배열의 길이와 인덱스 - 배열은 한번 생성하면 길이를 변경할 수 없다. - 배열의 길이는 JVM 이 별도로 갖고 있다. - (배열이름).length 로 값을 읽을 수 있다. (상수이기 때문에 변경은 불가능하다.) 1.4 배열의 출력 - 배열 이름을 그대로 println 하게 되면, '배열타입@배열주소' 와 같이 출력된다. - 하지만 char[] 배열은 string ..

    [Java의 정석] 04. 조건문

    모르는 것만 짧고 빠르게 정리한 노트입니다. 2.1 enhanced for statement for (타입_변수명 : 배열_또는_컬렉션) { // do something } - read only, jdk 1.5 부터 추가됨. 2.6 이름 붙은 반복문 Loop1 : for (int i = 2; i