Java/Notion

· Java/Notion
메소드(함수)를 간단한 식으로 표현하는 방법 익명 객체 (반환 타입과 이름이 없음) 함수는 클래스에 독립적이고 메소드는 클래스에 종속적 람다식 작성 // 기존 메소드 정의 int max(int a, int b) { return a > b? a : b; } // 람다식 적용 // 1. 메소드의 이름과 반환타입을 제거하고 {메소드블록} 전에 -> 를 추가 (int a, int b) -> { return a > b? a : b; } // 2. 반환값이 있는 경우에는 식이나 값만 적고 return문 생략 가능하며 끝에 ;도 생략 (int a, int b) -> a > b? a : b // 3. 매개변수의 타입도 예상 가능한 경우 생략 가능 (대부분 생략 가능) (a, b) -> a > b? a : b 작성시 주..
· Java/Notion
프로세스 실행 중인 프로그램을 의미하며, 자원(메모리, CPU등)과 쓰레드로 구성 쓰레드 프로세스 내에서 실제 작업을 수행하는 역할 모든 프로세스는 최소 한 개 이상의 쓰레드를 가지고 있음 멀티 쓰레드의 장점 시스템 자원의 효율적인 사용 사용자에 대한 응답성 향상 작업이 분리되어 코드가 간결해짐 멀티 쓰레드의 단점 동기화에 주의해야 함 교착상태가 발생하지 않도록 주의 각 쓰레드가 효율적으로 고르게 실행되게 고려해야 함 즉, 효율은 좋으나 개발을 하는데 있어서 쉽지 않음 쓰레드의 구현 및 실행 // Thread 클래스를 상속 받아 구현하는 방법 class MyThread extends Thread { public void run() { //Thread 클래스의 run 메소드를 오버라이딩 하여 사용 } } ..
· Java/Notion
프로그래밍 언어에 영향을 미치지 않고 유용한 정보를 제공하는 기능 표준 애너테이션 // 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 함 @Override // 앞으로 사용하지 않을 것을 권장하는 필드나 메서드를 정할 때 @Deprecated // 함수형 인터페이스가 컴파일러가 올바르게 작성했는지 체크하게 함 // 함수형 인터페이스가 하나의 추상메소드만 가져야 하는 제약을 지킨지 확인 @FunctionalInterface // 컴파일러의 경고메시지가 나타나지 않게 억제 // 이미 확인한 경고를 다시 확인하지 않기 위해 @SuppressWarinings(억제하고자 하는 경고의 종류를 문자열로 지정) @SuppressWarinings({경고1,경고2,경고3}) 메타 애너테이션 애너테이션을 만들 때 사용하는..
· Java/Notion
관련된 상수들을 같이 묶어 놓은 것 비교연산자는 사용 불가 ==, compareTo() 메소드는 사용가능 상수 하나하나가 객체라 비교형을 사용할 수 없고 equals 메소드는 사용 가능 // 기본적으로 값은 0부터 순서대로 주어짐 enum 열거형명 {상수명1, 상수명2, 상수명3, ...} // 열거형 상수를 이용하는 법 열거형명.상수명 열거형명.valueOf(상수명); Enum.valueOf(열거형명.class, 상수명); Enum 클래스 모든 열거형의 조상 클래스로 열거형에서 해당 클래스의 메소드들을 모두 사용할 수 있음 메소드 getDeclaringClass() 열거형의 클래스 객체를 반환 name() 열거형 상수의 이름을 문자열로 반환 ordinal() 열거형 상수가 정의된 순서를 반환 (0부터 ..
· Java/Notion
컴파일시 타입을 체크해 주는 기능 객체의 타입 안정성을 높이고 형변환의 번거로움(형변환 생략가능)을 줄여줌 ArrayList list = new ArrayList(); 타입 변수와 제네릭 클래스 클래스를 작성할 때 Object 타입이 아닌 제네릭 클래스(타입 변수)를 선언해서 사용 // 제네릭 클래스 MyClass { // ,, 뭘 사용하든 상관은 없음 //모든 타입을 지정가능 private E 변수명; public boolean add(E o) { } } // 객체를 생성 시 실제 타입을 대입하여 사용 MyClass myTv = new MyClass(); //참조변수와 생성자의 타입은 항상 일치해야 함 // 실제 타입을 대입하면 기존의 E로 지정된 타입들이 다 실제타입으로 바뀜 제네릭 타입과 다형성 참..
· Java/Notion
컬렉션을 편하게 다루기 위한 스태틱 메소드들을 제공 메소드 fill(), copy(), sort(), binarySearch() 컬렉션 채우기, 복사, 정렬, 검색 synchronizedXXX() 컬렉션의 동기화 unmodifiable() 컬렉션을 읽기전용인 변경불가 상태로 만들어줌 singletonXXX() 객체를 하나만 저장하는 싱글톤 컬렉션을 만들어줌 checkedXXX() 한 종류의 객체만 저장하는 컬렉션을 만들어줌 (지네릭스로 대체가능) rotate() 지정 칸만큼 요소들을 이동 swap() 지정 요소들끼리 위치를 교환 shuffle() 저장된 요소의 위치를 임의로 변경 sort(reverseOrder()) 역순 정렬 nCopies() 리스트를 지정 요소로 채운 결과를 반환. 변경불가 Enume..
· Java/Notion
데이터를 키와 값의 쌍으로 저장 순서를 유지하지 않음 키는 중복을 허용하지 않고 값은 중복을 허용함 두 클래스의 차이는 동기화 유무 순서를 유지하려면 LinkedHashMap 클래스를 사용 Hashing 기법으로 데이터를 저장하여 많은 데이터도 빠르게 검색이 가능 ID/PW, 카운팅, 빈도수 체크 등에 사용 Hashing Hash 함수를 이용하여 HashTable에 데이터를 저장하고 읽어오는 기법 같은 Key를 넣으면 항상 같은 Hash Code(배열의 인덱스)가 나오는 구조 서로 다른 키에서도 같은 값의 해시코드를 반활할 수도 있음 키로 해시함수를 호출해서 해시코드를 읽음 해시코드에 대응하는 연결리스트를 배열에서 찾음 연결리스트에서 키와 일치하는 데이터를 찾음 생성자 HashMap(); HashMap(..
· Java/Notion
이진 탐색 트리로 구현 범위 검색과 정렬에 유리한 컬렉션 클래스 이진 트리는 모든 노드(요소)가 최대 2개의 하위 노드까지만 가질 수 있음 in-order(중위순회) 방식을 가짐 이진 탐색 트리 자식을 최대 2개까지만 갖고 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장하는 트리 데이터가 많을 수록 값의 크기 비교에 필요한 횟수가 늘어나 추가 및 삭제에 시간이 많이 걸림 트리 순회 pre-order(전위순회) : 부모를 읽고 자식을 읽는 순회 post-order(후위순회) : 자식을 읽고 부모를 읽는 순회 in-order(중위순회) : 왼쪽자식-부모-오른쪽자식 노드 순으로 읽는 순회. 오름차순으로 정렬됨 level-order : 위에서부터 왼쪽에서 오른쪽으로 읽는 순회 생성자 TreeSet(); Tre..
da9dac
'Java/Notion' 카테고리의 글 목록 (2 Page)