본문 바로가기

JAVA

객프 10주차

객체의 생성과 소멸

다른 프로그래밍 언어 : 객체를 제거하지 않으면 메모리 공간 부족 -> 소멸하는 과정 필요

자바 : 가상머신기계에서 자동으로 객체를 제거해주기 때문에 별도의 소멸 과정 필요X

*자바 가비지 컬렉터 : 사용하지 않는 객체를 자동으로 모으는 공간

=> 지워달라는 명령어를 사용할 수 있으나, 실행하진 않음. => JVM이 알아서 작동

1. 코드 2. 사용하지 않는 객체 선택 3. 삭제 4. 압축

 

인수전달방법

1. Call-by-value : 인수값 전달 => return이 필요함. 지역변수이기 때문에 클래스를 벗어나면 값 전달X

2. Call-by-reference : 주소값 전달 => return 필요하지 않음. 클래스를 벗어나도 값 전달O

 

정적멤버(static) VS 인스턴스 멤버

정적멤버 : 객체를 생성하지 않아도 사용 가능. 생명주기가 클래스가 사라질 때까지.

인스턴스 멤버 : 객체를 생성해야만 사용 가능. 생명주기가 그때마다 다름.

=> 인스턴스 멤버는 정적 멤버를 사용할 수 있으나, 정적 멤버는 인스턴스 멤버를 사용할 수 없음.

*정적멤버는 this사용 불가능. (this는 객체를 생성했을 때 사용하는 것이기 때문)

*상수를 쓸 때는 static의 의미도 포함인 것임. 그래서 static final double PI = 3.14; 이런 식으로 쓰는 것이 좋음.

 

정적멤버 접근 방법

1. 클래스의 이름

2. 객체 생성(객체로도 가능)

 

객체 배열 : 값이 아닌 참조값(주소값)을 저장한 후, 참조값이 배열을 만듦.

class Rect {
	int width, height;
	
	public Rect(int w, int h) {
		this.width = w;
		this.height = h;
	}
	
	double getArea() {
		return (double) width* height;
	}
}
public class RectArrayTest {

	public static void main(String[] args) {
		Rect[] list = new Rect[5];
		
		for (int i = 0; i < list.length; i++)
			list[i] = new Rect(i, i);
		
		for(int i = 0; i < list.length; i++)
			System.out.println(i+"번째 사각형의 면적="+list[i].getArea());
	}

}

list[0] -> Rect(0,0) 객체 생성
list[1] -> Rect(1,1) 객체 생성
list[2] -> Rect(2,2) 객체 생성
list[3] -> Rect(3,3) 객체 생성
list[4] -> Rect(4,4) 객체 생성
그래서 각 배열이 Rect 클래스에 연결되어 있는 것임. 각 배열마다 주소값을 가지고 있는 것.

 

ArrayList 

일반배열 : 크기가 고정되어 그 이상의 값 넣을 시 오류

동적 객체 배열 (ArrayList) : add 를 이용하여 자동적(동적)으로 크기가 변함.

import java.util.ArrayList;

public class ArrayListTest {
	public static void main(String[] args) {
    
    ArrayList<String> list = new ArrayList<String>();
    list.add("홍콩");
    list.add("싱가포르");
    list.add("괌");
    list.add("사이판");
    list.add("하와이");
    
    System.out.println("여행지 추천 시스템입니다.");
    int index = (int) (Math.random() * list.size());
    System.out.println("추천 여행지는 " +list.get(index));
    }
}

? 왜 list.length를 사용하지 않았는가

? get()은 무슨 메소드인가

'JAVA' 카테고리의 다른 글

객프 11주  (0) 2023.11.21
객프 10주차  (0) 2023.11.14
Power JAVA 개정3판 CHAPTER01 답  (0) 2023.10.30
자바 소개  (0) 2023.09.12
[JAVA] 변수와 타입  (0) 2023.08.23