[JAVA] 자바 - 객체 배열 선언 (배열 합 & 랜덤 배열 값 추출)
by mini_min[JAVA]
자바 - 객체 배열 사용하기
지난 수업에서 배운 내용 인스턴스 변수, 메소드 / 클래스 변수, 메소드
이제부터 본격적으로 메소드 공부하기... 객체 배열은 어떻게 만들까?
1) 객체 생성을 위해 class 부터 만들기
class Test8 {
String name; //인스턴스 변수 name, age
int age;
public String state() {
return age>=19 ? "성인" : "미성년자"; //인스턴스 메소드
}
public void write() { //인스턴스 메소드
String s = state();
System.out.println(name + " : " + age + " , " + s);
}
}
✔️ 필드
'name' 과 'age'
✔️ 메소드
1) 성인인지 확인하는 메소드
2) 출력 메소드
2) 객체 배열 선언문 작성하기 !
*main 안에 작성해준다.
Test8[] tt = new Test8[5];
// Test8 객체를 5개 저장할 수 있는 배열을 선언
// 메모리 할당된 것이 아니다.
// t1=null, t2=null ,t3=null ,t4=null ,t5=null; 과 유사
// 클래스에 대한 객체가 메모리를 할당하는 방법은 생성자를 호출해야 가능함
//tt[0].age = 17;
// 배열 객체의 메모리 할당
for(int i=0; i<tt.length; i++) {
tt[i] = new Test8(); // 클래스에 대한 객체는 생성자를 호출해야 메모리 할당됨
}
tt[0].name = "이자바";
tt[0].age = 19;
tt[0].write();
◾ Test8[] tt = new Test8[5];
= tt 라는 객체를 5개 배열이 저장될 수 있는 배열로 선언
= 메모리 할당 필요
◾ for(int i=0; i<tt.length; i++) {
tt[i] = new Test8();
= for 반복문 사용
= 배열 길이(5) 만큼 배열 하나씩 메모리 할당 (new Test8(); 생성자 호출)
◾ 선언, 메모리 할당 완료!
객체 배열 합
랜덤 배열 값 추출
다음으로 객체 배열을 응용해서 메소드를 생성하여 배열의 합과 랜덤값을 구하는 문제.
1) 배열의 합을 구하는 메소드 작성
class Test4 {
public int total(int[] num) { //배열 값의 합 구하기
int s = 0;
for(int i=0; i<num.length; i++) {
s += num[i];
}
return s;
}
◾ 메소드 이름 = total
인수는 int [] 배열을 받는다.
◾ for(int i=0; i<num.length; i++) {
s += num[i];
}
= for 반복문 시행하여 배열 길이만큼 s += num[i] 을 더하여 계산
2) 객체 생성 및 메모리 할당
int [] n = {2,4,6,8,10};
int s;
Test4 obj = new Test4();
s = obj.total(n);
System.out.println(s);
◾ 배열 int []n 에 메모리 할당 / s는 배열의 합을 받을 변수다.
◾ obj 객체 생성 완료
◾ obj.total(n);
= obj 객체의 total 메소드에 n 배열을 넣어 나오는 값 출력하면 끝.
이번에는 1~100까지 발생하는 난수를 배열로 추출하기!
💡 1~100까지 난수 추출하는 공식
int a = (int)(Math.random()*100) + 1;
1) 랜덤으로 발생하는 배열 값 추출
public int[] random(int n) { //랜덤 발생한 배열 주소(값) 추출
if(n<1)
return null;
int[]a = new int[n];
for(int i=0; i<a.length; i++) {
a[i] = (int)(Math.random()*100) + 1;
}
return a; //1개 이상 리턴 못하지만, 배열을 이용하면 여러 값 가능
//리턴타입에 배열을 넣으면 배열의 주소 1개(+여러값) 출력 가능
}
◾ 리턴 타입 : int []
◾ 메소드 이름 : random
◾ 매개변수 형태 : int (n 1개)
◾ 일단 음수는 출력 안할거니까 if 문으로 음수는 'null' 리턴해준다.
◾ 메소드 안에서 배열을 만들어준다.
💡 배열 만드는 공식
int [] a = new int [];
매개변수 n 값을 받으면 n값 길이만큼의 배열을 만든다.
◾ for 문 실행
= 배열 a의 배열길이 만큼 반복 실행한다.
= 반복 실행문 : 랜덤으로 a[0]~a[a.length]까지 난수 삽입
✔️ return a;
return 은 1개 이상을 리턴하지 못하지만, 배열을 이용하면 여러 값을 리턴 할 수 있다.
리턴 타입에 배열을 넣으면 배열 주소만큼 출력 가능
2) 객체 생성
int[] num = obj.random(10);
for(int a : num) {
System.out.println(a + " ");
}
◾ 향상된 for 문으로 배열을 출력해주면 끝!
'Java' 카테고리의 다른 글
[JAVA] 자바 - 비정형 인자(Varargs, 가변인수) (0) | 2022.07.19 |
---|---|
[JAVA] 자바 - 메소드 오버로딩 overloading (0) | 2022.07.19 |
[JAVA] 자바 - 재귀 호출 (0) | 2022.07.19 |
[JAVA] 자바 - call by value / call by reference (0) | 2022.07.19 |
[JAVA] 자바 - 메소드 (유용한 연산) (0) | 2022.07.19 |
블로그의 정보
개발자 미니민의 개발로그
mini_min