1. 참조 타입 대한 설명으로 틀린것은 무엇입니까? ① 참조 타입에는 배열,열거,클래스,인터페이스가 있다. ( O ) ② 참조 타입 변수의 메모리 생성 위치는 스택이다. ( O ) ③ 참조 타입에서 ==,!= 연산자는 객체 번지를 비교한다. ( O ) ④ 참조 타입은 null 값으로 초기화 할 수 없다. ( X ) 참조타입 변수가 null 값을 가질 경우 참조할 객체가 없으므로 객체는 힙 메모리 영역에 생성되지 않고, 변수만 스택영역에서 생성되어 null값을 가질 수 있다. 2.자바에서 메모리 사용에 대한 설명으로 틀린 것은 무엇입니까? ① 로컬 변수는 스택 영역에 생성되며 실행 블록이 끝나면 소멸된다. ( O ) ② 메소드 코드나, 상수, 열거 상수는 정적(메소드)영역에 생성된다. ( O ) ③ 참조되..
1. 데이터 타입 분류 프로그램이 하는 일은 결국 데이터를 처리하는 것이다. 따라서 데이터를 얼마나 잘 다루느냐가 좋은 프로그램을 작성할수 있는 관건이 된다. 데이터를 잘 다루기 위해서는 자바에서 지원하는 데이터 타입에 대해서 제대로 이해 할 필요가 있다. 자바의 데이터 타입에는 크게 기본 타입(원시 타입: primitive type) 과 참조 타입(reference type) 으로 분류된다. 기본 타입이란 정수, 실수, 문자, 논리 리터럴을 저장하는 타입을 말한다. 지금까지 우리는 기본 타입으로 변수를 선언하고 데이터를 저장하는 연습을 했다. 이번 장 부터는 참조 타입에 중점을 두려고 한다. 참조 타입이란 객체(Object)의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다. ..
메모리 사용 영역 본격적으로 참조 타입을 알아보기 전에 우선 JVM이 사용하는 메모리 영역에 대해서 알아보기로 하자. java.exe로 JVM은 운영체제에서 할당받은 메모리 영역 (Runtime Data Area) 을 다음과 같이 세부 영역으로 구분해서 사용한다. 1. 메소드 ( Method ) 영역 메소드 영역에는 코드에서 사용되는 클래스(~.class) 들을 클래스 로더로 읽어 클래스별로 런타임 상수풀(reuntime contant pool), 필드(field) 데이터, 메소드(method)데이터 , 메소드 코드, 생성자(constructor) 코드등을 분류해서 저장한다. 메소드 영역은 JVM이 시작할 때 생성도디고 모든 스레드가 공유하는 영역이다. 힙(Heap)영역 힙 영역은 객체와 배열이 생성되는..
기본 타입 변수의 ==, != 연산은 변수의 값이 같은지, 아닌지를 조사하지만 참조 타입 변수들 간의 == , != 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용된다. 참조 타입 변수의 값은 힙 영역의 객체 주소이므로 결국 주소 값을 비교하는 것이 된다. 동일한 주소 값을 갖고 있다는 것은 동일한 객체를 참조한다는 의미이다. 따라서 동일한 객체를 참조하고 있을 경우 == 연산의 결과는 ture이고 != 연산의 결과는 false이다. 상기 그림에서 refVar1과 refVar2는 서로 다른 객체를 참조하고 있으므로 == 및 != 연산의 결과는 다음과 같다. refVar2와 refVar3는 동일한 객체2를 참조하고 있으므로 == 및 != 연산의 결과는 다음과 같다. ==와 != 연..
참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null (널) 값을 가질 수 있다. null 값도 초기값으로 사용할수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성된다. 참조 타입 변수가 null 값을 가지는지 확인하려면 다음과 같이 ==, != 연산을 수행하면 된다. 차바는 프로그램 실행 도중에 발생하는 오류를 예외 (Exception) 라고 부른다. 예외는 사용자의 잘못된 입력으로 발생할 수도 있고, 프로그래머가 코드를 잘못 작성해서 발생할 수도 있다. 참조 변수를 사용하면서 가장 많이 발생하는 예외중 하나로 NullPointerException 이 있다. 이 예외는 참조 타입 변수를 잘못 사용하면 발생한다. 참조 타입 변수가 null을 가지고 있을 경우, 참조 타입 변..
자바는 문자열을 String 변수에 저장하기 떄문에 다음과 같이 String 변수를 우선 선언해야 한다. ------------------------------ String 변수 ; ------------------------------ String 변수에 문자열을 저장하려면 큰따옴표로 감싼 문자열을 리터럴을 대입하면 된다. ----------------------- 변수 = "문자열"; ---------------------- 변수 선언과 동시에 문자열을 저장할 수도 있다. ------------------------------------- String 변수 = "문자열"; ------------------------------------- 다음은 두개의 String 변수를 선언하고 문자열을 저장한다...
1. 객체와 클래스에 대한 설명으로 틀린 것은 무엇입니까? ① 클래스는 객체를 생성하기 위한 설계도(청사진)와 같은 것이다. //(O) ② new 연산자로 클래스의 생성자를 호출함으로써 객체가 생성된다. //(O) ③ 하나의 클래스로 하나의 객체만 생성할 수 있다. // (X) 하나의 클래스로 여러개의 객체를 생성할 수 있다. ④ 객체는 클래스의 인스턴스이다. //(O) 2. 클래스의 구성 멤버가 아닌 것은 무엇입니까? ① 필드(field) //(O) ② 생성자(constructor) //(O) ③ 메소드(method) //(O) ④ 로컬 변수(local variable) //(X) 3. 필드, 생성자, 메소드에 대한 설명으로 틀린 것은 무엇입니까? ① 필드는 객체의 데이터를 저장한다. //(O) ② 생..
1. 객체와 클래스에 대한 설명으로 틀린 것은 무엇입니까? ① 클래스는 객체를 생성하기 위한 설계도(청사진)와 같은 것이다. //(O) ② new 연산자로 클래스의 생성자를 호출함으로써 객체가 생성된다. //(O) ③ 하나의 클래스로 하나의 객체만 생성할 수 있다. // (X) 하나의 클래스로 여러개의 객체를 생성할 수 있다. ④ 객체는 클래스의 인스턴스이다. //(O) 2. 클래스의 구성 멤버가 아닌 것은 무엇입니까? ① 필드(field) //(O) ② 생성자(constructor) //(O) ③ 메소드(method) //(O) ④ 로컬 변수(local variable) //(X) 3. 필드, 생성자, 메소드에 대한 설명으로 틀린 것은 무엇입니까? ① 필드는 객체의 데이터를 저장한다. //(O) ② 생..
1. 자바의 상속에 대한 설명 중 틀린 것은 무엇입니까? 1. 자바는 다중 상속을 허용한다. // (X) 2. 부모의 메소드를 자식 클래스에서 재정의(오버라이딩)할 수 있다. // (O) 3. 부모의 private 접근 제한으르 갖는 필드와 메소드는 상속의 대상이 아니다. // (O) 4. final클래스는 상속할 수 없고, final 메소드는 오버라이딩할 수 없다. // (O) 2. 클래스 타입 변환에 대한 설명 중 틀린 것은 무엇입니까? 1. 자식 객체는 부모 타입으로 자동 타입 변환된다. // (O) 2. 부모 객체는 항상 자식 타입으로 강제 타입 변환된다. // (X) 3. 자동 타입 변환을 이용해서 필드와 매개 변수의 다형성을 구현한다. // (O) 4. 강제 타입 변환 전에 instanceof..
1. 인터페이스에 대한 설명으로 틀린 것은 무엇입니까? ① 인터페이스는 객체사용 설명서 역활 한다. //(O) ② 구현 클래스가 인터페이스의 추상 메소드에 대한 실체 메소드를가지고 있지 않으면 추상 클래스가 된다 . //(O) ③ 인터페이스는 인스턴스 필드를 가질 수 있다. //(X) ④ 구현 객체는 인터페이스 타입으로 자동 변환 //(O) 2. 인터페이스의 다형성과 거리가 먼 것은? ① 필드가 인터페이스 타입일 경우 다양한 구현 객체를 대입할수 있다. //(O) ② 매개 변수가 인터페이스 타입일 경우 다양한 구현 객체를 대입할 수 있다. //(O) ③ 배열이 인터페이스 타입일 경우 다양한 구현 객체를 저장할 수있다. //(O) ④ 구현 객체를 인터페이스 타입으로 변환하려면 강제 타입 변환을 해야 한다...