Java/Grammar 33

[Java] Checked, Unchecked Exception

Checked Exception✅ 정의컴파일 타임(Compile-time)에 체크되는 예외반드시 try-catch로 처리하거나 throws로 명시해야 함🔎 예제 : IOException (Checked Exception)public static void copy(String source, String target) throws IOException { Files.copy(new File(source).toPath(), new File(target).toPath(), StandardCopyOption.REPLACE_EXISTING);} ➡️ 설명Files.copy()는 파일이 존재하지 않거나 읽을 수 없는 경우 IOException을 던질 수 있음IOException은 Checked Exceptio..

Java/Grammar 2025.03.25

[Java 문법] @Builder

@Builder✅ @Builder란? • 생성자나 Setter를 사용하지 않고, 체인 형식으로 객체를 생성하는 패턴 • 객체가 불변(Immutable)하도록 설계 가능 • 필요한 값만 선택적으로 설정 가능예제📍 기존 방식 : 생성자 사용public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; }}User user = new User("Alice", 25); 🚨 문제점✔ 매개변수 순서를 기억해야 함✔ 필드를 선택적으로 설정하기 어려움✔ 코드 가독성이 떨어짐📍 @Builder 적용..

Java/Grammar 2025.03.19

[Java 문법] 불변 객체(Immutable Object)란? ft. 가변 객체

가변 객체(Mutable Object)가변 객체는 상태를 변경할 수 있는 객체입니다.✅ 가변 객체(Mutable Object) 예제public class MutableUser { private String name; private int age; public MutableUser(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; }}// 객체 생성 및 변경 가능MutableUse..

Java/Grammar 2025.03.18

[Java 문법] I/O Stream

I/O Stream자바(Java)는 파일 읽기와 쓰기, 네트워크 통신 등 데이터를 다룰 때 I/O Stream(입출력 스트림)을 사용합니다.I/O는 "Input/Output"의 약자로, 데이터를 입력하거나 출력하는 작업을 뜻합니다.Stream은 데이터를 한 방향으로 흐르게 하는 통로라고 생각하면 쉽습니다. 예를 들어, 수도관을 통해 물이 흐르듯, 데이터도 스트림을 통해 한쪽에서 다른 쪽으로 이동합니다. 1. Input Stream외부로부터 데이터를 읽어오는 통로ex. 파일에서 텍스트 읽기, 키보드 입력받기2. Output Stream 데이터를 외부로 내보내는 통로ex. 파일에 데이터 쓰기, 화면에 텍스트 출력하기특징스트림은 순차적으로 데이터 처리스트림은 데이터를 순차적으로 한 바이트 또는 한 문자씩 처리..

Java/Grammar 2025.02.24

[Java 문법] Overloading VS Overriding

Overloading VS OverridingJava는 객체지향 프로그래밍 언어로, 여러 메서드를 정의하거나 재정의할 수 있는 기능이 매우 중요합니다.특히 Overloading(오버로딩)과 Overriding(오버라이딩)은 코드의 유연성과 재사용성을 극대화하기 위해 자주 사용됩니다. 특징OverloadingOverriding정의메서드 이름은 동일하지만 매개변수가 다름부모 클래스의 메서드를 재정의적용 대상동일 클래스상속 관계결정 시점컴파일 시점실행 시점주요 목적메서드의 다양성 제공메서드의 동작 변경다형성 유형컴파일 타임 폴리모피즘런타임 폴리모피즘OverloadingOverloading은 같은 이름의 메서드를 매개변수(parameter)의 형태만 다르게 하여 여러 개 정의하는 것을 말합니다.하나의 메서드 이..

Java/Grammar 2025.02.23

[Java 문법] enum(enumerated type)

enumJava에서 enum은 열거형(enumeration)을 나타내는 특별한 데이터 타입입니다.특정 값들의 집합을 정의할 때 사용하며, 각 값은 enum 타입의 상수(constant)로 표현됩니다.예를 들어, 요일을 나타내기 위해 월, 화, 수, 목, 금, 토, 일을 열거할 수 있습니다. enum을 사용하면 코드의 가독성과 안정성을 높일 수 있으며, 특정 값들만 사용해야 하는 상황에서 오류를 줄일 수 있습니다.enum을 사용하는 이유1. 코드의 간결성(1) enum 사용 Xpublic class TrafficLight { public static final TrafficLight RED = new TrafficLight("RED"); public static final TrafficLight..

Java/Grammar 2025.02.14

[Java 문법] String.valueOf() VS toString()

String.valueOf()다양한 타입의 값을 문자열로 변환하는 정적(static) 메서드입니다. 1. 기본 타입(primitive type)을 문자열로 변환int number = 10;String strNumber = String.valueOf(number);// strNumber는 "10" 이라는 문자열을 갖게 됩니다. 2. 객체를 문자열로 변환Object obj = new Object();String strObj = String.valueOf(obj);// obj의 toString() 결과를 문자열로 반환합니다.// 만약 obj가 null이면 "null" 문자열을 반환합니다. 3. boolean 값 변환boolean flag = true;String strFlag = String.valueOf(f..

Java/Grammar 2025.01.18

[Java 문법] Class<?>

Class Java의 Class 객체를 제네릭으로 표현한 타입으로, 모든 클래스 타입을 안전하게 다룰 수 있는 방법입니다.는 제네릭의 와일드카드로, 모든 클래스 타입을 수용한다는 의미입니다.특정한 타입으로 제한하지 않고, 어떤 타입의 클래스라도 처리할 수 있도록 설계할 때 사용합니다.타입을 특정하지 않는 경우 일반적으로 Class를 사용할 수 있지만, Class를 사용하면 컴파일러가 타입을 명확하게 경고하거나 안전성을 보장합니다.Class VS ClassClass stringClass = String.class; // String 타입만 허용Class anyClass = String.class; // 모든 타입 허용// 특정 타입에 맞춘 제네릭 메서드public T getInstance(C..

Java/Grammar 2025.01.17

[Java 문법] Optinal 주요 Method

생성 1. Optional.of(value)null이 아닌 값을 포함하는 Optional 생성값이 null이면 NullPointerException 발생Optional name = Optional.of("John"); 2. Optional.ofNullable(value)값이 null일 수도 있는 Optional 생성값이 null이면 빈 Optional 반환Optional name = Optional.ofNullable(null); // 빈 Optional 생성 3. Optional.empty()빈 Optional 생성Optional empty = Optional.empty();값 확인 및 접근 1. boolean isPresent()값이 존재하면 true, 없으면 false를 반환Optional name..

Java/Grammar 2025.01.16

[Java 문법] Optional

Optional Optional은 값이 있을 수도 있고 없을 수도 있는 상황을 다루기 위해 Java에서 제공하는 클래스입니다.null 대신 사용하는 안전한 상자라고 생각하면 됩니다. NullPointerException(널 포인터 예외) 방지null을 반환하거나 체크하는 코드를 줄이고, 더 읽기 쉽고 안전한 코드를 작성동작  값을 상자에 담습니다.상자에 값이 있으면 그 값을 사용할 수 있고,값이 없으면 빈 상자라는 걸 명확히 알 수 있습니다.상자가 비었을 때 어떻게 처리할지 미리 정해둘 수 있습니다.기본값을 사용하거나,에러를 내거나,다른 대체 행동을 지정할 수 있습니다. 예시 1. 값이 있을 때Optional name = Optional.of("John"); // 값이 있는 상자if (name.isPr..

Java/Grammar 2025.01.15