Java
-
자바 GenericJava/이론&문법 2023. 9. 22. 03:06
- Java 5에서 추가 - 타입 형 변환에서 발생할 수 있는 문제점을 사전에 없애기 위해(컴파일 시점에) 만들어졌다. - 데이터 타입을 외부에서 지정한다. 🧐 그냥 모든 객체의 최상위인 Object로 쓰긴 어려운가? 어떤 타입을 넘겨도 상관없지만, get으로 저장된 값을 꺼낼 때 Object로 넘어오기 때문에 형변환을 해줘야 한다. 이 케이스 별로 if ( ~~instanceOf String) 이런식으로.. String str = (String) data.getObject(); // data.getObject()의 리턴값이 Object이므로 String str = data.getObject(); // String으로 받겠다고 명시해놨으므로 이때 String으로 명시 그래서 등장한 것이 제너릭. 형 변환..
-
-
백준 2133, 2141Java/코딩테스트 2023. 9. 20. 22:31
🧩 백준 2133 : 타일 채우기 https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 🧩 동적 계획법 문제 🧩 글로 쓰는것보다 그림이 더 이해가 잘 될 것 같아서 그림으로 그려봤다. 🧩 참고로 가로 길이가 홀수인 경우는 0이다. 타일 2종류로 채울 수 있는 방법이 없음. 그러므로 DP 계산할 때는 짝수만 해주면 된다. 🧩 아래는 DP[6]과 DP[4]인 경우이다. 모든 케이스를 다 그리진 않고, 왼쪽에 그려놓은 것 처럼 각 단계별로 추가되는 독립적인(?) 타일 조합만 그려놨다. 🧩 앞단계의 모양을 조합해서 나올 수 없는 타일 조합이므로 얘는 추가로 +2를 해..
-
프로그래머스 시험장 나누기, 백준 21610Java/코딩테스트 2023. 9. 19. 03:00
🤣 프로그래머스 : 시험장 나누기 사실 이것은 ... 직접 푼 문제는 아니긴 하다. 하지만 그냥 공부한 셈 치고 정리 겸 올려 본다... 카카오 코테 문제이고, 오랜만에 프로그래머스 들어갔다가 추천 문제라며 띄워주길래 그냥 하나 풀어봐야겠다~ 하고 푸는데 답이 도저히 안 나와서 해설을 찾았다... 걍 고수의 풀이를 보고 이해한거 정리한 거라고 생각하면 된다. 보니깐 마지막 문제로 나온거던데 여기까지 가지도 못하고 끝나지 않았을까 싶다. https://school.programmers.co.kr/learn/courses/30/lessons/81305 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받..
-
Mutable & Immutable 객체Java/이론&문법 2023. 9. 15. 21:45
Mutable Object 생성된 이후에 수정이 가능하며, 이미 존재하는 객체에 재할당이 가능 값을 변경할 수 있는 메소드 제공 Heap 영역에 생성된 객체를 변경할 수 있다. List, ArrayList, HashMap, StringBuilder, StringBuffer... Immuatable Object String, Boolean, Integer, Float, Long 등 외부에서 객체의 데이터를 변경할 수 없다(heap 영역에서 바꿀 수 없다.) 새 객체를 만들어 reference 값을 주는 재할당만 가능 신뢰도 보장, 멀티 스레드 환경에서 안전함. 대신 객체의 값이 할당될 때마다 새로운 객체 필요(메모리 많이 잡아먹음) 불변객체로 만드는 방법 Integer, String 등의 API : fin..
-
AnnotationJava/이론&문법 2023. 9. 15. 19:02
정의 클래스, 메소드, 변수등의 선언시에 @를 사용하는 것 JDK 5부터 등장, 메타데이터라고 불리기도 한다. 컴파일러에게 정보를 알려주거나, 컴파일할 때와 설치시의 작업을 지정하거나, 실행할 때 별도의 처리가 필요할 때 사용 종류(JDK 6 기준) @Override 해당 메소드가 부모 클래스에 있는 메소드를 Override했다는 것을 명시적으로 선언 이 메소드는 Override 된 것이니까 무언가 잘못 코딩되어 있다면 컴파일러에게 알려달라고 지정해주는 것과 같다. 즉, 개발자가 제대로 Override 한 것인지 컴파일 시 확인이 가능하다. @Deprecated 미리 만들어져 있는 클래스나 메소드가 더 이상 사용되지 않는 경우가 있는데, 컴파일러에게 이 클래스 / 메소드는 더 이상 사용하지 않으며, 사용..
-
Nested ClassJava/이론&문법 2023. 9. 15. 17:00
개념 클래스 안에 클래스가 들어갈 수 있다. 이러한 클래스를 Nested Class라고 한다. 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을 때 캡슐화가 필요할 때(내부 구현을 감추고 싶을 때) 소스의 가독성과 유지보수성을 높이고 싶을 때 종류 Static Nested class (static 키워드가 붙음) inner class (static 없음) Local inner class Anonymous inner class : 내부 익명 클래스 예제 : Static Nested Class 내부 클래스는 외부 클래스의 private 변수도 접근이 가능하지만, static nested class를 그렇게는 사용할 수 없다. static 아닌 변수를 static class에서 사용할 수 없..
-
Java의 ExceptionJava/이론&문법 2023. 9. 15. 02:31
예외란? An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions (Oracle Docs) 예외란 프로그램의 실행동안 발생되는 것으로, 프로그램 명령어들의 정상적인 흐름을 방해하는 것을 의미합니다. Try - Catch - Finally 예외가 발생한 경우 try 내에서 발생한 이후의 문장들은 실행되지 않음 catch 내에 있는 문장은 실행되고, try-catch 문 이후의 내용이 실행 예외가 발생하지 않은 경우 try 문이 쭉 실행되고, catch 내에 있는 문장은 실행되지 않음. finally는 예외 발생 여부와 상관없이..