[TIL] - 객체지향1

장동희·2023년 2월 21일
0

TIL

목록 보기
6/16

[TIL] - 객체지향1

오늘은 객체지향 Part.1을 배웠습니다. 개념으로는 클래스와 객체, 객체의 생성과 배열, 클래스의 정의, 변수의 종류, 메서드, 기본형 매개변수와 참조형 매개변수, static 메서드와 인스턴스 메스드, 오버로딩, 생성자, this와 this(), 변수의 초기화를 배웠습니다. TIL에서는 객체지향 Part.1의 예제문제를 다뤄보겠습니다.

문제1 :

6-13. 다음 중 인스턴스변수의 초기화 순서가 올바른 것은?
a. 기본값-명시적초기화-초기화블럭-생성자
b. 기본값-명시적초기화-생성자-초기화블럭
c. 기본값-초기화블럭-명시적초기화-생성자
d. 기본값-초기화블럭-생성자-명시적초기화

문제1 풀이 :

정답 : a
변수의 초기화 순서 :

  • 클래스변수의 초기화시점 : 클래스가 처음 로딩될 때 단 한번 초기화 된다.
  • 인스턴스변수의 초기화시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.
  • 클래스변수의 초기화순서 : 기본값 → 명시적초기화 → 클래스 초기화 블럭
  • 인스턴스변수의 초기화순서 : 기본값 → 명시적초기화 → 인스턴스 초기화 블럭 → 생성자



문제 2 :

6-14. 다음 중 지역변수에 대한 설명으로 옳지 않은 것은? (모두 고르시오)
a. 자동 초기화되므로 별도의 초기화가 필요없다.
b. 지역변수가 선언된 메서드가 종료되면 지역변수도 함께 소멸된다.
c. 메서드의 매개변수로 선언된 변수도 지역변수이다.
d. 클래스변수나 인스턴스변수보다 메모리 부담이 적다.
e. 힙(heap)영역에 생성되며 가비지 컬렉터에 의해 소멸된다.

문제2 풀이 :

정답 : a, e

  • a : 지역변수는 자동 초기화 되지 않기 때문에 사용하기 전에 반드시 적절한 값으로 초기화를 해주어야한다.
  • e : 힙(heap)영역에는 인스턴스(인스턴스변수)가 생성되는 영역이며,
    지역변수는 호출스택(call stack)에 생성된다.



문제 3 :

6-20. 다음과 같이 정의된 메서드를 작성하고 테스트하세요.
메서드명 : max
기능 
주어진 int형 배열의 값 중에서 제일 큰 값을 반환한다.
만일 주어진 배열이 null이거나 크기가 0인 경우, -999999를 반환한다.
반환타입 : int
매개변수 : int[] arr - 최대값을 구할 배열
class Exercise6_20 {
    /* (1) max 메서드를 작성하시오 . */
    public static void main(String[] args) { 
        int[] data = {3,2,9,4,7}; 
        System.out.println(java.util.Arrays.toString(data)); 
        System.out.println("최대값 :"+max(data)); 
        System.out.println("최대값 :"+max(null));
        System.out.println("최대값  :"+max(new int[]{})); // 크기가 0인 배열  }
    }
}

//예상 결과 : 최대값: 9 / 최대값: -99999 최대값: -999999

문제3 풀이 :

 public static int max(int[] arr){
        if (arr == null || arr.length ==0){ //만약 null값이나 배열의 길이가0일때
            return -999999;					//-999999f룰 리턴한다.
        }
        int max = arr[0]; 				
        for (int i = 0; i < arr.length; i++) {	//최댓값을 구하는 로직
            if (arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }

오늘의 느낀점 :

오늘 객체지향 Part.1을 배우면서 객체와 클래스의 개념을 알게되었고 자바가 왜 대표적인 객체지향 프로그래밍 언이인가에 대한 의문이 풀렸습니다. 이번 Part.1에서 어려웠던 부분은 기본형 매개변수와 참조형 매개변수 부분이였고 기본형 매개변수는 변수의 값을 읽기만 할 수 있습니다. 참조형 매개변수는 변수의 값을 읽고 변경할 수 있습니다.라고 설명이 되어있었으며 이 설명은 매개변수 타입이 기본형일 때는 기본형 값이 복사, 참조형이면 인스턴스의 주소가 복사된다는것을 이해했습니다. 앞으로 배울 객체지향Part.2를 더 잘 이해하기 위해서는 Part.1부분을 최대한 이해해야겠다고 느꼈습니다.

0개의 댓글