JAVA 30

익명 클래스

익명 클래스 - 시작익명 클래스(anonymous class)는 지역 클래스의 특별한 종류의 하나이다.익명 클래스는 지역 클래스인데,  클래스의 이름이 없다는 특징이 있다. 앞서 만들었던 지역 클래스 예제 코드인 코드를  ` LocalOuterV2 `  다시 한번 살펴보자. package nested.local;public class LocalOuterV2 { private int outInstanceVar = 3; public void process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { int value = 0; @Override ..

JAVA 2024.12.24

중첩 클래스, 내부 클래스 2

지역 클래스 - 시작 지역 클래스 (Local class)는 내부 클래스의 특별한 종류의 하나이다. 따라서 내부 클래스의 특징을 그대로 가진다. 예를 들어서 지역 클래스도 내부 클래스이므로 바깥 클래스의 인스턴스 멤버에 접근할 수 있다. 지역 클래스 예class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); } } 지역 클래스의 특징지역 클래스는 지역 변수처럼 코드 블록 안에 클래스를 선언한다.지역 클래스는 지역 변수에 접근할 수 있다.package nested.local;publ..

JAVA 2024.12.24

중첩 클래스, 내부 클래스 1

중첩 클래스, 내부 클래스란? for (...) { //중첩 for문for (...) { } }다음과 같이 for 문 안에 for 문을 중첩하는 것을 중첩 (Nested) for 문이라 한다.  class Outer { ... //중첩 클래스 class Nested { ... } }다음과 같이 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스라 한다.중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 중첩 클래스의 분류     중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스내부 클래스내부 클래스지역 클래스익명 클래스 중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다. 변수의 선언 위치정적 변수 (클..

JAVA 2024.12.23

자바 정규식 Reqular Expression

만약 숫자로만 이루어져 있는지, 대문자, 소문자를 포함하고 있는지 검사하고 싶다면 요소 하나하나를 비교하는 방법도 있지만 정규식을 이용하며 간단하게 확인할 수 있다.   정규식 문법 기호 모음 정규식 기본 기호기호설명예제.임의의 문자 1개를 의미 ^시작을 의미한다[] 괄호 안에 있다면 일치하지 않는 부정의 의미로로 쓰인다^a : a로 시작하는 단어[^a] : a가 아닌 철자인 문자 1개$$앞의 문자열로 문자가 끝나는지를 의미한다a$ : a로 끝나는 단어[][] 괄호 안의 문자가 있는지를 확인한다[ab][cd] : a,b중 한 문자와 c,d중 한 문자→ ac ad bc bd [^][] 대괄호 안에 ^ 문자가 있으면, 제외를 뜻함- 대괄호 안에 ^ 가 쓰이면 제외의 뜻- 대괄호 밖에 ^ 가 쓰이면 시작점의 ..

JAVA 2024.12.23

[JAVA] 리플렉션

리플렉션이란?구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API이다. 리플렉션이 어떤 경우에 사용될까?코드를 작성할 시점에 어떤 타입의 클래스를 사용할지 모르지만, 런타임 시점에 지금 실행되고 있는 클래스를 가져와서 실행해야 하는 경우 사용된다.프레임워크나 IDE에서 이런 동적인 바인딩을 이용한 기능을 제공합니다. intelliJ의 자동완성 기능, 스프링의 어노테이션이 리플렉션을 이용한 기능이라 할 수 있습니다.  클래스와 메타데이터 클래스가 제공하는 다양한 정보를 동적으로 분석하고 사용하는 기능을 리플렉션 (Reflection)이라 한다.리플렉션을 통해 프로그램 실행 중에 클래스, 메서드, 필드 등에 대한 정보를 얻거나, 새로운 객체를 생성하고..

JAVA 2024.11.27

[JAVA] 자원 정리 (try-catch , try-with-resources) 2

네트워크 프로그램 4 - 자원 정리 1 자원정리를 네트워크 프로그램에 도입해서, 네트워크 프로그램이 안전하게 자원을 정리하도록 개발해 보다.먼저 ` finally ` 를 사용해서 자원을 정리해 보고, 이후에 참 ` try-with-resources ` ` 를 도입해 보자.try-with-resources  항상 사용할 수 있는 것은 아니고 finally에서 직접 자원을 정리하는 경우가 많이 있다.  우선 소켓과 스트림을 종료하기 위해 간단한 유틸리티 클래스를 생성하자package thread.control.network.tcp;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.So..

JAVA 2024.11.26

[JAVA] 자원 정리 (try-catch , try-with-resources)

자원 정리 1 자원 정리를 이해하기 위해 간단한 예제 코드를 만들어보자package thread.control.network.tcp.autocloseable;public class CallException extends Exception{ public CallException(String message) { super(message); }} package thread.control.network.tcp.autocloseable;public class CloseException extends Exception{ public CloseException(String message) { super(message); }} package thread.control.ne..

JAVA 2024.11.26

[JAVA] 싱글톤 구현 방식

싱글톤 패턴이란?인스턴스를 오직 한 개만 제공하는 클래스입니다. 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개 일 때 문제가 생길 수 있는 경우가 있다. 인스턴스를 오직 한개만 만들어 제공하는 클래스가 필요하다. 싱글톤 구현 방식 1. private 생성자 및 static 메서드 사용public class Settings { private static Settings instance; // 클래스 밖에서 인스턴스 생성 방지 private Settings(){} public static Settings getInstance(){ if(instance == null) { return instance = new Settings(); ..

JAVA 2024.11.21

[JAVA] iterator 순회 중 만난 ConcurrentModificationException

collection 순회하는 loop 내에서 원본 collection에 변화를 주면 어떤 일이 발생할까? 다음 코드를 실행해보자!package generic.ex1;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;public class RawTypeMain { public static void main(String[] args) { // List list2 = new CopyOnWriteArrayList(); List list2 = new ArrayList(); list2.add("A"); list2.add("B"); list2.add("C"); list2...

JAVA 2024.11.20