Java 107

String클래스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. String 클래스란?">String 클래스란?자바에서 문자열을 다룰 때 사용하는 가장 중요한 클래스입니다.String 클래스는 내부적으로 문자 배열(char[] value)을 사용하여 문자열을 저장합니다.다음과 같이 선언되어 있습니다: public final class String implements java.io.Serializable, Comparable { private char[] value;} 불변 객체 (Immutable)String 클래스는 불변 객체(immutable)입니다.문자열을 한 번 만들면 내용을 변경할 수 없습니다.예를 들어: String a = "a";String b = "b";a = a + b;이 코드는 a 문자..

Java 2025.06.22

Object클래스 메서드 - toString()

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.기본 설명toString() 메서드는 객체 정보를 사람이 읽을 수 있는 문자열 형태로 반환해 주는 메서드입니다.이 메서드는 Object 클래스에 정의되어 있으며, 모든 클래스의 조상이 Object이므로 모든 클래스는 기본적으로 toString() 메서드를 사용할 수 있습니다.그러나 Object 클래스의 기본 toString()은 의미 없는 문자열을 반환합니다.Object 클래스의 기본 toString() 구현public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());}예를 들어, 클래스 이름이 Card이고, 해시코드가 193a55라면:..

Java 2025.06.22

Object클래스의 메서드 - hashCode()

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.hashCode() 메서드란?해시코드란?해시코드(hash code)는 어떤 값을 고정된 길이의 숫자로 변환한 것입니다.주로 해시 기반 자료구조(예: HashMap, HashSet)에서 사용됨목적: 빠르게 값을 찾기 위해Object.hashCode() 기본 기능Object 클래스에 정의된 기본 hashCode()는 객체의 메모리 주소를 기반으로 해시값을 생성합니다.그래서 다른 객체는 서로 다른 해시코드를 가집니다. 예제 코드 설명public class Ex9_3 { public static void main(String[] args) { String str1 = new String("abc"); String str2 = ..

Java 2025.06.22

Object 클래스의 메서드 - equals()

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. equals() 메서드의 기본 동작 (기본 구현)Object 클래스의 equals() 메서드 기본 코드public boolean equals(Object obj) { return (this == obj);}equals() 메서드는 기본적으로 두 객체의 주소(참조값) 를 비교합니다.즉, this == obj일 때만 true를 반환하고, 나머지는 모두 false입니다.따라서 같은 내용의 값을 갖고 있어도 다른 객체이면 false가 됩니다. 예제 1 class Value { int value; Value(int value) { this.value = value; }}public class Ex9_1 { public..

Java 2025.06.22

Object클래스

java.lang 패키지란?패키지(Package)란?자바에서 관련된 클래스들을 묶어 놓은 것을 "패키지"라고 부릅니다.예: java.util, java.io, java.lang 등java.lang 패키지는?자바 프로그램에서 가장 기본적으로 필요한 클래스들을 모아놓은 패키지입니다.예: Object, String, System, Math, Integer 등특징java.lang 패키지는 자동으로 import됩니다.즉, import java.lang.String; 같은 문장을 안 써도 자동으로 사용할 수 있음.그래서 지금까지 다음과 같은 클래스들을 별도의 import 없이 쓸 수 있었던 것입니다.String str = "hello"; // java.lang.StringSystem.out.println(st..

Java 2025.06.22

연결된 예외

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 연결된 예외 (Chained Exception)어떤 예외가 발생했을 때, 그 예외 자체보다 더 근본적인 원인이 다른 예외일 수 있습니다.예를 들어:InstallException 예외가 발생했지만,실제 원인은 디스크 공간 부족(SpaceException) 이었을 수 있음이럴 때 InstallException 객체를 생성하고,그 원인으로 SpaceException을 연결해서 저장할 수 있습니다.=> 이렇게 예외 간의 관계를 만들어주는 것이 Chained Exception 입니다. 사용법예외 클래스에는 예외의 원인을 저장하기 위한 cause 필드가 존재두 가지 메서드 사용:initCause(Throwable cause)발생 원인 예외를 등록getCaus..

Java 2025.06.21

예외 되던지기

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.예외 되던지기 (Exception Re-throwing)어떤 메서드에서 예외가 발생했을 때, 그 메서드 안에서 try-catch로 예외를 한 번 잡고,그 예외를 다시 다른 곳(main 등)에서 처리하고 싶을 수 있습니다.이럴 때 catch 블록 안에서 throw를 다시 사용해서 예외를 되던지기할 수 있습니다.이렇게 되던지기 하려면 해당 메서드에 반드시 throws로 예외 선언도 해야 합니다. 예제1public static void main(String[] args) { try { method1(); // 예외 발생한 메서드 호출 } catch (Exception e) { System.out.println("main..

Java 2025.06.21

사용자 정의 예외

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 자바에는 기본적으로 많은 예외 클래스(NullPointerException, IOException 등)가 정의되어 있지만,프로그래머가 자신의 상황에 맞는 특별한 예외를 직접 만들 수 있습니다.이렇게 만든 예외 클래스를 사용자 정의 예외라고 합니다. 사용자 정의 예외 만드는 방법기본적으로 다음 두 가지 중 하나를 상속받아 만듭니다:Exception 클래스를 상속 → checked 예외RuntimeException 클래스를 상속 → unchecked 예외 기본 사용자 정의 예외 클래스class MyException extends Exception { MyException(String msg) { super(msg); // 부모(Exc..

Java 2025.06.21

Checked예외, Unchecked예외

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. Checked 예외: 컴파일 시에 반드시 예외 처리를 해야 하는 예외→ Exception 클래스의 자손 중에서 RuntimeException을 제외한 것들Unchecked 예외: 컴파일러가 예외 처리를 강제하지 않는 예외→ RuntimeException 클래스와 그 자손들 checked 예외 (컴파일 오류 발생)class Ex8_7 { public static void main(String[] args) { throw new Exception(); // Exception을 고의로 발생시킨다. }}결과: 컴파일 오류 발생Exception은 checked 예외입니다.이 말은 "컴파일 시점에 컴파일러가 반드시 try-catch 처..

Java 2025.06.21

try-catch가 동작하는 내부 구조

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.기본 구조try { // 예외가 발생할 수 있는 코드} catch (예외타입1 변수명) { // 예외타입1에 해당하는 예외를 처리} catch (예외타입2 변수명) { // 예외타입2에 해당하는 예외를 처리} 예외 발생 → 처리 과정 (내부 동작 흐름)예: int x = 10 / 0; 수행 시 → ArithmeticException 발생이때 자바는 다음과 같이 동작합니다: [1] 예외 객체 생성JVM이 new ArithmeticException("/ by zero") 객체를 생성함[2] catch 블록을 위에서부터 아래로 순서대로 검사 if (예외객체 instanceof 예외타입1) { // 이 catch 블록으로 진입 예..

Java 2025.06.21