본문 바로가기

Java11

[Java] 문자열을 대소문자 구분 없이 비교하는 방법, equalsIgnoreCase()와 compareToIgnoreCase() 차이점 Java를 개발하다 보면 두 문자열이 같은지 다른지 비교해야 되는 경우가 많이 있습니다. 이번 포스팅에서는 알파벳의 대소문자를 구분하지 않고 문자열을 비교하는 방법에 대해 설명드리겠습니다. Java의 String 클래스에서는 대소문자를 무시하고 문자열을 비교할 수 있는 equalsIgnoreCase 와 compareToIgnoreCase 두가지 메서드를 제공합니다. 두 메서드는 비슷하지만 목적과 반환값이 달라서 차이를 알고 사용하면 더 좋은 코드를 만들 수 있습니다.  1. equalsIgnoreCase() 사용String str1 = "Hello";String str2 = "hello";if (str1.equalsIgnoreCase(str2)) { System.out.println("두 문자열은 .. 2024. 10. 28.
[Java] ThreadLocal 은 무엇이고 왜 사용할까? 정의 ThreadLocal 이란 멀티 스레드 환경에서 각각의 스레드별로 저장 공간을 할당하여, 독립적인 값을 저장할 수 있게 해주는 기술 및 클래스를 말합니다.  사용 이유 Java 나 Spring의 멀티스레드 환경에서 어떤 클래스를 싱글톤으로 인스턴스를 하나 만들었다고 가정하겠습니다. (일반적인 Bean 도 예시가 될 수 있겠네요.) 이때 인스턴스의 필드나 static 공용 필드를 변경할 때 동기화 문제가 발생할 수 있습니다.  이는 여러 스레드에서 동시에 같은 필드(메모리 공간)를 접근하기 때문에 생기는 문제입니다. 이 문제를 가장 쉽게 해결하려면 각각의 공간을 만들고 각 스레드별로 자신의 저장 공간을 할당하면 됩니다   기본 개념 1. 독립성 : ThreadLocal 에 저장된 값은 해당 스레드에서.. 2024. 10. 27.
[Java] 스트림(Stream) [Java] 스트림(Stream) 정의 스트림은 통상적으로는 시내, 물줄기 등을 의미합니다. Java에서 스트림은 "데이터 처리 연산을 위해 데이터소스(컬렉션, 배열)에서 출력된 연속된 요소"라고 할 수 있습니다. Java8에서 추가된 기능으로 순회하는 연산을 복잡한 반복문(for, while 등)대신 간결한 함수형으로 표현할 수 있습니다. 또한 쓰레드를 이용한 병렬처리(Parallel)를 쉽게 구현할 수 있고, 많은 요소를 빠르게 처리할 수 있습니다. 특징 Java의 I/O Stream과 이름은 스트림으로 동일하나 전혀 다른 개념이다. 다양한 자료구조, 데이터소스(Map, Set, Array)를 동일한 방식으로 처리할 수 있다. 데이터를 담는 저장소(컬렉션)가 아닌 데이터 처리 과정을 의미한다. 원본 .. 2023. 1. 30.
[Java] String 문자열 비교할 때 equals() 와 contentEquals() 차이점 [Java] String 문자열 비교할 때 equals() 와 contentEquals() 차이점 Java에서 String 클래스의 equals()와 contentEquals() 메서드는 문자열을 비교할 때 사용합니다. 두 메소드가 비슷한 기능을 하는 것 같은데 정확히 어떤 차이점이 있는지 어느 상황에서 사용해야 하는지 알아보겠습니다. 우선 공통점은 둘 다 String 클래스의 public 메서드라는 것입니다. 그리고 해당 String 인스턴스의 문자열 값과 입력 매개변수의 문자열을 비교하여, 두 문자열이 정확히 같으면 true, 다르면 false를 반환하는 메서드입니다. equals() String 클래스도 기본적으로 Object 클래스를 상속받고 있으며 Object 클래스의 equals() 메서드를 .. 2023. 1. 3.
[Java] 현재 실행중인 클래스명, 메소드명 알아내기 [Java] 현재 실행중인 클래스명, 메소드명 알아내기 로깅 같은 기능을 개발하다 보면 현재 클래스명과 메소드명을 로그로 출력해야 되는 경우가 있습니다. 이때 문자열로 클래스명, 메소드명을 수동으로 입력하다 보면 실수나 오타가 발생할 수 있기 때문에 자동으로 알아낼 수 있다면 좋겠다고 생각했습니다. 방법은 여러가지 있을것 같은데 크게 두가지 방법을 설명드리겠습니다. 첫번째는 java의 리플렉션 기능을 이용하여 알아내는 방법입니다. public String exampleMethod() { String className = new Object(){}.getClass().getEnclosingClass().getSimpleName(); String methodName = new Object(){}.getCla.. 2022. 12. 29.