본문 바로가기

JAVA

(24)
[JAVA] 제네릭(Generics) (자바 독학하기24) 1. 제네릭 클래스 제네릭이 등장한 이후에 자료형에 의존적이지 않은 클래스를 정의할 수 있게 되었다. 제네릭을 이용해 클래스 내부에서 사용하는 데이터 타입을 인스턴스 생성시에 정의할 수 있다. 제네릭 기반의 클래스 정의는 다음과 같다. class Classname { public T val; public void methodname (T value){ } } 위와 같이 class 이름 뒤에 를 붙이고 클래스 내부에서 인자들 앞에 T 를 붙인다. 이렇게 정의된 제네릭 기반 클래스는 다음과 같이 인스턴스 생성을 한다. Classname cn = new Classname(); 위에서 사용한 T 를 가리켜 타입 매개변수라 하며 String 을 타입 인자, Classname 을 가리켜 매개변수화 타입 이라고 한다..
[JAVA] 기본 클래스 (자바 독학하기23) 1. 래퍼 클래스 (Wrapper Class) - 래퍼 클래스는 기본 자료형의 값을 감싸는 클래스이다. 래퍼 클래스는 모든 자료형에 대해 정의되어 있으며 이는 다음과 같다. public Boolean(boolean value) public Character(char value) public Byte(byte value) public Short(short value) public Integer(int value) public Long(long value) public Float(floatvalue), public Float(double value) public Double(double value) 래퍼클래스는 값을 인스턴스로 감싸는 기능과 인스턴스에서 꺼내는 기능을 한다. 이를 각각 박싱, 언박싱이라고 칭..
[JAVA] Object 클래스 (자바 독학하기22) 1. finalize methods 아무도 참조하는 않는 인스턴스가 가비지 컬렉션에 의해 소멸되기 전에 자동으로 호출되는 메소드이다. 형태는 다음과 같다. 그리고 이의 사용 예는 다음과 같다. 이 메소드는 사용하지 않는 것이 좋기 때문에 그냥 알아만 두면 된다. 2. equals methods 이 메소드의 형태는 다음과 같다. 이 메소드는 참조 변수의 참조값을 비교하는 메소드이다. == 연산자와 비슷하게 보이지만 다른점이 있다. 위와같이 == 연산자는 참조대상을 비교하지만 equals 메소드는 인스턴스의 내용이 같은지를 판단한다. 3. clone methods clone 메소드는 위와같이 정의되며 이 메소드가 호출되면, 호출된 메소드가 속한 인스턴스의 복사본이 생성되고, 이렇게 만들어진 복사본의 참조 값..
[JAVA] 메모리 모델 (자바 독학하기21) 자바 가상머신은 운영체제 위에서 실행되는 하나의 프로그램이다. 자바 프로그램은 자바 가상머신 위에서 실행되는 프로그램이다. 이때 메모리인 RAM 은 운영체제에서 관리하며, 응용 프로그램에서 요청을 하면 운영체제가 할당한다. 메모리는 다음과 같이 3가지 영역으로 나뉜다. - 메소드 영역 : 메소드의 바이트 코드, static 코드 - 스택 영역 : 지역변수, 매개변수 - 힙 영역 : 인스턴스 소스파일을 컴파일할 때 생성되는, 자바 가상머신에 의해 실행이 가능한 코드를 가리켜 바이트코드 라 한다. 지역변수 와 매개변수는 선언 되는 순간에 스택에 할당 되었다가 자신이 할당된 영역을 벗어나면 소멸된다. 인스턴스는 힙에 저장되며, 인스턴스가 참조되지 않으면 이 인스턴스는 소멸된다. 이러한 소멸 작업은 가상머신이 ..
[JAVA] 예외처리(Exception Handling) (자바 독학하기20) 자바에서 예외는 문법 오류가 아닌 실행 중간 발생하는 정상적이지 않은 상황이다. 따라서 이클립스에서 에러를 띄우지 않지만 console 창에서 exception message 를 출력한다. 다음과 같이 정수 3을 0으로 나누면 / by zero 라고 하면서 java.lang.ArithmeticException 이라고 출력된다. 이는 예외 클래스 ArithmeticException 의 인스턴스를 생성하고 이 인스턴스를 처리하지 않아 나타나는 현상이다. 이러한 예외를 처리하기 위해 try ~ catch 문을 사용한다. try { 관찰영역 } catch(Exception name) { 처리 영역 } 의 기본 구조를 가진다. - try 영역에서 발생한 예외 상황을 catch 영역에서 처리한다. catch 문은 ..
[JAVA] 인터페이스와 추상 클래스 (자바 독학하기19) 인터페이스의 기본적인 모습은 다음과 같다. interface Printable { public void print(String doc); // 추상 메소드 } 클래스 대신에 interface 를 붙이며 메소드는 몸체가 없이 바로 세미콜론이 붙으며 끝난다. 이와 같이 메소드의 몸체가 비어있는 메소드를 추상 메소드(Abstract Methods) 라 부른다. 인터페이스를 대상으로는 인스턴스 생성이 불가능 하다. 단지 다른클래스에 의해 상속이 될 뿐이며 extends 대신에 implements 가 사용된다. 인터페이스의 상속은 다음과 같다. class Printer implements Printable { public void print(String doc) { System.out.println(doc); }..
[JAVA] 클래스의 상속 3 : 상속의 목적 (자바 독학하기18) 상속은 연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있다고 하였다. 상속으로 인해 동일한 공통점이 있는 정보들에 대해 공통 규약을 만들어 상속 시킨 후 정보 관리에서 이점을 느낄 수 있다. 클래스를 정의할 때 어떤 클래스도 상속하지 않으면 java.lang 패키지에 묶여 있는 Object 클래스를 상속하게 된다. 임의의 클래스 class A{} 를 정의하면 이는 class A extends Object{} 와 동일하다. 물론 임의의 클래스 A 가 다른 클래스를 상속 하더라도 이 super class 는 물론 Object 클래스를 상속하기 때문에 직,간접적으로 Object 클래스를 상속하는 구조이다. 이렇게 되어 있는 이유는 자바의 모든 인스턴스에 공통된 기준 및 규약을 적용하기 위해서다. s..
[JAVA] 클래스의 상속 2 : 오버라이딩 (자바 독학하기17) 상속을 어느 조건일때 써야 할까? 해당 책에서는 상속의 조건은 IS-A 관계일 때 사용해야 한다고 한다. - 하위 클래스는 상위 클래스의 모든 특성을 지닌다 - 거기에 더하여 하위 클래스는 자신만의 추가적인 특성을 더하게 된다 이 예로 스마트폰은 모바일폰이다, 노트북은 컴퓨터이다, 전기자동차는 자동차이다 를 꼽는다. 자동차와 전기자동차를 상속의 개념으로 본다면 Class ElectricVehicle extends Vehicle {} 로 나타낼 수 있다. 이때 참조변수와 인스턴스 변수를 다음과 같이 구성한다. ElectricVehicle ev = new ElectricVehicle(); 그런데 Vehicle 형 참조 변수가 ElectricVehicle 인스턴스를 참조하게 할 수 있다. Vehicle ev ..