Java 7

Java 객관식 개념 문제(30문항) v1.1

안녕하세요. 학업 준비로 바쁜 시간을 보내다가 오랜만에 글을 쓰게 되었습니다. 그동안 Java 공부하면서 기본적인 개념들 복습할 겸 틈틈이 시험 형식으로 문제를 만들어보았습니다. 업로드하는 현재 22번까지 만들었고 최대 30문항 정도로 계획을 잡고 있습니다. 급하게 문제를 만들어서 검토할 시간이 부족해 문제에 오류가 있을 수 있습니다. 출제 오류나 오타, 문제 아이디어 등의 다양한 피드백은 댓글을 통해 받은 뒤 계속 수정해나가겠습니다. 처음에 문제를 만들 땐 자바를 새로 배운 분들이 기존의 참고서로 공부를 끝낸 뒤 풀어봤으면 하는 의도였는데 문제를 만들다보니까 저도 모르게 난이도를 계속 올려버리고 너무 디테일한 내용까지 출제를 하게 되더라구요.. 그래서 지금 문제의 난이도는 짬뽕이 된 것 같으니 Java..

Java 2025.02.02

[Java] Pattern과 Matcher 클래스로 정규 표현식 제대로 사용하기

들어가며프로그래밍 언어를 배우다보면 정규 표현식(Regular Expression)이라는 목차를 접하게 됩니다. 정규 표현식은 텍스트에서 특정한 패턴을 검색하거나 조작할 때 사용되는 규칙입니다. 코딩 테스트와 웹 개발 시 종종 쓰이기 때문에 정규 표현식에 대해 꼭 알고 있어야합니다. 정규 표현식에 대해선 이미 숙지하고 있다는 가정하에 자바에서 regex 패키지의 정규 표현식 관련 클래스를 활용하는 방법을 다뤄보겠습니다.  regex packageregex 패키지에서 Matcher와 Pattern 클래스가 존재하는 것을 볼 수 있습니다. 각각의 역할은 다음과 같습니다.Pattern : 정규식을 정의하고 컴파일하는 클래스입니다.Matcher : 컴파일된 정규 표현식을 사용하여 입력 문자열에서 패턴을 검색하고..

Java 2025.01.05

[Java] Collections Framework간 변환 총정리 - List, Set, Map, Queue

들어가며자바로 알고리즘을 문제풀 때 컬렉션 프레임워크 간에 변환해야하는 경우가 생기는데 이때 사용하는 메서드를 정리하면 좋을 것 같아 작성하게 되었습니다. 우선, 데이터의 변환이 필요 없다는 가정 하에 정리했기 때문에 Stream API는 거의 사용하지 않았습니다. 미묘하지만 생성자에 직접 객체를 전달하는 방법이 더 빠르기 때문에 Stream API는 최대한 삼가했습니다. Collections FrameworkCollections Framework의 계층 구조를 간략하게 만들어 봤습니다. 전체적인 그림을 알면 이해가 더 쉽기 때문에 알고 가면 좋겠습니다. 흰색 배경은 인터페이스를 의미하고, 보라색 배경은 인터페이스의 구현체입니다. 그리고 실선은 상속, 점선은 구현을 의미합니다.Map은 왜 Iterable..

Java 2024.12.03

[Java] BufferedReader 사용법과 자료구조 총정리

들어가며자바를 처음 배울 때 Scanner와 BufferedReader 둘 중에 하나 사용하면 된다고 배웠습니다. I/O 성능이 중요하면 더 빠른 BufferedReader를 쓰면 된다고 해서 BufferedReader를 습관처럼 사용해왔습니다. BufferedReader가 버퍼 단위로 끊어서 입력을 받는다는 건 알고 있었는데 인자로 전달되는 InputStreamReader나 System.in에 대해선 무지했습니다. 기본부터 충실하자는 제 공부 철학을 지키기 위해 다시 새롭게 공부한 BufferedReader에 대해 글을 써보려고 합니다. 저처럼 BufferedReader의 사용법은 알지만 BufferedReader의 자료구조에 대해 공부하고 싶었던 분들에게 도움이 될 것 같습니다. Java의 표준 입..

Java 2024.10.18

[Java] compare 메서드에서 overflow가 발생하지 않는 이유

들어가며Comparator와 Comparable 인터페이스를 자세히 공부하면서 문득 의문이 들었습니다. "왜 Integer.compare 메서드를 사용하면 오버플로우가 발생하지 않을까?"  전 처음엔 return 값으로 a - b 형식의 수학적 연산을 사용했습니다. 하지만 금방 오버플로우가 생길 수 있다는 문제점을 알았고 인터넷에 급급히 서치해서 Integer.compare 메서드로 바꿔 사용했습니다. 그런데 Integer.compare는 어떤 방식으로 객체를 비교하길래 오버플로우를 예방할 수 있는 걸까요?  Integer.compare여기서 말하는 compare는 Comparator의 추상 메서드가 아닌 유틸리티 메서드입니다.저는 Comparator와 Comparable 인터페이스 공부가 끝나고 바로 ..

Java 2024.10.14

[Java] toString과 String.valueOf 메서드 차이

toString과 String.valueOf 메서드toString 메서드와 valueOf 메서드는 둘 다 Object를 String으로 변환하는 도구입니다.System.out.println(String.valueOf("hello"));System.out.println("hello".toString());위의 두 코드는 같은 값을 출력합니다. 그렇다면 똑같은 메서드를 2개나 만들어둔걸까요?그렇지 않습니다.String.valueOf 메서드와 toString 메서드의 가장 큰 차이점은 NullPointerException(이하 NPE)에 대한 처리 방식입니다.toString : 출력 객체가 null인 경우 NPE를 출력String.valueOf : 출력 객체가 null인 경우 null을 String 타입으로 ..

Java 2024.10.14

[Java] Comparable과 Comparator로 정렬 이해하기

들어가며알고리즘 유형 중 정렬에 대해 깊게 공부하던 중 다양한 정렬 방식에 대한 정리가 필요하다고 느꼈습니다. Arrays.sort 메서드로 단순히 오름차순으로 정렬하는 것을 넘어 배열이나 문자열의 특정 조건으로 정렬할 필요가 생겼습니다. Comparable과 Comparator가 무엇인건지. 그리고 이 인터페이스로 어떻게 정렬을 구현하는건지에 대한 명확한 정리가 필요해서 이 글을 작성하게 되었습니다.    Comparable과 ComparatorComparable과 Comparator는 둘 다 자바에서 객체를 정렬할 때 사용하는 인터페이스입니다. 하지만 두 인터페이스의 정렬 방식에는 미묘한 차이가 있습니다.Comparable객체 자체에 자연스러운 정렬 순서를 정의할 수 있도록 설계된 인터페이스입니다. ..

Java 2024.10.13