[Java] 객체 배열 / 메소드
2021. 11. 19. 14:39ㆍLanguage`/Java
728x90
반응형
객체 배열
- 객체에 대한 레퍼런스를 원소로 갖는 배열
class Circle{
int radius;
public Circle(int radiut){
this.radius = radius;
}
public double getArea(){
return 3.14*radius*radius;
}
}
1. 배열에 대한 레퍼런스 선언
- 배열의 크기를 지정하면 컴파일 오류 발생
Circle[] c;
2. 레퍼런스 배열 생성
c = new Circle[5];
3. 객체 생성
for(int i=0; i<c.length; i++)
c[i] = new Circle(i); // i번째 Circle 객체 생성
메소드의 활용
메소드 형식
- 메소드 : 클래스의 멤버 함수
- 메소드 앞에는 접근 지정자를 선언
인자 전달 방식 (Argument Passing)
1. 기본 타입의 값 전달
- 메소드의 매개변수가 기본 타입 (byte, char, short, int, long, float, double, boolean)으로 선언된 경우
-> 호출자(Caller)가 건네는 값이 매개변수에 복사되어 전달
-> 메소드의 매개변수 : 변경 O / 호출된 실제 인자의 값 : 변경 X
.....
static void increase(int m){
m = m + 1;
}
}
public class abc {
public static void main(String[] args){
int n = 10;
increase(n); // static void increase(int m) 호출
System.out.println(n);
}
≫ increase(int m) 메소드 호출
≫ 매개변수 m 생성 + 10으로 초기화 -> 그리고 m 값 1증가
≫ main()메소드로 돌아오면 변수 n 값은 여전히 10
2. 객체 전달
- 메소드의 매개변수가 클래스 타입인 경우
-> 객체의 레퍼런스 값이 전달
.....
static void increase(Circle m){
m.radius++;
}
}
public class abc {
public static void main(String[] args){
Circle pizza = new Circle(10);
increase(pizza); // static void increase(Circle m) 호출
System.out.println(pizza.radius);
}
≫ increase(Circle m) 호출
≫ 매개변수 m생성 + pizza 변수에 저장된 값(레퍼런스)이 m에 복사
≫ m, pizza는 동일한 객체를 가리킨다
≫ m.radius++;에 의해 radius -> 11로 변경
≫ increase() 종료 후에도 그대로 radius -> 11
3. 배열 전달
- 메소드의 매개변수가 배열 타입인 경우
-> 배열에 대한 레퍼런스만 전달
.....
static void increase(int[] array){
for(int i=0; i<array.length; i++){
array[i]++;
}
}
}
public class abc {
public static void main(String[] args){
int a[] = {1, 2, 3, 4, 5};
increase(a);
for(int i=0; i<a.length; i++)
System.out.print(a[i] + " ");
}
728x90
반응형