[Java] 배열 복사 메서드 간단 정리
·
Backend/Java
주요 배열 복사 메서드Java에서 배열을 복사하는 주요 메서드들을 간단히 정리하면 다음과 같습니다. 1. Object.clone()int[] original = {1, 2, 3, 4, 5};int[] copy = original.clone();배열 전체를 깊은 복사하는 가장 보편적인 방법새로운 메모리 공간에 값을 복사하므로 원본과 독립적2. Arrays.copyOf()int[] original = {1, 2, 3, 4, 5};int[] copy = Arrays.copyOf(original, original.length);배열을 처음부터 지정한 길이만큼 복사길이가 원본보다 크면 나머지는 0으로 채워짐Arrays.copyOf() 범위 초과 예시int[] original = {1, 2, 3};int[] cop..
[Java, String] split() 메서드 정리 - 문자열 자르기
·
Backend/Java
Java String split() 메서드 완벽 정리Java에서 문자열을 분할하는 가장 기본적이고 중요한 메서드인 split()에 대해 자세히 알아보겠습니다.이 메서드는 정규식을 사용하여 문자열을 배열로 분할하는 강력한 기능을 제공합니다.기본 문법과 매개변수public String[] split(String regex)public String[] split(String regex, int limit)regex: 분할 기준이 되는 정규식 (필수)limit: 분할 횟수 제한 (선택사항) limit 매개변수의 동작 방식limit > 0: 분할 횟수 제한String s = "a,b,c,d";String[] result = s.split(",", 3);// 결과: ["a", "b", "c,d"] - 최대 2번만 ..
[Java, Stack] 왜 Stack이 아닌 Deque로 스택을 구현해야 할까?
·
Backend/Java
Stack 클래스가 상속하고 있는 Vector가 문제가 되기 때문에 Deque 사용을 권장한다. ❌ Stack stack = new Stack();⭕ Deque stack = new ArrayDeque(); Vector는 자바 버전 1부터 있었던 굉장히 오래된 클래스이기 때문에 여러모로 취약점이 많다. 1️⃣Stack은 Vector를 상속받아 구현되어 있다.상속으로 부모 메서드를 공유하기 때문에 Stack을 사용자가 잘못되게 사용할 수 있는 문제가 발생한다.Vector에는 원하는 index에 객체를 끼워 넣을 수 있는 insertElementAt이라는 메서드가 존재한다.문제는 Stack이 Vector를 상속받았기 때문에 insertElementAt 사용이 가능하다는 점이다.후입 선출이 보장되어야 하..
[Java] StringTokenizer 란?
·
Backend/Java
1️⃣StringTokenizer이란문자열을 구분자를 이용하여 분리할 때 사용한다.공백 혹은 컴마를 기준으로 문자열을 분리하고 싶을 때, 아니면 특정 문자열을 나누고 싶을 때 StringTokenizer을 사용한다.주로 BufferedReader를 사용할 때 활용한다. 2️⃣생성하는 방식1. 띄어쓰기를 기준으로 문자열을 분리StringTokenizer st = new StringTokenizer(문자열);// StringTokenizer st = new StringTokenizer("aa bb cc");2. 구분자를 기준으로 문자열을 분리StringTokenizer st = new StringTokenizer(문자열, 구분자);// StringTokenizer st = new StringTokenizer..
[Java] BufferedReader, BufferedWriter 란?
·
Backend/Java
0️⃣사용 시 주의사항(1) 클래스를 import해주어야 한다.import java.io.IOException;(2) main 클래스 옆에 throws IOException를 작성한다.public static void main(String[] args) throws IOException {}1️⃣BufferedReader의 특징사용자가 요청할 때마다 데이터를 읽어 오는 것이 아닌 일정한 크기의 데이터를 한번에 읽어와 Buffer에 보관,사용자의 요청이 있을 때 버퍼에서 데이터를 읽어오는 방식대량의 입력 값에 대해 속도가 향상되고 시간 부하가 적다는 장점을 가진다.라인 단위로 입력값의 경계를 인식하기 때문에 공백의 경우에도 String으로 인식한다.입력받은 데이터 타입이 String타입이므로 다른 데이터 ..
[Java] 정렬 알고리즘 정리
·
Backend/Java
정렬선형 자료구조는 순서가 중요하다.정렬이란 순서를 바꾸는 것오름차순 정렬 ascending내림차순 정렬 descending알고리즘 별 성능표namebestaverageworstbubblenn^2n^2insertionnn^2n^2selectionn^2n^2n^2quicknlognnlognn^2mergenlognnlognnlogn1) bubble sort 버블정렬개념for문을 통해 가장 작은 값을 찾고, 맨 앞자리와 교환다음 for문에선 맨 앞자리 값을 제외한 값 중 가장 작은 값을 찾고, 두번째 앞자리와 교환이 작업을 최대 n - 1 번 반복하면 정렬 완료시간복잡도 : O(n^2)ex) 3 1 5 2 4 를 정렬한다고 가정1번째 loop ⇒ 31524 / 13524 / 13524 / 13524 1확정2번..