반응형

JAVA 374

자바 java.util.Scanner클래스

java.util.Scanner 클래스는 Java에서 표준 입력에서 사용자로부터 다양한 형식의 입력을 읽어오기 위한 클래스입니다. 주로 콘솔에서 키보드로부터 데이터를 읽어오는 데 사용됩니다. Scanner 클래스의 주요 메서드 1. Scanner(InputStream source) 생성자 System.in 등의 입력 스트림을 사용하여 Scanner 객체를 생성합니다. import java.util.Scanner; import java.io.InputStream; public class ScannerExample { public static void main(String[] args) { // 표준 입력(System.in)을 사용하여 Scanner 객체 생성 Scanner scanner = new Scan..

JAVA/포스팅 2023.11.15

자바 java.util.regex패키지

java.util.regex 패키지는 정규 표현식을 사용하여 문자열을 검색, 매치, 대체하는 기능을 제공하는 Java의 패키지입니다. 정규 표현식(Regular Expression 또는 RegEx)은 문자열의 패턴을 표현하는 강력한 도구로, 검색, 매치, 대체, 분할 등의 문자열 조작 작업에 유용합니다. 주요 클래스 및 인터페이스 1. Pattern 클래스 - 정규 표현식 패턴을 나타내는 클래스입니다. - compile(String regex) 메서드를 통해 정규 표현식을 컴파일하여 Pattern 객체를 생성합니다. import java.util.regex.*; public class RegexExample { public static void main(String[] args) { // 정규 표현식 패..

JAVA/포스팅 2023.11.15

자바 java.util.Random클래스

java.util.Random 클래스는 난수를 생성하기 위한 클래스로, 의사 난수 생성기를 제공합니다. 여러 애플리케이션에서 난수가 필요한 경우에 사용됩니다. 다음은 주요 메서드와 사용법에 대한 간단한 설명입니다. 주요 메서드 1. nextInt() 메서드 int 범위 내의 난수를 반환합니다. Random random = new Random(); int randomNumber = random.nextInt(); // int 범위 내의 난수 2. nextInt(int bound) 메서드 0부터 bound 사이(제외)의 난수를 반환합니다. Random random = new Random(); int randomNumberInRange = random.nextInt(10); // 0부터 9까지의 난수 3. n..

JAVA/포스팅 2023.11.15

자바 java.util.Objects클래스

java.util.Objects 클래스는 Java 7에서 추가된 유틸리티 클래스로, 객체 조작에 유용한 메서드들을 제공합니다. 이 클래스는 null 처리와 관련된 다양한 유틸리티 메서드를 제공하여 코드를 간결하게 작성하고 예외를 방지하는 데 도움이 됩니다. 주요 메서드들은 다음과 같습니다. 1. requireNonNull(T obj) 메서드 주어진 객체가 null이 아닌지 확인하고, 만약 null이면 NullPointerException을 발생시킵니다. Objects.requireNonNull(obj); // obj가 null이면 NullPointerException 발생 2. requireNonNull(T obj, String message) 메서드 객체가 null인 경우 지정된 메시지를 가진 Null..

JAVA/포스팅 2023.11.15

자바 오토박싱(auto-boxing)과 언박싱(unboxing)

오토박싱(auto-boxing)과 언박싱(unboxing)은 기본 데이터 타입과 그에 대응하는 래퍼 클래스 간의 자동 변환을 의미합니다. 이 기능은 Java 5부터 도입되었습니다. 1. 오토박싱 (Auto-boxing) 오토박싱은 기본 데이터 타입의 값을 자동으로 래퍼 클래스로 변환하는 과정입니다. 이는 대입 연산, 메서드 호출, 연산 등에서 발생할 수 있습니다. // 예제 1: 대입 연산 int primitiveInt = 42; Integer wrapperInt = primitiveInt; // int를 Integer로 자동 변환 (오토박싱) // 예제 2: 메서드 호출 void processInteger(Integer num) { // ... } processInteger(primitiveInt); ..

JAVA/포스팅 2023.11.15

자바 래퍼(wrapper) 클래스

자바의 래퍼(wrapper) 클래스는 기본 데이터 타입(primitive data type)을 객체로 감싸는 역할을 합니다. 기본 데이터 타입은 값 자체를 저장하고 있는 반면, 래퍼 클래스는 해당 값을 감싸고 있는 객체입니다. 래퍼 클래스는 주로 객체가 필요한 상황에서 기본 데이터 타입을 사용할 수 있도록 해줍니다. 래퍼 클래스의 종류는 다음과 같습니다. 1. 정수형 래퍼 클래스 Byte, Short, Integer, Long 예를 들어, int를 객체로 사용하려면 Integer 클래스를 사용합니다. int primitiveInt = 42; Integer wrapperInt = Integer.valueOf(primitiveInt); // 기본 타입을 래퍼 클래스로 변환 2. 실수형 래퍼 클래스 Float..

JAVA/포스팅 2023.11.15

자바 Math클래스

Math 클래스는 자바에서 수학적인 연산을 수행하기 위한 메서드들을 제공하는 유틸리티 클래스입니다. 이 클래스는 java.lang 패키지에 속해 있어 별도의 import 없이 사용할 수 있습니다. 주요 기능은 다음과 같습니다. 1. 기본 수학 연산 Math 클래스는 기본적인 수학 연산을 수행하는 메서드를 제공합니다. 이러한 메서드는 대부분 static으로 선언되어 있어 클래스 이름을 통해 직접 호출할 수 있습니다. double absoluteValue = Math.abs(-5.67); // 절댓값 double powerResult = Math.pow(2, 3); // 지수 계산 (2^3) double squareRoot = Math.sqrt(25); // 제곱근 2. 삼각 함수 삼각 함수에 대한 메서드도..

JAVA/포스팅 2023.11.15

자바 StringBuilder클래스

StringBuilder 클래스는 문자열을 가변적으로 처리하기 위한 클래스로, 문자열을 변경할 수 있는 메서드를 제공합니다. StringBuilder 클래스는 StringBuffer와 유사하지만, StringBuilder는 스레드 동기화가 고려되어 있지 않기 때문에 단일 스레드 환경에서 사용할 때 더 효율적입니다. 주요 특징과 메서드는 다음과 같습니다. 1. 가변성 (Mutable) StringBuilder 객체는 내부의 문자열을 변경할 수 있습니다. 이는 String 클래스와 대조적입니다. 2. 동기화 (Non-synchronized) StringBuilder 클래스는 스레드 동기화가 고려되어 있지 않기 때문에 단일 스레드 환경에서 사용할 때 더 효율적입니다. 멀티스레드 환경에서는 StringBuffe..

JAVA/포스팅 2023.11.15

자바 StringBuffer클래스

StringBuffer 클래스는 가변(mutable)하며, 문자열을 동적으로 변경할 수 있는 클래스입니다. StringBuffer는 String 클래스와 유사하지만, String이 불변(immutable)한 반면에 StringBuffer는 가변하다는 차이가 있습니다. 이 클래스는 스레드에 안전(thread-safe)하도록 구현되어 있어 멀티스레드 환경에서 안전하게 사용할 수 있습니다. 주요 특징 1. 가변성(Mutable) StringBuffer 객체는 생성된 후에도 내용을 변경할 수 있습니다. 따라서 문자열을 동적으로 조작할 수 있습니다. 2. 동기화(Synchronization) StringBuffer는 동기화된 메서드로 구성되어 있어 여러 스레드에서 안전하게 사용할 수 있습니다. 하지만, Java ..

JAVA/포스팅 2023.11.15

자바 String클래스

java.lang.String 클래스는 Java에서 문자열을 나타내는 클래스로 매우 중요하며 자주 사용됩니다. 이 클래스는 불변(immutable)하며, 문자열에 대한 다양한 작업을 수행할 수 있는 다양한 메서드를 제공합니다. 불변성은 한 번 생성된 문자열은 변경할 수 없다는 의미이며, 변경이 필요한 경우 새로운 문자열을 생성합니다. 주요 특징 1. 불변성(Immutable) String 객체는 한 번 생성되면 그 값을 변경할 수 없습니다. 즉, 생성된 문자열의 내용을 수정할 수 없습니다. 2. 문자열 리터럴 문자열 리터럴은 프로그램에서 문자열을 만드는 간편한 방법입니다. 예를 들면 "Hello, World!"와 같은 것이 문자열 리터럴입니다. 3. 메서드 체이닝(Method Chaining) Strin..

JAVA/포스팅 2023.11.15

자바 java.lang패키지

java.lang 패키지는 Java 언어의 핵심 클래스들을 포함하는 패키지로, Java 프로그래밍에서 기본적으로 필요한 클래스들이 위치합니다. java.lang 패키지의 클래스들은 자동으로 import되기 때문에 별도의 import문 없이 사용할 수 있습니다. 주요 클래스와 인터페이스는 다음과 같습니다. Object 클래스 - java.lang.Object 클래스는 모든 클래스의 최상위 클래스입니다. - 다른 클래스들이 이 클래스를 상속받아 객체 지향 프로그래밍의 기본 메서드를 사용할 수 있습니다. (toString(), equals(), hashCode() 등) Class 클래스 - java.lang.Class 클래스는 클래스의 메타데이터를 제공합니다. - 클래스의 이름, 패키지, 메서드, 필드 등을 ..

JAVA/포스팅 2023.11.15

자바 연결된 예외 (chained exception)

Chained Exception은 하나의 예외가 다른 예외와 연결된 경우를 나타냅니다. 이것은 예외가 발생한 원인을 명확하게 추적하고 디버깅할 때 유용합니다. Java에서는 Throwable 클래스의 생성자 중 하나를 사용하여 Chained Exception을 생성할 수 있습니다. 아래는 Chained Exception을 생성하고 사용하는 간단한 예제입니다. public class ChainedExceptionExample { public static void main(String[] args) { try { // 첫 번째 예외 발생 throwExceptionOne(); } catch (Exception e) { // 두 번째 예외를 발생시키면서 첫 번째 예외를 Chained Exception으로 설정 ..

JAVA/포스팅 2023.11.15

자바 예외 되던지기

예외를 다시 던지는(re-throwing) 것은 메서드 내에서 발생한 예외를 현재 메서드에서 처리하지 않고 호출자에게 전달하는 것을 의미합니다. 이것은 예외를 메서드 내에서 처리할 필요가 없거나 특정 조건에 따라 예외를 다시 던져야 하는 경우에 사용됩니다. 예외를 다시 던지려면 throw 키워드를 사용하면 됩니다. 주로 catch 블록 내에서 예외를 캐치한 후에 다시 던지는 경우가 많습니다. 이는 예외를 처리하고 호출자에게 전파하는 것을 가능하게 합니다. 다음은 간단한 예제입니다. // 사용자 정의 예외 클래스 class MyException extends Exception { public MyException(String message) { super(message); } } // 메서드에서 예외를 던..

JAVA/포스팅 2023.11.15

사용자정의 예외

사용자 정의 예외(또는 커스텀 예외)는 프로그래머가 필요에 따라 직접 만든 예외입니다. 기본적으로 제공되는 예외 클래스들이 어플리케이션에서 발생하는 모든 예외를 다룰 수는 있지만, 때로는 특정한 예외 상황을 잘 표현하기 위해 사용자 정의 예외를 만들어 사용하는 것이 유용할 수 있습니다. 사용자 정의 예외 클래스를 만들기 위해서는 Exception 클래스를 상속받아 새로운 예외 클래스를 작성합니다. 주로 예외의 특정한 세부 정보를 포함하거나 특별한 로직을 추가할 때 사용됩니다. 다음은 간단한 사용자 정의 예외 클래스의 예제입니다. // 사용자 정의 예외 클래스 class MyCustomException extends Exception { // 생성자를 통해 예외 메시지 초기화 public MyCustomE..

JAVA/포스팅 2023.11.15

자바 try-with-resources문

try-with-resources 문은 자바 7부터 도입된 기능으로, 리소스 관리를 간편하게 처리할 수 있도록 도와줍니다. 주로 I/O 작업과 같이 명시적으로 닫아주어야 하는 리소스를 사용할 때 유용합니다. try-with-resources 문을 사용하면 AutoCloseable 인터페이스를 구현한 객체를 try 블록 안에서 사용하고, try 블록이 종료될 때 자동으로 close() 메서드가 호출됩니다. 다음은 try-with-resources 문의 기본 구문입니다. try (ResourceType1 resource1 = new ResourceType1(); ResourceType2 resource2 = new ResourceType2(); // ... 추가 리소스 타입 및 객체들) { // 리소스 사용..

JAVA/포스팅 2023.11.15

자바 finally블럭

finally 블록은 자바에서 예외 처리를 위한 try-catch 구문과 함께 사용되며, try 블록에서 예외가 발생하든 발생하지 않든 반드시 실행되어야 하는 코드를 담고 있습니다. finally 블록은 try 블록과 catch 블록 다음에 나타납니다. finally 블록의 주요 특징은 다음과 같습니다. 1. 반드시 실행되는 코드 finally 블록에 포함된 코드는 예외 발생 여부와 상관없이 항상 실행됩니다. 2. 예외 발생 여부와 상관 없이 실행 finally 블록은 try 블록에서 예외가 발생하더라도 발생하지 않더라도 반드시 실행됩니다. 3. 자원 해제 등의 작업에 유용 주로 리소스를 해제하는 등의 작업을 수행할 때 활용됩니다. finally 블록의 구문은 다음과 같습니다. try { // 예외가 발..

JAVA/포스팅 2023.11.14

자바 메서드에 예외 선언하기

자바에서 메서드에 예외를 선언하는 것은 해당 메서드에서 발생할 수 있는 예외를 명시적으로 선언하는 것을 의미합니다. 메서드가 어떤 예외를 던질 수 있는지를 명시함으로써 메서드를 사용하는 개발자에게 어떤 예외에 대비해야 하는지 알려줍니다. 메서드에 예외를 선언하는 방법은 다음과 같습니다. public returnType methodName(parameters) throws ExceptionType1, ExceptionType2, ... { // 메서드 내용 } 여기서 throws 키워드를 사용하여 예외를 선언하고, 선언된 예외 타입은 해당 메서드에서 발생할 수 있는 예외의 종류를 나타냅니다. 여러 예외가 발생할 수 있는 경우 쉼표로 구분하여 나열할 수 있습니다. 예를 들어, 파일에서 데이터를 읽는 메서드에..

JAVA/포스팅 2023.11.14

자바 예외 발생시키기

자바에서는 throw 키워드를 사용하여 예외를 발생시킬 수 있습니다. 이를 통해 개발자가 직접 예외를 생성하고 처리할 수 있습니다. throw를 사용해 예외를 발생시키는 과정은 다음과 같습니다. 1. 예외 클래스 생성 예외를 발생시키려면 해당 예외 클래스의 객체를 생성해야 합니다. 일반적으로 Exception 클래스 또는 그 하위 클래스의 객체를 생성합니다. 2. 예외 객체에 정보 설정 생성한 예외 객체에 예외에 관한 정보를 설정합니다. 이는 필요에 따라 예외의 메시지, 원인 등을 설정하는 것입니다. 3. throw 문을 통한 예외 발생 throw 문을 사용하여 예외 객체를 명시적으로 발생시킵니다. throw 다음에는 발생시킬 예외 객체가 위치합니다. 4. 메서드에서 예외 선언 또는 try-catch 블..

JAVA/포스팅 2023.11.14

자바 예외의 발생과 catch블럭

자바에서 예외가 발생하면 프로그램의 실행 흐름이 중단되고, 해당 예외를 처리할 수 있는 catch 블록이 찾아지기까지 메서드 호출 스택을 따라 올라갑니다. 여기에서는 예외의 발생과 catch 블록의 동작에 대해 자세히 설명합니다. 예외의 발생 1. 예외 발생 시점 - 예외는 프로그램 실행 중에 오류 상황이 발생할 때, 예를 들어 잘못된 연산, 배열 범위 초과, 파일이 없는 등의 상황에서 발생합니다. - 예외는 실행 시(runtime)에 발생하며, 컴파일 시에 예측할 수 없는 상황에서 발생하는 런타임 예외(Runtime Exception)과 컴파일 시에 예측 가능한 예외를 나타내는 체크된 예외(Checked Exception)로 나뉩니다 2. 예외 객체 생성 예외가 발생하면 해당 예외를 나타내는 객체가 생..

JAVA/포스팅 2023.11.14

자바 try-catch문에서의 흐름

자바의 try-catch 문에서의 흐름은 다음과 같습니다. 1. try 블록 진입 try 블록은 예외가 발생할 수 있는 코드를 포함합니다. 이 블록이 실행됩니다. 2. 예외 발생 여부 확인 try 블록 내에서 예외가 발생하는 경우, 해당 예외가 발생한 지점에서 코드의 실행이 중단되고 예외 객체가 생성됩니다. 3. 적절한 catch 블록 탐색 예외가 발생하면 자바는 try 블록에서 발생한 예외와 일치하는 첫 번째 catch 블록을 찾습니다. 예외 타입이 일치하면 해당 catch 블록이 실행됩니다. 4. catch 블록 실행 예외와 일치하는 catch 블록이 찾아지면 해당 블록이 실행됩니다. 예외를 처리하는 코드가 포함되어 있습니다. 만약 예외와 일치하는 catch 블록을 찾지 못하면 예외는 다음 레벨의 상..

JAVA/포스팅 2023.11.14

자바 try-catch문

자바에서 try-catch 문은 예외 처리를 위해 사용되는 구문입니다. 이 구문은 예외가 발생할 수 있는 코드를 try 블록에 포함하고, 예외가 발생했을 때 처리할 코드를 catch 블록에 작성합니다. 다음은 try-catch 문의 기본 구조입니다. try { // 예외가 발생할 수 있는 코드 } catch (예외종류1 변수1) { // 예외종류1에 대한 처리 코드 } catch (예외종류2 변수2) { // 예외종류2에 대한 처리 코드 } catch (예외종류3 변수3) { // 예외종류3에 대한 처리 코드 } finally { // 항상 실행되어야 하는 코드 (예외 발생 여부와 관계없이) } - try 블록 : 예외가 발생할 수 있는 코드를 포함합니다. 이 블록 내에서 예외가 발생하면 예외 처리를 시..

JAVA/포스팅 2023.11.14

자바 예외 클래스의 계층구조

자바에서 예외 클래스는 java.lang.Exception 클래스를 상속하는 계층 구조를 가지고 있습니다. Exception 클래스는 모든 예외 클래스의 최상위 클래스이며, 예외를 나타내는 클래스들은 이 클래스를 상속하고 있습니다. Exception 클래스의 하위 클래스들은 크게 세 가지로 나눌 수 있습니다. 1. Checked Exception (Checked 예외) Exception 클래스를 상속하면서 RuntimeException 클래스를 상속하지 않은 예외들이 이에 해당합니다. 컴파일러가 이 예외들을 검사하도록 요구하며, 명시적인 예외 처리를 강제합니다. - IOException : 입출력 동작 중에 발생할 수 있는 예외. - SQLException : 데이터베이스와 관련된 동작 중에 발생할 수 ..

JAVA/포스팅 2023.11.14

자바 예외(Exception)

자바에서 예외(Exception)는 프로그램 실행 중에 발생할 수 있는 오류 또는 예외적인 상황을 나타냅니다. 예외 처리(Exception Handling)는 이러한 예외 상황에 대처하는 방법을 제공하며, 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 합니다. 자바에서 예외는 두 가지 주요 종류로 나뉩니다. 1. 일반 예외(Exception) Exception 클래스를 상속받는 예외 클래스로, 주로 프로그래머의 실수나 예상할 수 있는 예외 상황을 다룹니다. 2. 런타임 예외(Runtime Exception) RuntimeException 클래스를 상속받는 예외 클래스로, 주로 프로그램 실행 중 발생하는 예외로서 미리 예측하기 어려운 경우에 해당합니다. 예외 처리의 기본 구조 자바에서 예외 처리는 ..

JAVA/포스팅 2023.11.14

자바 익명 내부 클래스

익명 내부 클래스(Anonymous Inner Class)는 이름이 없는 내부 클래스로, 클래스를 정의하면서 동시에 인스턴스를 생성하는 방식입니다. 주로 인터페이스나 추상 클래스를 즉석에서 구현하여 객체를 생성할 때 사용됩니다. 익명 내부 클래스의 주요 특징은 다음과 같습니다. 1. 이름 없음 익명 내부 클래스는 이름이 없습니다. 클래스의 정의와 객체의 생성을 동시에 수행합니다. 2. 인터페이스나 추상 클래스 구현 익명 내부 클래스는 주로 인터페이스나 추상 클래스를 구현하면서 객체를 생성하는데 사용됩니다. 3. 클래스의 정의와 객체 생성을 한 번에 익명 내부 클래스는 클래스의 정의와 객체의 생성을 한 번에 처리합니다. 4. 외부 변수의 사용 익명 내부 클래스는 외부 메서드의 지역 변수를 사용할 수 있습니..

JAVA/포스팅 2023.11.14

자바 지역 내부 클래스

지역 내부 클래스(Local Inner Class)는 특정 메서드나 블록 안에서만 유효한 내부 클래스입니다. 이 클래스는 메서드 또는 블록 내에서만 인스턴스화되어 사용될 수 있으며, 외부에서는 접근할 수 없습니다. 주로 특정 메서드나 블록에서만 필요한 클래스를 정의할 때 사용됩니다. 지역 내부 클래스의 주요 특징은 다음과 같습니다. 1. 지역 변수 접근 지역 내부 클래스는 정의된 메서드나 블록 내에서만 유효하며, 해당 메서드나 블록의 지역 변수에 자유롭게 접근할 수 있습니다. 단, 이 지역 변수는 final이거나 실질적으로 final로 사용되어야 합니다. 2. 외부 클래스 멤버 접근 불가능 지역 내부 클래스는 정의된 메서드나 블록 내에서만 인스턴스화되므로, 외부 클래스의 멤버에 직접적으로 접근할 수 없습..

JAVA/포스팅 2023.11.14

자바 정적 내부 클래스

정적 내부 클래스(Static Inner Class)는 외부 클래스의 인스턴스에 종속되지 않는 내부 클래스로, 외부 클래스의 인스턴스를 생성하지 않고도 정적 내부 클래스의 객체를 생성할 수 있습니다. 이 클래스는 주로 외부 클래스의 네임스페이스를 정리하거나, 독립적인 유틸리티 클래스를 만들 때 사용됩니다. 정적 내부 클래스의 특징은 다음과 같습니다. 1. 인스턴스 종속성이 없음 정적 내부 클래스는 외부 클래스의 인스턴스에 종속되지 않습니다. 따라서 외부 클래스의 인스턴스를 생성하지 않고도 정적 내부 클래스의 객체를 생성할 수 있습니다. 2. 외부 클래스의 정적 및 비정적 멤버 접근 가능 정적 내부 클래스는 외부 클래스의 모든 멤버(정적 및 비정적)에 접근할 수 있습니다. 3. 외부 클래스의 인스턴스 생성..

JAVA/포스팅 2023.11.13

자바 멤버 내부 클래스

멤버 내부 클래스(Member Inner Class)는 다른 클래스 내부에 정의되어 있는 클래스로, 외부 클래스의 인스턴스에 종속적인 내부 클래스입니다. 이 클래스는 주로 외부 클래스의 멤버 변수 및 메서드에 쉽게 접근할 수 있도록 도와주는 역할을 합니다. 멤버 내부 클래스의 특징은 다음과 같습니다. 1. 인스턴스 종속성 멤버 내부 클래스는 외부 클래스의 인스턴스에 종속적입니다. 따라서 멤버 내부 클래스의 객체를 생성하려면 먼저 외부 클래스의 객체가 생성되어 있어야 합니다. 2. 외부 클래스의 멤버 접근 멤버 내부 클래스는 외부 클래스의 모든 멤버에 접근할 수 있습니다. 이는 private 멤버까지 포함합니다. 3. 외부 클래스의 인스턴스 생성 없이는 객체 생성 불가 멤버 내부 클래스의 객체를 생성하려면..

JAVA/포스팅 2023.11.13

자바 내부 클래스의 접근성

자바의 내부 클래스의 접근성은 외부 클래스와 내부 클래스 간의 관계에 따라 다양합니다. 내부 클래스에 적용할 수 있는 접근 제어자는 멤버 내부 클래스, 정적 내부 클래스, 지역 내부 클래스, 익명 내부 클래스에 대해 각각 다릅니다. 1. 멤버 내부 클래스 (Member Inner Class) - 외부 클래스의 인스턴스에 종속적이므로 외부 클래스의 멤버와 동일한 접근성을 가집니다. - public, protected, default (package-private), private 등의 접근 제어자 사용 가능. public class Outer { private int outerField; public class Inner { // 멤버 내부 클래스는 외부 클래스의 private 멤버에도 접근 가능 publ..

JAVA/포스팅 2023.11.13

자바 내부 클래스의 선언

자바의 내부 클래스는 클래스 내부에서 정의되어 있는 클래스로, 외부 클래스에 종속적인 멤버 내부 클래스(Member Inner Class), 외부 클래스에 독립적인 정적 내부 클래스(Static Nested Class), 지역 내부 클래스(Local Inner Class), 익명 내부 클래스(Anonymous Inner Class) 등이 있습니다. 각 내부 클래스의 선언에 대한 설명은 다음과 같습니다. 1. 멤버 내부 클래스 (Member Inner Class) - 외부 클래스의 멤버로 선언되는 내부 클래스입니다. - 선언 위치 : 외부 클래스의 멤버 변수나 메서드 내부에서 선언됩니다. - 선언 방법 : public class OuterClass { // 멤버 변수, 메서드 등 public class I..

JAVA/포스팅 2023.11.13

자바 내부 클래스의 특징

자바의 내부 클래스(Inner Class)는 다양한 특징을 가지고 있습니다. 이러한 특징들은 코드의 가독성, 캡슐화, 코드 재사용 등에 영향을 미칩니다. 1. 코드의 가독성 향상 내부 클래스를 사용하면 관련된 클래스들을 논리적으로 그룹화할 수 있습니다. 특히, 해당 클래스가 하나의 클래스에서만 사용되는 경우에는 내부 클래스로 정의하여 코드의 가독성을 높일 수 있습니다. 2. 캡슐화 강화 내부 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있습니다. 이는 외부에서는 사용되지 않아야 하는 클래스의 구현을 외부로부터 감추는 데 도움이 됩니다. 3. 외부 클래스와의 쉬운 접근 내부 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있습니다. 따라서, 내부 클래스에서 외부 클래스의 메서드나 변수를 쉽게 활용할 수 있..

JAVA/포스팅 2023.11.13