본문 바로가기
JAVA

2022-10-13 객체지향언어 - 배열, 클래스 메소드(static메소드)와 인스턴스 메소드

by HTT 2022. 10. 13.

배열

 


- 가변데이터는 배열에 저장하면 안 된다.

 

1. 배열의 선언

int[] arr;

 

2. 배열의 생성

arr = new int[3];

 

3. 배열의 초기화

arr[0] = new String("java");

 

=> 생성할 때 정의한 크기만큼 각각의 데이터를 저장할 수 있는 공간이 만들어진다.
     이를 요소라고 하고 각 요소에는 index가 부여된다.
     배열변수[index]=배열변수에 저장할 값


   - 배열의 요소에는 초기값을 주지 않아도 자동으로 초기값이할당된다.
     int(정수) = 0
     double(실수) - 0.0
     boolean - false
     참조형 = null

 

 

4. 배열의 선언과 생성을 동시에

int[] arr = new int[10];

 

5. 배열의 선언, 생성, 초기화를 한 번에

int[] arr = {10, 20, 30, 40, 50};
//자바답게
int[] arr2 = new int[] {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};

 

6. 배열의 입력과 출력을 직접 다 하지 않고 for문을 이용해 출력하기

package array;  // 1~45까지의 랜덤한 숫자를 배열에 담아 출력하기
import java.util.Random;
public class ArryExam02 {
	public static void main(String[] args) {   // (*45)+1
		Random rand = new Random();
		int[] array = new int[5];
		
		for (int i = 0; i < array.length; i++) {
			array[i] = rand.nextInt(45)+1;
		}
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}
}

 

7. 메소드 이용해 반복되는 배열 출력하기

int[] ia = new int[] { 3, 7, 1, 8, 10, 2, 15, 2, 10 };  // 원본
		int[] ib = new int[] { 1, 2, 3, 4, 5 };
		int z = 0;
		int h = 0;
			
		for (int i = 0; i < ia.length; i++) { // ia
			if (ia[i] % 2 == 0) {
				z += ia[i];
			} else {
				h += ia[i];
			}
		}
		System.out.println("( 배열 ia )");
		System.out.println("홀수의 합 : " + h);
		System.out.println("짝수의 합 : " + z);

		z = 0;
		h = 0;
		for (int i = 0; i < ib.length; i++) { // ib
			if (ib[i] % 2 == 0) {
				z += ib[i];
			} else {
				h += ib[i];
			}
		}
		System.out.println("( 배열 ib )");
		System.out.println("홀수의 합 : " + h);
		System.out.println("짝수의 합 : " + z);

 

--------메소드 적용한 코드---------

package array;

    public class ArrayExam04 {
        public static void main(String[] args) {
        free(ia, "name");
        free(ib, "name");
    }
    // main메소드 밖에 적기
    
    public static void free(int[] arr, String name) {  // 배열의 이름도 다르니 name매개변수 만들기
		System.out.println("( 배열 "+name+" )");
		int z = 0;
		int h = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] % 2 == 0) {
				z += arr[i];
			} else {
				h += arr[i];
			}
		}
		System.out.println("홀수의 합 : " + h);
		System.out.println("짝수의 합 : " + z);
	}
}

 

7-2. 메소드 이용해 반복되는 배열 출력하기

package array;
public class RefArryTest {
	public static void main(String[] args) {
		Customer obj1 = new Customer("kim", "1234", "김하늘");
		Customer obj2 = new Customer("fe", "1234", "페데리코");
		Customer obj3 = new Customer("aaa", "1234", "아델");
		Customer obj4 = new Customer("silian", "1234", "실리안");
		
		System.out.println("*********고객리스트*********");
		System.out.println("아이디:"+obj1.getId()+" 비밀번호:"+obj1.getPass()+" 이름"+obj1.getName());
		System.out.println("아이디:"+obj2.getId()+" 비밀번호:"+obj2.getPass()+" 이름"+obj2.getName());
		System.out.println("아이디:"+obj3.getId()+" 비밀번호:"+obj3.getPass()+" 이름"+obj3.getName());
		System.out.println("아이디:"+obj4.getId()+" 비밀번호:"+obj4.getPass()+" 이름"+obj4.getName());
		
---------------------------------------------------적용--------------------------------------------------------
		
		System.out.println("*********고객리스트 배열*********");
		Customer[] customerList = new Customer[5];
		customerList[0] = obj1;
		customerList[1] = obj2;
		customerList[2] = obj3;
		customerList[3] = obj4;
		customerList[4] = new Customer("la", "1234", "라우리엘");
		
		for (int i = 0; i < customerList.length; i++) {
			System.out.println("아이디:"+customerList[i].getId()
			+" 비밀번호:"+customerList[i].getPass()+" 이름"+customerList[i].getName());
		}
	}
}

 

 

 

 

 

 

 


클래스 메소드(static메소드)와 인스턴스 메소드

 


- 인스턴스 메소드 : 인스턴스 변수와 관련된 작업을 하는, 즉 메소드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메소드

- 클래스 메소드(static메소드) : 메소드 앞에 static이 븥어 있으면 클래스 메소드이다. 인스턴스와 관계없는 메소드를 클래스 메소드로 정의한다.

* 변하지 않는 값 -> 상수는 static을 붙여준다.

- 클래스 메소드는 인스턴스 변수를 사용할 수 없다(그 반대는 가능함)

 

 

댓글