개발자 미니민의 개발스터디

[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 문으로 배열을 출력해주면 끝!

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기