본문 바로가기

Dev.BackEnd/JAVA

(33)
[JAVA Adv] Annotaion 에 대해서, Annotaion (어노테이션인가, 애너테이션인가, 애노테이션인가)도입 배경 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시키기 위해서이다. 어노테이션 이전에는 주석을 사용하여 소스코드에 대한 설명을 적었고, 이 주석을 javadoc.exe라는 프로그램을 사용하여 문서를 작성하였다. 문법으로서 역할 어노테이션은 기본적으로 인터페이스이다. JEE 5부터 추가된 문법이며, 사전적 정의로는 주석이라는 의미를 갖고 있다. 주석과는 역할이 다르지만 주석처럼 달아 클래스에 특수한 의미를 부여하거나, 기능을 주입할 수 있고, 이 의미는 컴파일 타임 또는 런타임에 해석될 수 있다. 기존의 자바 웹 애플리케이션들은 구성과 설정값들을 외부의 XML 설정 파일에 명시하는 방법으로 프로그래밍..
[Java Adv] 16. Lambda Expression + Inner class, anonymous class 내부클래스란(inner class)? 말 그대로 클래스 내부에 선언된 클래스를 말한다. 두 클래스가 서로 긴밀한 관계에 있기 때문에 내부에 선언한 것이다. 내부 클래스를 사용하면 외부 클래스의 멤버들을 쉽게 접근할 수 있다. 이로 인해 코드의 복잡성이 감소하며 캡슐화를 할 수 있게 된다. 단, 내부 클래스는 외부 클래스를 제외하고 다른 클래스에서 잘 사용되지 않는 것이어야 한다. 익명 클래스(anonymous class) 내부 클래스에는 익명 클래스라는 것이 존재한다. 익명 클래스도 마찬가지로 이름 그대로의 역할을 수행한다. 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스로, 일회용 클래스인 것이다. 이름이 없기 때문에 생성자도 가질 수 없으며, 조상클래스의 이름이나 구현하고자 하는 인터페이스..
[JAVA] 15. Thread ( 스레드 ) 쓰레드 실행 중인 프로그램 을 프로세스라 한다. 프로세스 내부에 둘 이상의 쓰레드가 존재할 수 있다. 어떤 프로세스든 간에 쓰레드가 하나 이상 수행된다. 아무런 쓰레드를 생성하지 않아도 JVM을 관리하기 위한 여러 쓰레드가 존재한다. 왜 쓰레드라는 것을 만들었을까. 하나의 작업을 동시에 수행하려고 할 때 여러 개의 프로세스를 띄워서 실행하려면 각각 메모리를 할당해 주어야만 한다. 그에 반해, 쓰레드를 하나 추가하면 더 적은 메모리를 점유하게 된다. 어떤 작업을 할 때 단일 쓰레드로 실행하는 것보다는 다중 쓰레드로 실행하는 것이 더 시간이 적게 걸린다. 자바에서는 쓰레드도 하나의 인스턴스로 정의한다. 쓰레드는 쓰레드만의 main메소드를 지닌다. 단 이름은 main이 아니라 run이다. 쓰레드를 생성하는 방..
#Reflection 리플렉션이란? ReflectionWhat? 객체를 통해 클래스의 정보를 분석해 내는 프로그래밍 기법을 말한다. 구체적인 클래스 타입을 알지 못해도, 컴파일된 바이트 코드를 통해 역으로 클래스의 정보를 알아내어 클래스를 사용할 수 있다는 것이다. 리플렉션 기법을 통해서 형을 모르는 상태에서 객체의 메서드를 호출할 수 있다. 동적 바인딩이 되지 않던 자바에서 리플렉션이라는 프로그래밍 기법을 통해 동적 바인딩을 제공하는 것이다. Why? Composition 과 함께 사용되어 다형성을 구현하기 위해 사용된다. 조합을 사용하여 교체할 수 있는 위임 클래스를 리플렉션을 통해 동적/정적으로 생성하고 교체하는 방식으로 사용된다. 프레임워크에서 유연성을 위해 자주 사용되는 방식이다. 자바의 모든 타입은 연관된 Class 객체를 갖고..
[JAVA] 14 - 1. Collection Framework(컬렉션 프레임워크) - List Chapter 14 - 1. Collection Framework - List데이터의 저장, 그리고 이와 관련 있는 알고리즘을 구조화 해 놓은 프레임워크이다.자료구조 알고리즘을 클래스로 구현해 놓은 것이다. 컨테이너 클래스라고도 한다. 모든 인터페이스가 제네릭으로 정의되어있다.컬렉션 프레임워크 분류자바의 컬렉션 프레임워크에서는 크게 3가지 타입이 존재한다고 인식하고 3개의 인터페이스를 정의하였다.List ArrayList, LinkedList, Stack etc....
[JAVA] 13. 열거형 Enum Chapter 13. Enum 열거형final로 지정한 상수가 이름이 중복되는 경우가 발생한다.열거형이란,자바의 열거형은 C언어의 열거형보다 더 향상된 것으로 열거형이 갖는 값뿐만 아니라 타입까지 관리한다. JAVA에서 상수는 어떻게 정의하는가?1. public static final 을 이용하여 123public static final FRUIT_APPLE = 1;public static final FRUIT_ORANGE = 2;public static final COMPANY_APPLE = 3;cs 2. interface를 이용한다.(public static final 을 생략할 수 있다.) 1234interface FRUIT { FRUIT.APPLE COMPANY.APPLE}cs(FRUIT.APPL..
[JAVA] 12. Generics (지네릭스) Chapter 12. Generics Java는 안전성을 가장 우선시한다.그런 점에서 지네릭스는 안전성을 높이기 위한 Java가 제공하는 수단 중 하나가 되겠다.사전적 정의로는 '포괄적인', '일반적인' 이란 뜻이다.클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법으로, 매개변수와 비슷하게 작동한다.매개변수가 어떠한 변수에 들어갈 값과 관련되어있는 것이라면 제네릭은 어떠한 변수의 데이터 타입과 관련되어있는 것이라고 볼 수 있다. Generics란,다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능을 말한다. 문 법 꺽쇠로 시작해서 꺽쇠로 끝나는 문자가 있다.12345class Person { public T info;}Person p1 = new Per..
[JAVA] 11 - 2. Object 클래스와 그 메소드들 Chapter 11 - 2. Object 클래스 .toString( ) 메소드, .clone( ) 메소드 Java의 모든 클래스는 하나의 동일한 클래스를 상속받는다.이렇게 하면 최상위 클래스에 정의되어 있는 메소드를 사용할 수 있게 되는 장점이 존재한다.Object 클래스모든 클래스의 조상인 Object 클래스 toString( ) 문자화시키다. 이 메서드는 인스턴스에 대한 정보를 문자열로 제공할 목적으로 정의한 것이다.인스턴스의 정보를 제공한다는 것은 대부분의 경우 인스턴스 변수에 저장된 값들을문자열로 표현한다는 뜻이다. class A를 정의했다면 이 클래스에는 toString이라는 메소드가 없다. 하지만 호출할 수 있다. Object 클래스의 상속을 받고 있는 class A 이므로 Object 클래스..