Study(JAVA)

· Study(JAVA)
staticstatic은 '정적인', '고정적인'이라는 사전적 의미를 가진다.Java에서 static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다.static을 이해하기 위해서는 먼저 JVM을 이해할 필요가 있다. JVM (Java Virtual Machine)java 애플리케이션을 실행하면 JVM은 OS로부터 메모리를 할당한다.자바 컴파일러(javac)가 자바 소스코드(Xxx.java)를 바이트 코드(Xxx.class)로 컴파일한다.Class Loader를 통해 JVM으로 로딩한다.로드된 클래스 파일(Xxx.class)들은 기계가 읽을 수 없으므로 Execution Engine을 통해 기계어로 변환하여 실행한다.이 과정에서 Execution Engine에..
· Study(JAVA)
2024.04.04 - [Baekjoon(JAVA)/Algorithm] - [Baekjoon(JAVA) - Algorithm] 10988번: 팰린드롬인지 확인하기 위의 문제를 풀다 보니 String 클래스의 equals()와 contentEquals() 메서드의 차이를 알아야 할 것 같아서 정리하고자 한다. equals() vs contentEquals() Java에서 String 클래스의 equals()와 contentEquals() 메서드는 문자열 비교를 수행하는 데 사용된다. 우선 공통점은 두 메서드 모두 String 클래스의 public 메서드라는 것이다. 또한 해당 String 인스턴스의 문자열 값과 입력 매개변수의 문자열을 비교하여 두 문자열이 정확히 같으면 true, 다르면 false를 반환..
· Study(JAVA)
Background Clean Code 책을 읽는 도중 정적 팩토리 메서드에 대한 내용이 나오면서 그냥 넘어갈 수가 없어서 따로 찾아보기로 했다. 우선 간단하게 팩토리 메서드 먼저 알아보고 정적 팩토리 메서드를 알아보자. 참고로 factory method pattern과 static factory method는 관련이 없다. Factory method pattern Factory method 란? Factory method pattern은 생성될 객체의 정확한 클래스를 지정하지 않고도 객체 생성 문제를 처리하기 위해 factory method를 사용하는 생성 패턴이다. 생성 패턴(Creational pattern) 인스턴스를 만드는 절차를 추상화하는 패턴이다. 이 범주에 해당하는 패턴은 객체를 생성 합성..
Merge Sort 란? 기본적으로 병합정렬은 문제를 분할하고, 분할한 문제를 정복하여 합치는 과정이다. 병합 정렬은 기본적으로 분할 정복(Divide and Conquer) 알고리즘을 기반으로 정렬되는 방식이다. 병합 정렬에 대해 간단하게 말하면 정렬해야 할 리스트가 주어지면 해당 리스트를 분할을 반복하여 최대한 작게 쪼개진 시점에 부분 리스트에서 인접한 원소들끼리 비교하여 정렬하는 방식이다. 병합 정렬은 데이터를 비교하면서 찾기 때문에 비교 정렬이며, 정렬의 대상이 되는 데이터 외에 추가적인 공간을 필요로 하기 때문에 제자리 정렬(in-place sort)가 아니다. 정확히는 제자리 정렬로 구현할 수는 있지만 그 대신 성능을 일부 포기해야 하며 매우 신중하게 구현되어야 한다. 병합 정렬의 구조상 최대..
· Study(JAVA)
Background 백준 3003번 문제를 StringBuilder로 풀다보니 문자열 중간마다 공백을 넣을 때 가독성이 떨어지는 것 같아서 다른 방법은 없을까 찾아보니 StringJoiner 클래스를 보고 처음 사용해봐서 정리하고자 한다. 백준 3003번 문제풀이 2023.10.24 - [Baekjoon(JAVA)/Algorithm] - 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 StringJoiner StringJoiner 클래스는 Java 8에 추가된 클래스이다. StringJoiner는 여러 문자들을 연결할 때 붙일 구분자(delimiter)를 지정해줄 수 있는게 특징이다. StringBuffer/StringBuilder, StringJoiner 코드를 보고 비교해보자. StringBuffer..
· Study(JAVA)
Background 백준 10869, 10926번을 풀고 보니 문자열을 합칠 때 '+' 연산자만 썼는데 '+' 연산자를 사용하면 String 객체가 계속 추가된다고 들었던 기억이 있어서 문자열을 합치는 방법과 성능에 대해 알아보고자 한다. 백준 10869번 문제풀이 2023.10.24 - [Baekjoon(JAVA)/Algorithm] - 10869번: 사칙연산 백준 10926번 문제풀이 2023.10.24 - [Baekjoon(JAVA)/Algorithm] - 10926번: ??! String String 클래스는 immutable(불변)하다는 특성이 있다. String 클래스의 문자열을 저장하는 char[] 보면 final 로 선언되어 있다는 것을 확인할 수 있다. public final class ..
· Study(JAVA)
Background 백준에서 1001번 문제를 풀면서 문자열을 나누기 위해 StringTokenizer 클래스를 사용했는데 StringTokenizer에 대해 생소하다보니 StringTokenizer의 특징과 Split 메서드와의 차이점에 대해 찾아봤다. 백준 1001번 문제풀이 2023.10.24 - [Baekjoon(JAVA)/Algorithm] - 1001번: A-B StringTokenizer 클래스 문자열을 사용자가 지정한 구분자(delim)로 나눠주는 클래스이다. (나눠진 문자열은 token이라 한다.) StringTokenizer 특징 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 자르는데 사용된다. 예) "100, 200, 300, 40..
· Study(JAVA)
Background Java로 입력값을 받아야 하는 입력값을 받아야 하는 알고리즘 문제를 풀 때 Scanner를 사용했는데 BufferedReader가 더 좋다는 소리를 듣고 어떤 특징이나 차이가 있는지 찾아봤다. Scanner Scanner 클래스는 입력받은 데이터(바이트)를 다양한 타입으로 변환하여 반환하는 클래스이다. 간단하게 기본형과 String 타입을 정규표현식을 사용해 파싱할 수 있다. Scanner 특징 java.util 패키지에 속한다. (java.util.Scanner) 공백(띄어쓰기) 및 개행(줄 바꿈)을 기준으로 읽는다. (' ', '\t', '\r', '\n' 등) 원하는 타입으로 읽을 수 있다. 버퍼의 크기가 1024 byte(1KB) 이다. UnChecked(Runtime) Ex..
Yn3(인삼)
'Study(JAVA)' 카테고리의 글 목록