알아가기/Java 19

Java의 BigInteger 클래스

Java에서 정수는 기본적으로 int와 long 타입으로 표현된다. 그러나 이들 타입은 각각 32비트와 64비트의 크기 제한이 있어, 매우 큰 정수를 처리할 수 없다. 이를 해결하기 위해 Java는 java.math.BigInteger 클래스를 제공한다. 이 클래스는 임의의 크기를 가진 정수를 다룰 수 있도록 해주며, 기본적인 산술 연산, 비트 조작, 소수 판별 등의 기능이 가능하다.BigInteger는 불변 객체(immutable)로 설계되어, 객체의 상태를 변경하는 대신 새로운 객체를 생성하는 방식으로 동작한다. 따라서, BigInteger는 메모리와 성능 면에서 주의가 필요하지만, 큰 정수를 안전하게 처리할 수 있는 강력한 도구이다.

알아가기/Java 2024.11.25

[Java] ListIterator: 리스트 순회를 위한 양방향 인터페이스

ListIterator 는 List 컬렉션을 순회할 때 하용하는 인터페이스이다. ListIterator 를 사용하면 요소의 추가, 삭제, 이전 요소 및 다음 요소에 접근하는 등의 작업을 할 수 있다. ListIterator 주요 메서드 add(E e): 해당 리스트에 전달된 요소를 현재 커서 위치에 추가한다. hasNext(): 해당 리스트를 순방향으로 순회할 때 다음 요소가 있는지 확인한다. 다음 요소가 있으면 true를 반환한다. hasPrevious(): 해당 리스트를 역방향으로 순회할 때 이전 요소가 있는지 확인한다. 이전 요소가 있으면 true를 반환한다. next(): 리스트의 다음 요소를 반환하고, 커서의 위치를 순방향으로 이동한다. nextIndex(): next() 메소드를 호출하면 반환..

알아가기/Java 2024.04.01

[Java] MathContext 정확도를 조절하는 자바 클래스

MathContext는 자바의 java.math 패키지에 포함된 클래스로, BigDecimal 연산의 수학적 설정(정밀도와 반올림 모드)을 지정하는 데 사용된다. 정밀도(Precision)는 결과가 표현할 수 있는 최대 자릿수를 의미한다. 예를 들어, 정밀도가 5인 경우, 결과는 최대 5자리 숫자를 가질 수 있다. 반올림 모드(Rounding Mode)는 정밀도를 초과하는 숫자를 어떻게 처리할지 결정하는 규칙이다. 예를 들어, 반올림 모드가 HALF_UP인 경우, 소수점 이하의 숫자가 5 이상이면 올림하고, 그렇지 않으면 버림한다. MathContext는 이런 설정들을 모아둔 것으로, BigDecimal 연산 시에 이를 인자로 전달하여 연산 방식을 제어할 수 있다. 정밀도 사용 import java.ma..

알아가기/Java 2024.01.27

[Java] Arrays.stream() 및 sum() 메서드

Arrays.stream() 에 대해 Arrays.stream() 메서드는 Java 8에서 소개된 Arrays 클래스의 정적 메서드이다. - Arrays.stream() 메서드는 배열을 원시 타입에 따른 스트림으로 변환할 수 있다. (int, long, double) - 스트림은 일회성이므로 한 번 소비하면 재사용할 수 없다. - 배열의 요소를 변경하더라도, 스트림은 해당 변경을 반영한다 Arrays.stream().sum() 사용 예시 import java.util.Arrays; public class Main { static int[] numbers; public static void main(String[] args) { numbers = new int[] {1, 2, 3, 4, 5}; // 배열을..

알아가기/Java 2024.01.25

[Java] Arrays.stream() 및 Arrays.copyOfRange() 함수

Arrays.stream() Java8에서 소개된 메서드로, 배열을 스트림으로 변환하는 기능을 제공한다. 이 함수를 사용하면 배열의 각 요소를 순차적으로 처리하고 중간 또는 최종 연산을 수행할 수 있다. 스트림은 함수형 프로그래밍의 개념을 도입하여 코드를 더 간결하게 작성할 수 있게 해준다. stream() 예제 코드 1 import java.util.Arrays; import java.util.stream.IntStream; public class ArrayStreamExample { public static void main(String[] args) { int[] numbers = { 1, 2, 3, 4, 5 }; // 배열을 스트림으로 변환 IntStream stream = Arrays.strea..

알아가기/Java 2023.08.29

[Java] 토큰으로 분리하는 StringTokenizer

Java에서 제공하는 클래스인 `StringTokenizer`는 문자열의 형태를 지정된 구분자(delimiter)를 기준으로 하여 토큰(token) 형식으로 분리하는 역할을 한다. 이 클래스는 주로 텍스트 데이터를 파싱하거나 분리할 때 사용된다. `StingTokenizer`는 간단한 문자열 파싱에 유용하지만, 더 복잡한 문자열 처리는 String의 `split()` 메서드나 정규식을 사용하는 것이 더 적합할 수 있다. StringTokenizer 주요 메서드 hasMoreTokens(): 아직 처리하지 않은 토큰이 남아있는지 여부를 반환 nextToken(): 다음 토큰을 반환하고 내부 포인터를 다음으로 이동시킴 nextToken(String delimiter): 지정된 delimiter를 사용하여 다..

알아가기/Java 2023.08.27

[Java] compareTo() 메서드 이해하기

Java에서는 객체 간 비교를 위해 compareTo() 메서드를 제공한다. 이 메서드는 두 객체를 비교하여 정렬 순서를 결정하거나, 두 객체가 동일한지 확인하는 데 사용된다. compareTo() 메서드의 사용 방법과 예제 코드를 소개하고, 문자열 뿐만 아니라 숫자, 날짜 등 모든 비교 경우에 대한 동작에 대해 알아본다. compareTo() 메서드 반환 값 0을 반환: 두 객체가 동일한 경우 음수를 반환: 기준 객체가 비교대상 객체보다 작은 경우 양수를 반환: 기준 객체가 비교 대상 객체보다 큰 경우 compareTo() 예제 코드 import java.time.LocalDate; public class CompareToExample { public static void main(String[] ar..

알아가기/Java 2023.07.16

[Java] 조회값을 반환하거나 기본값을 반환하는 getOrDefault

getOrDefault 메서드 getOrDefault는 자바의 Map 인터페이스에서 제공하는 메서드 중 하나이다. 이 메서드는 주어진 키로 맵에서 값을 조회하고, 만약 해당 키가 존재하지 않을 경우 기본값을 반환한다. 다음은 getOrDefault 메서드의 시그니처이다. V getOrDefault(Object key, V defaultValue) - key: 조회할 키 - defaultValue: 키가 존재하지 않을 경우 반환할 기본값 동작 형태 etOrDefault 메서드는 다음과 같은 동작을 수행한다. 1. 맵에서 주어진 키(key)에 해당하는 값을 조회한다. 2. 만약 키가 존재하지 않으면, defaultValue를 반환한다. 3. 키가 존재하면, 해당 키에 매핑된 값을 반환한다. 예제 코드 imp..

알아가기/Java 2023.06.15

[Java] 중복 없는 해시 HashSet

HashSet HashSet은 Java 컬렉션 프레임워크에서 제공하는 클래스로, 중복된 요소를 허용하지 않는 집합(Set)을 구현한 것이다. HashSet은 해시 테이블(Hash Table)을 사용하여 요소를 저장하며, O(1)의 상수 시간 복잡도로 요소에 대한 삽입, 삭제, 검색 작업을 수행할 수 있다. HashSet 특징 new HashSet()는 기본 생성자를 호출하여 HashSet 객체를 생성한다. 는 제네릭(Generic) 타입을 나타내는 것으로, 여기서는 HashSet이 저장할 요소의 타입을 지정하는 역할을 한다. 예를 들어, new HashSet()는 String 요소를 저장하는 HashSet 객체를 생성한다. HashSet은 중복된 요소를 허용하지 않으므로, 요소의 중복 여부를 판단하기 위..

알아가기/Java 2023.05.28

[MySQL] 로그인 비밀번호 바꾸기 ver. 8.0.31

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 로컬 환경에서 Mac 과 Windows 를 번갈아 가며 MySQL 을 사용하는데 서로 비밀번호가 일치하지 않았다. 이 두 MySQL의 서로 다른 비밀번호를 일치시켜 주는 작업을 하게 되었고, 로컬에서만 교육적으로 사용하고 있기 때문에 최저 수준의 보안과 비밀번호 4 자리로 바꾸기로 하였다. 단순 검색을 통해 비밀번호 변경 명령어를 찾고, 4 자리로 바꾸려고 보니 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 에러를 출력하였다. MySQL 비밀번호 지정을 해둔..

알아가기/Java 2023.02.09