본문 바로가기

Programming/Java

(13)
[Java] Pattern, Matcher Class 사용법과 메소드 정리 자바에서는 정규식을 활용해 문자열을 검증, 탐색을 돕는 Pattern, Matcher 클래스를 제공해준다. 다음에도 쉽게 활용할 수 있도록 정리하려고 한다. 👨‍🏫 클래스 분석 Pattern 정규 표현식이 컴파일된 클래스. 정규 표현식에 대상 문자열을 검증하거나, 활용하기 위해 사용되는 클래스이다. 주요 메소드 static Pattern compile(String regex) 주어진 정규식을 갖는 패턴을 생성 String pattern() 컴파일된 정규 표현식을 반환 Matcher matcher(CharSequence input) 패턴에 매칭할 문자열을 입력해 Matcher를 생성 static boolean matches(String regex, CharSequence input) 정규식과 문자열이 일치..
[Java] 정규식 문법 정리(Regex) 📝 문법 Character \\ 백슬래시(\) 문자 \t tab(탭) 문자 \n newline 문자(ex. 엔터) \r carriage-return 문자 \d 숫자 : [0-9] \D 숫자를 제외한 모든 문자 : [^0-9] \s 공백 문자 : [ \t\n\x0B\f\r] \S 공백이 아닌 문자 : [^\s] \w 숫자나 영어, _(under-bar) : [a-zA-Z_0-9] \W 숫자나 영어, _가 아닌 모든 문자 : [^\w] . 모든 문자 💡 정규식에서 특수문자를 사용해 검색하고 싶은 경우? 모든 문자를 검색한다는 의미의 *과 Character '*'을 구분할 수 없기 때문에 \\를 붙여 사용해야 한다. * → \\* Character Class [] 문자를 하나의 집합으로 묶는다 [abc] a,..
[Java] JVM, JDK, JRE의 차이 JVM(Java Virtual Machine) JVM은 자바 가상 머신으로 자바 소스코드(.java)를 컴파일하면 생기는 자바 바이트 코드(.class)를 OS에 맞게 변환하여 실행하는 역할을 한다. 따라서, 특정 플랫폼에 종속적이게 된다. 특정 밴더(ex. 오라클, 아마존, Azul, ...)에 따라 여러가지로 구현되어 있는데 JVM은 단독적으로 배포되지 않고 최소한의 배포단위는 JRE이다. JRE(Java Runtime Environment) JVM + 라이브러리 자바 실행 환경, 자바 애플리케이션을 실행할 수 있도록 구성되어 있다. JVM과 핵심 라이브러리, 자바 런타임에서 사용하는 프로퍼티 세팅이나 리소스 파일 등을 포함하고 있다. 하지만, 개발 관련 도구를 제공하지 않기 때문에 JRE만 설치한다..
[Java] Iterable과 Iterator 자료구조를 공부하던 중 Iterable과 Iterator가 나왔다. Iterator는 알고 있었지만 Iterable은 알지 못했기 때문에 정리해보았다. Java 내부의 코드를 살펴보면, List, Set, Queue ⇒ Collection ⇒ Iterable 순서로 extends하는 관계를 가지고 있는 것을 알 수 있다. Iterable이 무엇이길래 extends 하고 있는지 알아보자. Iterable JAVA API 문서를 보면 Iterable 인터페이스에서 Iterator를 반환하는 iterator()가 메소드로 선언 되어 있음을 볼 수 있다. 이를 구현하는 클래스들은 강제적으로 iterator() 메소드를 구현해야 하고, forEach와 iterator()를 사용할 수 있게 되는 것이다. Itera..
ArrayList와 LinkedList의 차이, 선택하기 알고리즘 문제를 풀면서 List를 사용해야 되는 일이 자주 발생한다. 차이를 알아보고 효율적인 Collection을 선택해보자 ArrayList 구조 ArrayList는 내부적으로 배열의 형태를 지니고 있다. get / set 배열의 index를 통해 접근하는 방식이기 때문에, random access속도가 빠르며 get / set 메소드는 상수 시간을 가지게 된다. add ArrayList는 배열이기 때문에 중간에 값을 끼워넣는 연산이 불가능하다. 만약 새로운 값을 추가하려고 할 때, List의 크기가 생성되어 있는 배열의 size(생성시 따로 설정하지 않았다면 size = 10인 배열이 생성된다)보다 커지게 되면, 이전 크기의 2배가 되는 배열을 생성해 배열 전체를 복사하여 새로운 배열에 복사하고 제..