—ฅ/ᐠ. ̫ .ᐟ\ฅ —

과목 일반

[자바프로그래밍] 🎓 중간고사 오답노트

WIFI-Aircat 2024. 12. 30. 18:23
💾 Java Programming
Mid-term Exam

🆀 문제 1.

다음 코드에서 각 변수의 출력 결과 예측하기

public class Object {
int size;
public static int objectCount = 0;
    public Object(int size) {
     this.size = size;
        objectCount++;
        }

    public void sample(Object oa, Object ob, int size) {
        this.size = size;
        oa.size = this.size;
        ob = new Object(4);
        size = 6;
    }

    public static void main(String[] args) {
        Object o1 = new Object(1);
        Object o2 = new Object(2);
        Object o3 = new Object(3);
        int size = 5;
        o1.sample(o2, o3, size);
       
        System.out.println(o1.size); 5
        System.out.println(o2.size); 5
        System.out.println(o3.size); 3
        System.out.println(size); 5
        System.out.println(object.pizzaCount);
    }
}

🅰 정답

5 ► sample 메서드에서 `this.size = size;`
5 ► sample 메서드에서 `oa.size = this.size;`
3  ► sample 메서드에서 `ob = new Object(4);`로 o3과 관련 없는 새로운 객체를 생성하므로 o3.size는 변경되지 않고 초기 값인 3을 유지

5 ► size = 6;은 sample 메서드에서만 유효, 5로 유지


🆂 풀이

- (line2) `int size;` : 인스턴스 변수
클래스가 생성한 각 객체의 size를 저장.
인스턴스 전체에서 접근 가능하며 각 인스턴스마다 별도로 존재함.
- (main 함수) `int size = 5;` : 지역변수
main() 메서드 안에서만 쓰이는 임시 변수.
메서드가 끝나면 사라지며 클래스의 다른 부분에서 접근할 수 없음.

특성 인스턴스 변수 정적 변수 지역 변수
선언 위치, 소속 클래스 내부&&메서드 외부에 선언, 객체 인스턴스에 소속 static로 클래스 내부에 선언, 클래스 자체에 소속 메서드 혹은 블록 내부에 선언, 해당 메서드나 블록{}에 소속
초기화, 생성 주기 객체 생성 시 초기화, 객체가 존재하는 동안 유지 클래스 로드 시 한 번만 초기화, 프로그램 종료 시까지 유지 메서드 호출 시 생성, 메서드 실행 동안만 유지
접근 방식, 공유 여부 객체 참조를 통해 접근(o1.size), 각 인스턴스별로 개별 값 유지 클래스명으로도 접근(Object.objectCount) 가능, 모든 인스턴스가 공유 메서드 내부에서 직접 접근, 다른 메서드나 인스턴스에서 접근 불가
주요 용도 객체마다 개별 상태 저장 모든 객체가 공유해야 하는 값이나 상태 저장 메서드 실행 중 임시 데이터 저장

🆀 문제2.

Compareable Class의 compareTo()를 오버라이드하여 내림차순 정렬하기


🆂 풀이

`implements Comparable<T>`
`compareTo()` 함수는 양수를 반환하면 큰 것으로, 음수를 반환하면 작은 것으로 판단
- this(현재 객체) - o(비교 대상) : 오름차순 정렬
- o(비교 대상) - this(현재 객체) : 내림차순 정렬

@Override
public int compareTo(Object o) {
	return o.number - this.number;
}

 

반응형