JAVA/이것이 자바다
-
이것이 자바다 | 13장 제네릭JAVA/이것이 자바다 2022. 8. 3. 18:08
📍제네릭을 사용해야 하는 이유 📎컴파일 시 강한 타입 체크를 할 수 있음 📎타입 변환(casting)을 제거함 📍제네릭 타입 (class, interface) 📎모든 종류의 객체를 저장(Object)하면서 타입 변환이 발생하지 않도록 하는 방법 => 제네릭 Box box = new Box(); // Box 클래스 내부 public class Box { private String t; public void set(String t) { this.t = t; } public String get() { return t; } } 📍멀티 타입 파라미터 (class, interface) 📎제네릭 타입은 두 개 이상의 멀티 파라미터 사용이 가능함 Product product1 = new Product(); // new..
-
이것이 자바다 | 12장 멀티 스레드JAVA/이것이 자바다 2022. 7. 23. 14:24
12.1 멀티 스레드 개념 멀티 프로세스: 서로 독립적 -> 오류가 발생해도 다른 프로세스에 영향 X 멀티 스레드: 하나의 프로세스 내부에 생성 -> 하나의 스레드에 예외 발생 -> 프로세스 자체 종료될 수도 있음 1. 메인 스레드 메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드 실행 가능 12.2 작업 스레드 생성과 실행 작업 스레드들이 객체로 생성되기 때문에 클래스 필요 java.lang.Thread 클래스를 직접 객체화 Thread를 상속해서 하위 클래스 생성 1. Thread 클래스로부터 직접 생성 :java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성 Runnable 을 매개값으로 갖는 생성자를 호출 Runnable의 run() 메소드 재정의 Runnable ..
-
이것이 자바다 | 11장 기본 API 클래스 (3)JAVA/이것이 자바다 2022. 7. 21. 14:39
2. Random 클래스 Math.random() 메소드는 0.0에서 1사이의 double 난수를 얻을 수 있음 Random 클래스는 boolean, int, long, float, double 난수를 얻을 수 있음 + 종자값을 설정할 수 있음 (종자값이 같으면 같은 난수를 얻음) Random 클래스가 제공하는 메소드 next자료형() => 해당 자료형 타입의 난수를 리턴 * nextInt(int n) : int 타입의 난수를 리턴(0
-
이것이 자바다 | 11장 기본 API 클래스 (2)JAVA/이것이 자바다 2022. 7. 15. 17:45
11.6 Class 클래스 자바는 클래스와 인터페이스의 메타 데이터를 java.lang 패키지에 소속된 Class 클래스로 관리함 *메타데이터: 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보 1. Class 객체 얻기(getClass(), forName()) Class 객체를 얻기 위해서는 Object 클래스의 getClass() 메소드이용 Class clazz = obj.getClass(); Class생성자를 감추고 있기 때문에 new연산자로 만들 수 없음 -> forName() 이용 (정적 메소드) try { Class clazz = Class.forName(String className); } catch (ClassNotFoundException e) { } 2. 리플렉션(getDeclar..
-
이것이 자바다 | 10장 예외처리JAVA/이것이 자바다 2022. 7. 12. 17:38
10.1 예외와 예외 클래스 예외 일반 예외 실행 예외 일반예외(= 컴파일러 체크 예외) : 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 없으면 컴파일 오류 발생 실행예외: 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외 일반예외 vs 실행예외 일반예외: Exception을 상속받지만 Runtime Exception을 상속받지 않는 클래스 실행예외: RuntimeException을 상속받는 클래스 10.2 실행예외 1. NullPointerException 객체참조가 없는 상태 (= null값을 갖는 참조 변수로 객체 접근 연산자인 도트( . )를 사용할 경우 발생 2. ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과하여 사용할 경우 발생 3. Numbe..
-
이것이 자바다 | 9장 중첩 클래스와 중첩 인터페이스JAVA/이것이 자바다 2022. 7. 12. 01:31
9.1 중첩 클래스와 중첩 인터페이스란? 클래스가 여러 클래스가 아닌 특정 클래스와 관계를 맺을 경우, 관계 클래스를 클래스 내부에 선언하는 것이 좋음 => 중첩 클래스: 클래스 내부에 선언한 클래스 중첩 클래스 사용 시 장점: 두 클래스의 멤버들을 서로 쉽게 접근 가능 코드의 복잡성 감소 중첩 인터페이스: 주로 UI 프로그래밍에서 이벤트를 처리할 목적으로 많이 활용됨 9.2 중첩 클래스 멤버 클래스 로컬 클래스 1. 인스턴스 멤버 클래스 : static 키워드 없이 선언된 클래스 인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언 가능. 정적 필드와 메소드는 선언 불가능(static 불가능) A클래스 외부에서 인스턴스 멤버 클래스 B의 객체를 생성하기 위해서는 A객체를 생성하고 B객체를 생성해야 함 ..
-
이것이 자바다 | 8장 인터페이스JAVA/이것이 자바다 2022. 7. 10. 15:18
인터페이스 인터페이스의 역할: 개발 코드와 객체가 서로 통신하는 접점 역할 개발 코드 -> 인터페이스의 메소드 => 인터페이스 -> 객체의 메소드 (호출) 클래스와 물리적 형태는 동일 클래스와 다른 점은 소스를 작성할 때 선언하는 방법의 차이 8.2 인터페이스 선언 [public] interface 인터페이스명 { ... } 인터페이스는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없음 상수와 메소드만 가질 수 있음 interface 인터페이스명 { // 상수 타입 상수명 = 값; // 추상 메소드 타입 메소드명(매개변수, ...); // 디폴트 메소드 default 타입 메소드명(매개변수, ...) {...} // 정적 메소드 static 타입 메소드명(매개변수) {...} } 상수: 인터페이스에 ..
-
이것이 자바다 | 7장 상속JAVA/이것이 자바다 2022. 7. 7. 03:16
상속 방법: 자식 클래스를 선언할 때 어떤 부모 클래스를 상속받을 것인지를 결정 class 자식클래스 extends 부모클래스 { // 필드 // 생성자 // 메소드 } class SportsCar extends Car { } *자바는 다중 상속을 허용하지 않음 -> extends 뒤에는 하나의 부모 클래스만 와야 함 7.3 부모 생성자 호출 부모 생성자는 자식 생성자의 맨 첫 줄에서 호출됨 => 만약 자식 클래스의 생성자가 명시적으로 선언되지 않았다면 컴파일러는 기본 생성자를 생성함 public 자식클래스() { super(); } super() 은 부모의 기본 생성자를 호출함 직접 자식 생성자를 선언하고 명시적으로 부모 생성자를 호출하고 싶은 경우 자식클래스(매개변..