for(int i=0; i<a.length; i++)
a[i] = new Array(i);
배열의 크기만큼 Array 객체를 생성하여 레퍼런스 배열에 하나씩 대입.
메소드 활용
메소드 형식
접근 지정자 / 리턴 타입 / 메소드 이름(메소드 인자들){ ... 메소드 코드 ... } 형식으로 작성
public int Sum(int i, int j){
...
}
접근 지정자 : public, private, protected, 디폴트로 4가지 유형. 다른 클래스에서 호출될 수 있는지 지정하기 위해 사용.
인자 전달
기본 타입의 값이 전달되는 경우
메소드의 매개변수가 기본 타입이면 값이 매개변수에 복사되어 전달된다.
ex) main()에서 변수 n에 저장된 값을 increase(int m){ m += 1; }라는 메소드에 전달하고자 한다. 그러면 매개변수 m이 생성되며 10으로 초기화된다. 그 후 m은 1을 증가시키지만 increase에서 리턴하여 main 메소드로 돌아오면 변수 n의 값은 10으로 변하지 않는다.
객체가 전달되는 경우
메소드의 매개변수가 클래스 타입이면 객체의 레퍼런스 값이 전달된다.
ex) increase(pizza)에 의해 increase(Circle m)이 호출되면 매개변수 m이 생성되고 pizza변수에 저장된 값이 매개변수 m에 복사되어 m은 pizza가 가리키는 객체를 함께 가리키게 된다. 따라서 increase()가 종료된 후에도 값은 변경된 값을 가진다.
※ 객체의 레퍼런스만 전달되는 것. 객체가 통째로 복사되는 것은 아니다.
배열이 전달되는 경우
객체 레퍼런스가 전달되는 경우와 동일. 배열에 대한 레퍼런스만 전달.
배열이 메소드에 전달되면 두 레퍼런스는 하나의 배열을 공유한다.
메소드 오버로딩(메소드 중복)
: 한 클래스내에 이름은 같지만 매개변수의 타입이나 개수가 서로 다른 여러개의 메소드를 중복 작성한 경우.
: 메소드 이름이 동일해야 된다.
: 매개변수의 개수나 타입이 서로 달라야 한다.
가비지
new로 할당받은 후 사용하지 않게 된 객체 메모리.
a = new Person("a");
b = new Person("b");
b = a;
다음과 같이 b가 원래 가리키던 객체는 아무도 참조하지 않게 되므로 가비지가 된다.
가비지 컬렉션
가용 메모리가 일정 크기 이하로 줄어들면 자동으로 가비지를 회수하여 가용 메모리를 늘리는 것.
▶가바지가 많아지면 응용프로그램에게 할당해줄 수 있는 가용 메모리 양이 줄어든다. 가비지가 계속 늘어 가용 메모리가 0이되면, 자바 응용 프로그램은 더 이상 실행 불가해질 수 있다.
[Java] 객체
객체 배열
객체에 대한 레퍼런스를 원소로 갖는 배열
객체 배열 만들기
1. 배열에 대한 레퍼런스 선언
변수 a만 선언한 것. 배열을 생성한 것은 아니므로 배열의 원소 개수를 지정하면 안된다.
2. 레퍼런스 배열 생성
Array 객체에 대한 레퍼런스 5개 생성
Array 객체에 대한 레퍼런스 배열이 생성되고 변수 a가 이를 가리킴.
3. 객체 생성
배열의 크기만큼 Array 객체를 생성하여 레퍼런스 배열에 하나씩 대입.
메소드 활용
메소드 형식
접근 지정자 / 리턴 타입 / 메소드 이름(메소드 인자들){ ... 메소드 코드 ... } 형식으로 작성
접근 지정자 : public, private, protected, 디폴트로 4가지 유형. 다른 클래스에서 호출될 수 있는지 지정하기 위해 사용.
인자 전달
기본 타입의 값이 전달되는 경우
메소드의 매개변수가 기본 타입이면 값이 매개변수에 복사되어 전달된다.
ex) main()에서 변수 n에 저장된 값을 increase(int m){ m += 1; }라는 메소드에 전달하고자 한다. 그러면 매개변수 m이 생성되며 10으로 초기화된다. 그 후 m은 1을 증가시키지만 increase에서 리턴하여 main 메소드로 돌아오면 변수 n의 값은 10으로 변하지 않는다.
객체가 전달되는 경우
메소드의 매개변수가 클래스 타입이면 객체의 레퍼런스 값이 전달된다.
ex) increase(pizza)에 의해 increase(Circle m)이 호출되면 매개변수 m이 생성되고 pizza변수에 저장된 값이 매개변수 m에 복사되어 m은 pizza가 가리키는 객체를 함께 가리키게 된다. 따라서 increase()가 종료된 후에도 값은 변경된 값을 가진다.
※ 객체의 레퍼런스만 전달되는 것. 객체가 통째로 복사되는 것은 아니다.
배열이 전달되는 경우
객체 레퍼런스가 전달되는 경우와 동일. 배열에 대한 레퍼런스만 전달.
배열이 메소드에 전달되면 두 레퍼런스는 하나의 배열을 공유한다.
메소드 오버로딩(메소드 중복)
: 한 클래스내에 이름은 같지만 매개변수의 타입이나 개수가 서로 다른 여러개의 메소드를 중복 작성한 경우.
: 메소드 이름이 동일해야 된다.
: 매개변수의 개수나 타입이 서로 달라야 한다.
가비지
new로 할당받은 후 사용하지 않게 된 객체 메모리.
다음과 같이 b가 원래 가리키던 객체는 아무도 참조하지 않게 되므로 가비지가 된다.
가비지 컬렉션
가용 메모리가 일정 크기 이하로 줄어들면 자동으로 가비지를 회수하여 가용 메모리를 늘리는 것.
▶가바지가 많아지면 응용프로그램에게 할당해줄 수 있는 가용 메모리 양이 줄어든다. 가비지가 계속 늘어 가용 메모리가 0이되면, 자바 응용 프로그램은 더 이상 실행 불가해질 수 있다.
가비지 컬렉션 강제 요청
System or Runtime 객체의 gc( )메소드 호출
'Back-End > Java' 카테고리의 다른 글