본문 바로가기

java

Java Varargs (가변인자) 사용법 7.4.5 Varargs(자바 5.0) 자 바 5.0에서 소개되는 기법 중에서 가변인수(Varargs)라는 것이 있다. 가변인수라는 것은 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다. 가변인수가 없던 시절에는 가변인수 대신 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다. □ 가변인수(Varargs 자바 5.0) ◇ 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다. □ 가변인수가 없던 시절 ◇ 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다. 우선 컬렉션을 이용해서 가변인수를 사용하던 기법부터 보도록 하자. 다음은 인수를 Vector에 넣어서 메서드로 전달하는 예이다. ▒ 컬렉션을 이용한 가변인수(메서드) 1234567public class VarArgs.. 더보기
Dom4j를 이용한 XML Parsing Dom4j를 이용한 XML Parsing [ 예제 코드 ] import java.net.URL;import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader;public class Foo { public Document parse(URL url) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(url); return document; } } Iterator 사용하기"document"(SAXReader나 DocumentHelper를 통해 만들어진 XML객체)는 자바의 표준 Iterat.. 더보기
ArrayList와 HashMap의 차이점 (Java Collection) 1. Collection List 계열 : AbstractList, ArrayList, LinkedList, Vector Map 계열 : AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Set계열 : AbstractSet, HashSet, LinkedHashSet, TreeSet Collection, List, Map,Set은 모두 구현되지 않은 interface 계열로 내려가 구현된 Class를 사용해서 정의 ex) List a = new ArrayList(); * 다형성(부모는 여러가지 자식의 형태로 나타날 수 있다). List a = new List(); * error :.. 더보기
Java Garbage Collection 가비지 컬렉션Garbage Collection이란, 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭 혹은 개체를 찾아 자동적으로 다시 사용 가능한 자원으로 회수하는 것을 말한다. 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터Garbage Collector라고 하며, 최초의 가비지 컬렉터는 1958년에 존 매카시John McCarthy에 의해 리습Lisp 언어의 일부로 구현되었다. 가비지 컬렉션은 약자로 GC라고 부르기도 한다. 일반적인 가비지 컬렉터 알고리즘(Algorithm)은 다음과 같이 동작한다 1. 더 이상 프로그램에서 사용하지 않을 개체Object를 찾아낸다. 2. 해당 개체가 사용하는 리소스를 회수한다. 위치 : 힙 메모리 영역에 존재(JVM은 New/Young 영역과 O.. 더보기
Interface vs Abstract Interface 와 abstract * 공통점1) abstract와 interface는 그자체가 instance화 될수가 없다. 즉, TestInterface t = new TestInterface(), TestAbstract a = new TestAbstract(); 둘 다 컴파일을 해보면, 에러를 발생시킨다. 2) Prototype만 있고 Body가 없는 메소드를 멤버함수로 가진다. 소스1에서 보는 바와 같이 TestInterface, TestAbstract 는 함수 선언부는 존재하지만, 내용이 없는 함수들을 포함하고 있다. [소스1] public interface TestInterface { public static int num = 8; public void func1(); public void.. 더보기
중첩 클래스(Nested Class) [자바 4대 중첩 클래스] 자바 4대 중첩 클래스 1. 중첩 클래스 (Inner Class) □ 정의 - 하나의 클래스 내부에 또 다른 클래스가 내포되어 있는 상태. (클래스 관리의 효율을 높임.) □ 특징 - 중첩되는 클래스는 하나 이상 가능. - Outer 클래스 멤버를 Inner 클래스에서 사용 가능. - Outer 클래스에서 Inner 클래스 멤버 사용 불가능. (사용하고 싶으면 객체를 직접 발생 시켜야 함.) - 일반 중첩 클래스 내부에서는 static과 관련된 멤버를 선언할 수 없음. □ 형식 class Outer { 내용부; class Inner { 내용부; } } □ 중첩 클래스 객체 생성 Outer 객체1 = new Outer(); // Outer 클래스 객체 생성. Outer.Inner 객체2 = 객체1.new .. 더보기
JAVA 접근 제한자 (public, private, protected, default) 접근 제한자란?멤버들은 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 결코 좋은 것은 아닙니다.그런 이유로 프로그래머가 객체의 멤버들에게 접근 제한을 걸 수가 있는데 자바에서는 이를 접근 제한자라 합니다. 제한자 종류i) public : 모든 접근을 허용ii) protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용iii) default : 같은 패키지(폴더)에 있는 객체들만 허용iv) private : 현재 객체 내에서만 허용 접근제한자 사용- 클래스 : public, default- 생성자 : public, protected, default, private- 멤버변수 : public, protected, default, private- 멤버메소드 : public,.. 더보기
Java Reflection 개념 및 사용법 Java Reflection 정의 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말한다. 투영, 반사 라는 사전적인 의미를 지니고 있다. 스프링을 공부하다가 보면 BeanFactory 라는 Spring Container 개념을 학습하게 된다.이 BeanFactory는 어플리케이션이 실행한 후 객체가 호출 될 당시 객체의 인스턴스를 생성하게 되는데 그 때 필요한 기술이 Reflection이다.자바는 스크립트 언어가 아닌 컴파일 언어이다. 물론 .java -> .class -> 실행이라는 2단계의 메커니즘을 가지고 있지만 컴파일 언어로 분리하는 게 옳다. 원래 자바에서는 동적으로 객체를 생성하는 기술이 없었다. 그리고 동적으로 인스턴스를 생성하는 Reflection으로 그 역활을 대신.. 더보기