전체 글
-
자바 생성자(Constructor) 정리Java 2023. 8. 11. 20:33
생성자(Constructor) 객체가 생성될 떄, 호출되는 메서드 (메서드는 호출되어야 동작하고 객체가 있어야 한다.) 반드시 class의 이름과 같아야한다. 객체를 생성하면 반드시 실행되며, 가장 먼저 실행된다. 생성자를 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 만든다. 생성자를 새로 정의하면 기본 생성자는 만들어지지 않는다. * 주의 사항 (예시 참고) error: constructor SubConstructorTest in class SubConstructorTest cannot be applied to given types; SubConstructorTest() 를 선언하지 않고 사용하면 위와 같은 에러가 난다. 예시 class ConstructorTest { ConstructorTest..
-
Sync & Async & Blocking & Non-BlockingWEB & CS 2023. 8. 11. 20:30
Sync 작업들의 순서가 지켜진다. Async 작업의 순서가 지켜지지 않는다. Blocking 작업의 제어권을 빼앗긴 상태를 말한다. Non-Blocking 작업의 제어권을 별도로 얻는다. Sync & Async 요청한 순서가 지켜지는지에 대한 여부로 차이를 설명할 수 있다. Blocking & Non-Blocking 제어권의 유무로 로직이 실행 가능한지(Non-Block), 불가능한지(Block)로 판단한다. code_a, code_b, code_c라는 코드가 순서대로 있다고 가정하자. code_a.... code_b.... code_c.... * Sync 동작방식 1. code_a 실행 2. code_a 끝 3. code_b 실행 4. code_b 끝 5. code_c 실행 6. code_c 끝 * ..
-
Java 특정 값 배열에 포함 여부 (String, int)Java 2023. 8. 11. 20:24
Arrays.asList() java.util.Arrays를 사용 기본형 데이터 타입은 작동하지 않는 단점이 있다. 기본형 데이터 타입은 Ints.asList() 혹은 Java 8 Stream을 사용해 확인 import java.util.Arrays; public class Main { public static void main(String[] args) { String[] strArr = {"B", "A", "C", "D", "E"}; String strValue = "A"; System.out.println(Arrays.asList(strArr).contains(strValue)); // true } } Ints.asList() import com.google.common.primitives.Ints..
-
자료구조 시작 전 사전지식_linkedListWEB & CS 2023. 8. 11. 20:12
linkedListCollection 프레임워크의 일부분java.util 패키지에 소속되어 있다.모든 데이터가 데이터와 주소를 별도로 가지고 있어, 포인터와 주소를 사용해 연결한다.각 데이터는 노드라고 불리고 ArrayList보다 선호된다.ArrayList보다 검색에 있어서 느리다는 단점이 있다. * 이해를 돕기 위해 linkedlist를 구현했습니다.class LinkedList { private ListNode head; public LinkedList() { head = null; } // 중간에 데이터 삽입 public void insertMiddleNode(ListNode preNode, String data) { // listN..
-
Java 제네릭(Generic) 정리(3)_generic의 extends, super, wildcardJava 2023. 8. 11. 20:06
generic의 extends, super, wildcard extends 예시 : T와 T의 자손 타입만 가능 (K는 들어오는 타입으로 지정 됨) - 상한 경계 상한 경계인 extends 뒤에 오는 타입이 최상위 타입으로 한계가 정해지는 것이다. Integer, Long, Byte, Double, Float, Short 같은 수를 표현하는 래퍼 클래스만으로 제한하고 싶은 경우 Number 클래스를 상속 class A {} class B extends A {} class D extends A {} class C extends B {} class E extends D {} // B와 C타입만 올 수 있음 // E타입만 올 수 있음 // A, B, C, D, E 타입이 올 수 있음 /* Integer, Lo..
-
Java 제네릭(Generic) 정리(2)_static을 이용한 GenericJava 2023. 8. 11. 19:52
static을 이용한 제네릭 프로그래밍 static으로 선언된 것들은 객체가 생성되기 전에 메모리에 먼저 올라가기 때문에 클래스 이름을 통해 바로 사용이 가능하지만, generic type을 우선적으로 선언해주어야한다. static으로 선언된 generic 메소드는 class의 타입과는 독립적이다. 예시 class ClassName { /* // error static E genericMethodError(E o) { return o; } */ // generic 메소드의 E타입은 generic 클래스의 E타입과 독립적이다. static E genericMethod(E o) { return o; } } class Main { public static void main(String[] args) { // ..
-
Java 제네릭(Generic) 정리(1)Java 2023. 8. 11. 19:42
제네릭(Generic) 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 한다. 객체 객체명 = new 객체(); 형식으로 사용 generic은 클래스 내부에서 지정하는 것이 아니라 외부에서 사용자에 의해 지정되는 것 특정 타입을 지정하는 것이 아니라, 필요에 의해 지정할 수 있도록 하는 일반(generic) 타입을 말한다. ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); /* 이 처럼 타입에 String, Integer를 다 사용하고 싶을때, String에 대한 클래스, Integer에 대한 클래스 등 하나하나 타입에 따라 만드는 것이 비효율적이다. 그래서 generic을 사용하는 것이다. ..
-
Java 배열과 list를 이용해 2차원 구현Java 2023. 8. 11. 19:27
2차원 배열 // 형식 int[][] intArr = new int[][]; * 2차원 배열 구현 import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] intArr = new int[2][2]; int intValue = 0; for (int i = 0; i < intArr.length; i++) { for (int j = 0; j < intArr[i].length; j++) { intArr[i][j] = intValue; ++intValue; } } // 1차원 배열 출력하는 법 // System.out.println(Arrays.toString(intArr)); // 2차원 배열 출력하는..