[Java] 객체 배열 / 메소드
2021. 11. 19. 14:39ㆍLanguage`/Java
목차
객체 배열
- 객체에 대한 레퍼런스를 원소로 갖는 배열
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] + " "); }
