빅데이터UI전문가/JAVA

빅데이터UI전문가 DAY06 - 클래스

해요빈 2021. 8. 18. 16:01
아래 클래스에 대한 설명 중 틀린 것을 모두 고르면?

class  Cat{
String eyeColor="brown";
int age=3;
char gender='여';

}
(1) Cat 클래스는 개발자가 만들어낸 자료형이며 이를 사용자 정의 자료형이라 한다.
정답: O

(2) 자바언어는 기본자료형 이외에도 객체자료형을 지원하므로, 자바의 자료형은 결국 4가지인셈이다.
정답: O
굉장히 중요

문자 숫자, 논리값, 사용자정의자료형 총4가지

(3)이 클래스를 디자인한 개발자는 브라운색의 눈을 가진 3살짜리 암컷 고양이를 표현했다.
정답: O

(4)이 클래스를 작성한 개발자는 현재 클래스에서 응용프로그램이 시작될 수 있도록 의도하지 않았다.
정답: O // 자바스탠다드, 메인을 두지 않았다.

(5) 고양이가 보유한 3개의 상태값들을 사용하려면 고양이의 탄생 없이도 사용이 가능하다.
    즉 고양이를 메모리에 올리지 않고도 eyeColor, age, gender 변수를 사용할 수 있다. 
  생물학적으로 접근해도 말되 안됨 
정답: X / 사용이 불가능


(6)생물학적 판단으로도 고양이가 존재해야 상태도 존재하는 것이므로, 고양이 클래스를 먼저 메모리에
   올려야 내부에 존재하는 3개의 상태값들도 사용이 가능할 것이다.
정답: O

다음 중 틀린 것은?

class Member { //A
int age=23;

public void talk(){
}
}


public class UseMember{
public static void main(String[] args){
age=7; //B

          Member m = new Member();//C
                   int         x  =    3;

System.out.println(m.age); //D
}

}

(1) A는 개발자가 현실의 "회원"이라는 개념을 Member라는 클래스로 정의한 것이므로 자료형은
   Member형이다.
정답: O

(2) 위(1)과 같이 개발자가 정의하는 자료형을 사용자정의 자료형이라고 한다.
정답: O

(3) Member 클래스에는 실행부가 없으므로 java.exe로 실행시킬 수 없으며 프로그램의 시작은 다른
   클래스가 담당해야 할 것이다.
정답: O / java.exe 실행하면 언제나 자동으로

(4) B에서 Member 클래스의 age 변수가 7로 변경된다.
정답: X // age가 태어나지 않음 int로 넣어주던지,, 멤버변수

(5) C와 같이 객체 자료형을 메모리에 올리는 과정을 인스턴스화라 하고, 이 과정에 의해 메모리에
   만들어진 객체1개를 인스턴스라 한다.
정답: O

 
다음 중 틀린 것은?

public class Book {
   // 컴파일러는 최소한의 관여
   int price; //A O
   int page=300; 
   boolean onSale; //B false

   public static void main(String[] args) {
      price=500; //C 인스턴스 생성없이는 쓸 수 없다~!
      Book b1 = new Book(); //D
      Book b2 = new Book(); //E

      b1.page=200; //
      System.out.println(b2.page);//F
   }
}

(1) 위 Book 클래스는 main 실행부가 있기 때문에 java.exe로 실행할 수 있는 클래스이다.    정답: O

(2) A의 price는 개발자가 초기값을 할당하지 않았기 때문에 아무런 값도 들어있지 않다.    정답: X // 0으로 들어있음
 
(3) B에서 컴파일러에 의해 초기화되는 디폴트값은 true이다.    정답: X // false 기본값

(4) C에 의해 Book 클래스의 price 값은 500으로 변경된다.  정답: X

(5) D, E에 의해 메모리에 올라간 인스턴스는 총 2개이다.  정답:

(6) F에서 출력되는 결과는 200이다. 정답: X // 300

JVM(자바 가상머신)의 논리적 메모리구조에 대한 설명 중 틀린 것은?



(1) .java 파일을 컴파일하는 시점에 .class 파일이 생성되어지면서 메모리에 로드된다. 정답: X /변환만 되므로, ctrl2 로 실행할때


(2) 프로그램 실행시 .class 파일을 해석한 코드가 Method 영역에 올라가게 된다. 정답: O

(3) Stack은 FILO로 데이터가 관리되며 자바의 모든 지역변수는 이 Stack에 생성된다. 정답: O // FILO

(4) 모든 인스턴스는 Heap에 생성되어지며 , 소멸은 GC(gabage collector)가 담당한다.정답: O

다음 설명 중 틀린 것은?

(1) 클래스로 부터 인스턴스를 생성하려면 new 연산자를 사용해야 한다. O

(2) new 연산자는 일반 데이터가 아닌 덩치 큰 객체 데이터를 메모리에 올릴 때 사용하는 연산자이다.O

(3) 일반변수는 변수 자체가 데이터를 포함할 수 있지만, 레퍼런스 변수는 객체를 직접 포함하지 않으
   며 단지 객체가 메모리상에 위치한 주소 값만을 보유하고 있다. 레퍼런스 변수 O

(4) 지역 변수는 힙(heap) 영역에 생성되며, 객체는 stack 영역에 생성된다. X // 지역변수는 stack, 객체는 heap


다음 중 틀린 것은?
public class Tree {

      int root=1; //A 인스턴스 변수, 멤버변수, 힙
      static int height=30; //B 클래스 변수, 멤버변수, 원본

      public static void main(String[] args) {
                 Tree.height=56;

                  Tree t1 = new Tree();  //C
                  Tree t2 = new Tree();  //D

                  t1.height=30;//E

                  System.out.println(t2.height); //F 
                  System.out.println(Tree.height); //G
      }
}
(1) A에서 root는 인스턴스가 생성될 때 해당 인스턴스 내에 포함되므로, 인스턴스 변수라 불린다. O
(2) B에서 height를 사용하기 위해서는 Tree 클래스의 인스턴스 생성이 필요하다. X
(3) C,D에서 생성된 각각의 인스턴스마다 root와 height 변수가 힙영역에 함께 생성되어 진다  X
(4) E에서 height 변수는 클래스 변수이므로 인스턴스명으로 접근할 수 없다. X
(5) F의 출력결과는 25가 출력된다. X / 30
(6) G처럼 클래스명으로 변수에 접근하는 것은 불가능하다. X 
다음 설명 중 틀린 것은?

(1) static으로 선언한 변수와 메서드는 인스턴스에 소속되지 아니하므로, 클래스를 통해서 접근이 가능하다.따라서 static 으로 선언한 변수를 가리켜 클래스 변수라 한다. O 정적, 클래스 변수 

(2) non-static 영역에서는 static 영역에 존재하는 변수 및 메서드를 클래스명만 알면 접근할 수 있지만, 
   static 영역에서는  non-static 영역에 있는 변수 및 메서드 접근시  객체의 레퍼런스가 없다면 접근이 
불가능하다  O

(3)자바의 모든 코드는 클래스안에 존재해야 하므로, 전역변수의 개념이 존재하지 않는다. 따라서 프로그램이 종료될때까지  heap에 올려진 객체들간 데이터를 공유하려면 모든 객체들이 접근할 수 있는 메모리영역이 필요한데, 이 영역이 바로 static 영역이다. O

(4) 특정 클래스를 대상으로 new 연산자를 3번 적용 시켰다 해도, static으로 선언된 변수는 인스턴스에 소속된변수가 아니라 클래스에 소속된 변수이므로, 메모리에 중복해서 올라가는 일은 없다. O

빈 칸에 알맞은 단어를 채우세요.  가장 중요

(1) 클래스가 디자인 타임의 객체를 설계한 것이라면 ,실행 타임(  런타임        )시 메모리에 올라가는 
   객체 한 단위를 (      인스턴스      )라고 한다.
// 클래스 -> 디자인 타임의 객체 설계

(2) Car  a = new Car() 에서 Car 는 자료형에 해당하고, a는 변수이지만  a와 같이 기본 자료형이 아닌
   객체의 주소값을 가지는 변수를  (     레퍼런스 변수     ) 라고 한다.

(3) 객체 생성 후 프로그래머가 따로 메모리 관리를 해주지 않아도 자동으로 사용되지 않는 객체들을 
소멸시키는 JVM의 메모리 청소기능을 (   가비지 컬렉션   ) 이라한다.

----------------------------------------------------------- 여기까지-----------------------------------------------------------------

(4) 메인 메서드는 개발자가 직접 호출 할 수 없으며 실행 시 (  클래스 변수?????       ) 에 의해 자동 호출된다.

(5) 레퍼런스 변수값을 출력해보면 @ 형태의 데이터가 출력되는데, 이것은 객체 자체의 값이 아니라 그 
객체의 (     ) 값이다.

(6) 클래스로부터 생성되는 인스턴스가 메모리에 올라갈 때 ,클래스 내부에 정의한 변수, 메서드는 각각의 인스턴스마다 할당되어 지므로, 이 변수와 메서드를 각각 (     ) 변수 , (        ) 메서드라
   고 한다.

(7) JVM도 프로그램이므로, 메모리를 OS로부터 할당받아 사용한다. 이때 JVM에서 사용되는  메모리 
  영역은 크게 (         ) , (           ), (           ) 영역으로 나눌 수 있다.

(8) 일반 데이터가 아닌 객체의 주소값을 담는 변수를 (             ) 라고 한다.

(9) 객체 생성시 프로그래머의 의도와는 상관없이 new 연산자 뒤에서 무조건 호출되는 메서드를
   (         ) 라고 하며, 반드시 클래스명과 같아야 한다.

(10) 현실의 사물을 객체라고 하며, 이 객체를 자바 언어로 모델링 한 설계도가 (     )이며 이 (      )를 기준으로 메모리에 생성된 객체 한 단위를 (         ) 라고 한다.