목록Programing/Java (24)
T_era
JavaDoc은 Java 소스 코드로부터 API 문서를 생성하는 도구특정 형식으로 작성된 주석(JavaDoc 주석)을 기반으로 HTML 형태의 문서를 자동으로 생성하여, 클래스, 인터페이스, 메서드, 필드 등의 API 스펙을 명확하게 기술JavaDoc 주석은 /**로 시작하고 */로 끝난다. 여러 줄에 걸쳐 작성할 수 있으며, 일반적인 설명 외에도 특정 태그를 사용하여 추가적인 정보를 명시할 수 있다.JavaDoc 주석의 기본 구조:/** * 클래스 또는 인터페이스에 대한 일반적인 설명. * 여러 줄에 걸쳐 상세하게 작성할 수 있다. * * 추가적인 설명이나 예시를 포함할 수 있다. */public class MyClass { /** * 필드에 대한 설명. */ private S..
Null에 대해 조금 알아보다 Optional이라는 컨테이너 클래스에 대해 알게되어 찾아봤다Optional은 Java 8에서 도입된 컨테이너 클래스Null의 가능성이 있는 상황에서 명시적으로 표시하기 위해 사용이전에는 그냥 Null을 사용해 표기했지만 NullPointerException등의 예외발생의 원인이 되곤 했다그래서 사용하게된 것이 Optional이다. Null관련 문제를 해결하고 더 안전한 코드 작성을 돕는 클래스Optional의 주요 목적:null 가능성이 있는 값을 명시적으로 표현: 변수가 null일 수 있다는 것을 코드 상에서 명확하게 드러내어 개발자가 주의하도록 유도.NullPointerException 방지: null 체크를 명시적으로 수행하도록 강제하여 예기치 않은 NullPoint..
제너릭을 사용하면서 연산자를 사용하고싶어 학습해보았다"T라는 타입 파라미터는 Number 클래스를 상속받은 타입만 될 수 있다" 라고 제한을 거는 것이렇게 함으로써, 여러분은 제네릭 클래스나 메서드 내에서 T 타입의 객체에 대해 Number 클래스가 제공하는 공통적인 기능을 안전하게 사용할 수 있게 된다. 컴파일러가 T가 항상 Number의 하위 타입임을 보장해주기 때문에, 타입 에러 걱정 없이 코드를 작성할 수 있고, 원하던 연산자도 사용할 수 있게 된다의 장점타입 안전성 확보: 특정 숫자 타입(Integer, Double, Float 등)만 다루는 로직을 만들 때, 실수로 다른 타입의 객체가 들어오는 것을 막아주고, 컴파일 시점에 타입 체크가 이루어지므로 런타임 에러를 줄일 수 있다.코드 재사용성 증..
1. 예외처리 throw : 의도적인 예외 ex) throw new IllegalArgumentException("메세지"); RuntimeException : 체크되지않는 예외 - nullpoint Exception : 체크되는 예외 - io * 체크되는 기준은 컴파일러가 해주냐 아니냐의 차이 예외는 발생하면 처리될 때까지 전파된다 결국 main까지 전파되면 프로그램이 종료된다 try{ 시도 }catch(Exception e){ 예외발생 }finally{ 성공하든 예외발생하든 실행 } class MyClass throws Exception{} 이 클래스에서 발생한 예외는 상위클래스에서 처리한다고 명시하는 것 2. Optional - null (람다식 가능) 공식 문서 : https://docs.orac..
1. 객체와 인스턴스란? 객체는 속성과 기능 등을 하나로 묶어 설계도를 따라 만들어진 결과물 인스턴스는 구체적인 실체 객체.속성 객체.메서드 등의 실체를 인스턴스라 한다 "나는 Car 객체를 가지고 있다." (일반적인 의미) "myCar는 Car 클래스의 인스턴스이다." (클래스와의 관계를 명확히 할 때) "우리는 Person 클래스의 여러 객체를 생성했다." (여러 실체를 언급할 때) "이것은 Book 클래스의 새로운 인스턴스이다." (새롭게 생성됨을 강조할 때) 객체는 조금 추상적인 표현 인스턴스는 실체를 명확히하는 표현2. this this는 static에서는 절대 사용할 수 없다 class는 static으로 선언할 수 없다 단, class 내부의 메서드나 속성들은 static을 사용..
https://t-era.tistory.com/112 해당 문제를 풀다가 value를 ArrayList로 사용하였는데 초기화 할 때 객체생성을 어떻게하나 찾아보다가 알게되었다Map> map = new HashMap();위와같이 사용하는데 Key가 새롭게 생성됐을 때 value를 객체로 생성하거나 ArrayList를 만들어 값을 넣어준 후에 값을 넣어야한다하지만 매번 ArrayList를 선언하는 것은 비효율적이기 때문에 map에 데이터를 넣는 과정에서 키가 새로생성 될 때만 객체가 생성되는 메서드가 있다map.computeIfAbsent(Key, mappingFunction)이 메서드 인데 mappingFunction위치에 람다식을 이용해 진행하게 되면 map.computeIfAbsent("Key", k ..
힙정렬 : 힙 트리구조를 이용한 정렬알고리즘힙정렬을 알기 위해서 이진 트리를 알아야한다. 그 중 완전 이진트리에 대해 알아보자완전 이진 트리한개의 노드(RootNode)로 시작하여 새로운 노드가 들어오면 해당 노드의 왼쪽과 오른쪽 충 2개가 연결될 때 까지 연결2개가 모두 연결되면 이미 연결된 자식노드 중에서 왼쪽노드의 왼쪽자리부터 차례대로 연결이렇게 완성된 노드들을 완전 이진 트리 라고한다힙정렬은 이 완전 이진 트리에서 최대값과 최소값을 빠르게 찾기위해 이용하는 정렬최대 힙 : 부모 노드가 자식노드보다 큰 노드힙정렬은 최대힙이 가장 위에서 부터 내려오는 정렬하지만 최대힙이 성립되지 않아 힙구조가 무너지는 경우 성립되지 않은 부모노드를 가장 큰 자식노드와 교체한다작성순서1. 사용할 노드를 정의한다clas..
두 배열이 있으면 두배열의 작은 값을 비교하여 배열에 순차적으로 넣는 정렬방법출처 : https://www.youtube.com/watch?v=QAyl79dCO_k병합 정렬을 구현하려면배열을 0번방과 1번방만 있는 상황까지 분할한다각 배열을 앞서 말한 방법으로 정렬한다다른 배열과 똑같이 정렬하여 병합한다 자바 코드public class Main { public static void main(String[] args){ int[] arr = {3, 2, 1, 5, 6, 9, 7, 8}; sort(arr); for (int a : arr) { System.out.println(a + " "); } } public static v..
퀵정렬기준값 아무거나 잡는다 (Pivot)이 Pivot을 기준으로 왼쪽엔 작은값 오른쪽에 큰값을 배치한다다시 Pivot을 정하고 이 과정을 반복한다.최선은 NlogN최악은 N^2반복 작업을 할 때 매번 값을 반씩 나누어 줄이면 NlogN이 된다하지만 퀵정렬의 경우 기준값을 매번 최소값을 결정하게 되면 매번 최대치만큼 반복하므로 N^2이 된다 이미지 출처 : https://www.youtube.com/watch?v=7BDzle2n47c과Start와 End를 정하고start는 pivot보다 작은값을 무시하며 전진하고end는 pivot보다 큰값을 무시하며 전진한다start가 pivot보다 크거나 같은값을 만나면 해당위치에서 멈추고end가 pivot보다 작거나 같은값을 만나면 해당위치에서 멈춘다둘이 값을 교환한..
백준 1181번 문제를 풀기위해 Comparator를 알아보았다Comparator- 두 매개변수를 비교하기 위한 인터페이스- 인터페이스이기 때문에 직접 재정의를 해주어 사용해야한다.@FunctionalInterfacepublic interface Comparator { int compare(T o1, T o2);}해당 인터페이스는 이렇게 선언되어 있다.o1과 o2를 비교하여 정수형을 리턴하는 형태문제를 풀기위해 구현한 익명메소드 Arrays.sort(words, new Comparator() { @Override public int compare(String s1, String s2) { if (s1.length() != s2.length..