방법 1: 문자 배열(Character Array)로 직접 조립하기두 문자열의 문자를 하나씩 옮겨 담아 새로운 문자열을 만드는 가장 기본적인 방식입니다. 동작 원리를 이해하는 데 도움이 되며, 별도의 클래스 없이 순수 배열 연산만으로 처리할 수 있습니다.두 개의 문자열을 준비합니다. 원본 문자열을 str1, str1의 맨 앞에 삽입할 문자열을 str2라고 가정합니다.두 문자열 길이의 합(str1.length() + str2.length())을 크기로 하는 char 배열을 생성합니다.배열의 0번째 인덱스부터 차례대로 str2의 문자들
Jackson API는 JSON 데이터를 다루기 위한 다양한 메서드를 제공합니다. Jackson API를 활용하면 Java 객체를 JSON 문자열로 변환하거나, 반대로 JSON 문자열에서 객체를 복원할 수 있습니다.만약 기본 직렬화 방식이 아닌 나만의 규칙으로 객체를 JSON으로 변환하고 싶다면 사용자 정의 직렬화기(Custom Serializer)를 구현해야 합니다. 이때 StdSerializer 클래스를 상속받고, serialize(T value, JsonGenerator gen, SerializerProvider provide
StringBuffer 클래스 활용하기 StringBuffer를 사용하면 문자열을 한 글자씩 검사하면서 원하는 위치에 새로운 문자를 손쉽게 추가할 수 있습니다. 각 대문자 앞에 밑줄(_)을 삽입하는 절차는 다음과 같습니다. 빈 StringBuffer 객체를 생성합니다. Character 클래스의 isUpperCase() 메서드는 인자로 받은 문자가 대문자이면 true를 반환합니다. 이 메서드를 이용해 문자열의 모든 문자를 하나씩 검사합니다. 검사한 문자가 대문자라면, append() 메서드로 해당 문자 앞에 밑줄을 먼저 추가한
Java의 replaceAll() 메서드로 파일 내 문자열 삭제하기replaceAll() 메서드는 정규 표현식(regular expression)과 문자열(String)을 매개변수로 받아, 현재 문자열의 내용이 주어진 정규 표현식과 일치할 경우 일치된 부분을 지정한 문자열로 대체합니다.이 메서드를 활용하여 파일에서 특정 문자열을 삭제하려면 아래 세 가지 단계를 수행하면 됩니다.파일의 전체 내용을 문자열(String) 형태로 읽어옵니다.replaceAll() 메서드를 사용하여 삭제하고 싶은 단어를 빈 문자열()로 대체합니다.대체가 완
Java에서 Jackson 라이브러리를 사용해 객체를 JSON으로 직렬화할 때, 기본적으로 속성 순서는 클래스 내부 구조에 따라 결정됩니다. 하지만 @JsonPropertyOrder 어노테이션을 사용하면 원하는 순서대로 속성을 직렬화할 수 있습니다.@JsonPropertyOrder란?@JsonPropertyOrder는 클래스 레벨(class-level)에서 사용되는 어노테이션입니다. 이 어노테이션은 필드 이름들의 목록을 속성 값으로 받으며, 객체가 JSON 문자열로 직렬화될 때 각 필드가 출력되는 순서를 정의합니다.어노테이션 선언에
내장 reverse() 메서드 사용하기StringBuffer 클래스는 reverse()라는 메서드를 제공합니다. 이 메서드는 현재 StringBuffer 객체의 내용을 뒤집은 후, 그 결과를 담은 새로운 StringBuffer 객체를 반환합니다. Java에서 문자열(String)을 뒤집는 가장 간단하고 손쉬운 방법입니다. 사용 절차는 다음과 같습니다.뒤집고자 하는 문자열을 매개변수로 전달하여 StringBuffer 객체를 생성합니다.생성된 객체에서 reverse() 메서드를 호출합니다.toString() 메서드를 사용하여 결과를 다
여러 개의 텍스트 파일에 흩어져 있는 내용을 하나의 파일로 합쳐야 하는 경우가 종종 있습니다. 이 글에서는 Java의 Scanner와 FileWriter 클래스를 활용하여 두 개 이상의 파일을 한 줄씩 번갈아 읽어 세 번째 파일에 병합하는 방법을 소개합니다. 예제 입력 파일 설명을 위해 다음과 같이 세 개의 파일이 준비되어 있다고 가정하겠습니다. output1.txt Hello how are you output2.txt Welcome to Tutorialspoint output3.txt We provide simply easy le
D 드라이브에 ExampleDirectory라는 이름의 폴더가 있고, 그 안에는 7개의 파일과 2개의 하위 디렉터리가 있다고 가정해 보겠습니다.각 하위 디렉터리의 구성은 다음과 같습니다.SampleDirectory1에는 SampleFile1.txt와 SampleFile2.txt 두 개의 파일이 들어 있습니다.SampleDirectory2에는 SampleFile2.txt와 SampleFile3.txt 두 개의 파일이 들어 있습니다.동작 원리이 프로그램은 java.io.File 클래스의 listFiles() 메서드를 활용합니다. 이 메
D 드라이브에 ExampleDirectory라는 폴더가 있고, 그 안에 파일 7개와 디렉터리 2개가 들어 있다고 가정해 보겠습니다. 디렉터리 구조 살펴보기 SampleDirectory1 — SampleFile1.txt, SampleFile2.txt 두 개의 파일이 포함되어 있습니다. SampleDirectory2 — SampleFile2.txt, SampleFile3.txt 두 개의 파일이 포함되어 있습니다. 이번 글에서는 이 디렉터리와 하위 디렉터리에 있는 파일만 전부 삭제하고, 폴더 자체는 그대로 유지하는 방법을 알아보겠
System.out 필드와 표준 출력 스트림System 클래스의 out 필드는 표준 출력 스트림을 나타내며, PrintStream 클래스의 객체입니다.이 객체의 println() 메서드는 Java에서 유효한 모든 타입의 값을 인자로 받아 출력한 뒤 줄바꿈을 수행합니다.기본적으로 Java에서는 콘솔(화면)이 표준 출력 스트림(System.out)으로 설정되어 있습니다. 따라서 System.out.println() 메서드에 문자열 값을 전달하면 해당 문자열이 콘솔에 그대로 출력됩니다.System.out.println() 출력을 파일로
소수(prime number)란 1보다 큰 자연수 중에서 약수가 오직 1과 자기 자신뿐인 수를 말합니다. 즉, 이 두 숫자 외에는 양의 약수를 가지지 않습니다. 예를 들어 7은 1 × 7로만 표현할 수 있으므로 소수입니다.소수 판별 알고리즘어떤 수가 소수인지 아닌지 확인하는 기본적인 알고리즘은 다음과 같습니다.정수 변수 A에 검사할 숫자를 저장합니다.A를 2부터 A-1까지의 값으로 나누어 봅니다.이 범위 내의 어떤 값으로도 나누어 떨어진다면 A는 소수가 아닙니다.나누어 떨어지는 값이 하나도 없다면 A는 소수입니다.예제 코드아래 자바
Java 객체를 JSON으로 변환할 때 외부에 노출하고 싶지 않은 필드가 있을 수 있습니다. 이럴 때 Jackson 라이브러리에서 제공하는 @JsonIgnore 어노테이션을 사용하면 간단하게 해결할 수 있습니다.@JsonIgnore 어노테이션이란?@JsonIgnore는 클래스 내부의 특정 필드 수준(field level)에 적용할 수 있는 어노테이션으로, 직렬화(Serialization)와 역직렬화(Deserialization) 두 과정 모두에서 해당 필드를 무시하도록 지정합니다. 즉, 객체를 JSON으로 변환할 때 해당 필드는 출
Jackson 라이브러리는 유연한 JSON 직렬화와 역직렬화를 위해 다양한 어노테이션을 제공하는데, 그중에서도 동적인 속성을 다룰 때 특히 유용한 것이 @JsonAnyGetter와 @JsonAnySetter입니다. @JsonAnyGetter와 @JsonAnySetter란? @JsonAnyGetter 어노테이션은 JSON으로 직렬화하고 싶은 속성들을 하나의 Map 객체에 컨테이너 형태로 담아 처리할 수 있도록 해줍니다. Map에 담긴 모든 항목들은 직렬화 시 개별 JSON 속성처럼 출력됩니다. 반면 @JsonAnySetter 어노테이
자바에서 임의 정밀도 정수를 다룰 때 사용하는 java.math.BigInteger 클래스는 Java의 모든 기본 정수 연산자와 java.lang.Math의 주요 메소드에 대응하는 기능을 제공합니다. 특히 이 클래스에는 숫자가 소수인지 검사하는 메소드와, 그보다 큰 다음 소수를 찾아주는 메소드가 내장되어 있어 별도의 알고리즘 구현 없이도 손쉽게 소수 관련 작업을 처리할 수 있습니다.1. isProbablePrime() – 소수 여부 확인하기isProbablePrime() 메소드는 신뢰도(certainty)를 나타내는 정수 값을 매개
java.net 패키지의 URL 클래스는 월드 와이드 웹(www)상의 리소스(파일, 디렉터리 또는 참조)를 가리키는 통합 자원 위치(Uniform Resource Locator)를 표현합니다. 이 클래스가 제공하는 openStream() 메서드는 현재 객체가 나타내는 URL에 대한 연결을 열고, 해당 URL로부터 데이터를 읽을 수 있는 InputStream 객체를 반환합니다. 따라서 URL 클래스를 사용해 웹 페이지의 내용을 읽으려면 다음 세 단계만 거치면 됩니다. 읽고자 하는 웹 페이지의 URL을 생성자 매개변수로 전달하여 ja
parseDouble() 메서드 사용하기java.lang.Double 클래스의 parseDouble() 메서드는 String 값을 매개변수로 받아 이를 해석한 뒤, 해당 문자열이 나타내는 double 값을 반환합니다.이 메서드에 null 값을 전달하면 NullPointerException이 발생하며, 주어진 문자열을 double 값으로 파싱할 수 없는 경우에는 NumberFormatException이 발생합니다.따라서 특정 문자열이 double로 변환 가능한지 확인하려면 해당 문자열을 parseDouble() 메서드에 전달하고, 이
Runtime 클래스 활용하기Java는 java.lang.Runtime이라는 클래스를 기본으로 제공하며, 이 클래스를 사용하면 현재 실행 환경(시스템)과 상호작용할 수 있습니다.이 클래스의 정적(static) 메서드인 getRuntime()은 현재 애플리케이션에 연결된 Runtime 객체를 반환합니다. 또한 exec() 메서드는 실행하고자 하는 명령어를 문자열(String) 값으로 받아 현재 시스템에서 해당 프로세스를 실행합니다.따라서 Runtime 클래스를 사용해 외부 애플리케이션을 실행하려면 다음 두 단계만 거치면 됩니다.get
자바의 java.lang 패키지에 속한 Boolean 클래스는 parseBoolean()과 valueOf()라는 두 가지 메서드를 제공합니다.parseBoolean(String s) − 이 메서드는 String 변수를 매개변수로 받아 boolean 값을 반환합니다. 주어진 문자열이 true(대소문자 구분 없음)라면 true를 반환하고, 값이 null이거나 false 혹은 다른 어떤 값이라도 false를 반환합니다.valueOf(String s) − 이 메서드는 String 값을 받아 파싱한 뒤, 주어진 값에 따라 Boolean 클래
Java에서 숫자 값들이 공백으로 구분되어 들어 있는 문자열을 정렬하려면, 문자열을 개별 토큰으로 분리한 뒤 각각을 정수로 변환하고, 마지막으로 배열을 오름차순으로 정렬하면 됩니다. 전체 과정은 다음과 같습니다.정렬 절차문자열 준비: 정렬할 숫자들이 포함된 문자열을 가져옵니다.정수 배열 생성: 변환된 값을 저장할 빈 int 배열을 만듭니다.split() 메서드: String 클래스의 split() 메서드는 구분자 역할을 하는 문자열을 인수로 받아, 현재 문자열을 토큰 배열로 분할합니다. 이 메서드를 사용해 주어진 문자열을 공백 기준
Java에서 문자열이 알파벳(영문자)으로만 구성되어 있는지 검증하는 방법은 크게 두 가지가 있습니다. 첫 번째는 문자열의 각 문자를 영어 알파벳 대소문자와 하나씩 비교하는 방식이고, 두 번째는 정규 표현식(Regular Expression)을 활용하는 방식입니다.방법 1: 각 문자를 직접 비교하는 방식아래 예제는 사용자로부터 문자열(이름)을 입력받은 후, 문자열의 각 문자를 영어 알파벳(a~z, A~Z)과 비교하여 해당 문자열이 올바른 이름인지 판별합니다.import java.util.Scanner; public class Vali