JAVA

[JAVA] 클래스배열

sian han 2022. 2. 24. 19:16

클래스배열 넌 뒤졌다 진짜 개조져준다

static은 그냥 보내준다 운좋은줄 알아라 ;;;;

 

 

 

 

 

 

 

▶클래스 배열 배우기전 일반배열 연습해보기

 

 - 배열 선언 후 값 할당

int[] arr;
arr= new int[3];
arr[0]=10;
arr[1]=20;
arr[2]=50;

 

- for 문과 확장 for 문으로 배열보기

//for 
for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		

//확장 for
for(int n : arr) {
			System.out.println(n);
		}

 

일반 배열과 형식은 동일하니

클래스 배열 어렵게 생각하지말자 

 

 


여기 계좌번호잔액 멤버변수를 가지고있는 Account 클래스가 있다.

Account 클래스는

입금할 수 있는 deposit() 메서드

출금할 수 있는 withdraw() 메서드

계좌정보를 출력하는 display() 메서드를 가지고 있다

 

※ Account 클래스를 배열에 넣어 클래스배열을 만들어보자 ! 

 

▼ 클래스 변수에 값 넣기

   - int 변수에 값을 넣으려면 정수를 입력

     String 변수에 값을 넣으려면 문자열을 입력

     .

     .

     .

     클래스변수에 값을 넣으려면 ? 

       => new 로 객체를 생성해서 넣는다 ! 

     Account acc = new Account("001-100-2000", 10000);

 

 

 

 

 

 

▼ 클래스 배열에 값 넣기

   - int 배열에는 int를 넣는다

    String 배열에는 String 을 넣는다

 

    Account 배열에는 Account 를 넣는다.. 어떻게 넣지 ? 

      => new 로 객체생성해서 넣는다

 

 

1. 클래스 (Account  클래스) 배열 new 로 객체생성

Account[] accArr = new Account[3];

2. n번째 배열에 값 넣기 ( arr[3] = 10; ) 

accArr[0]= new Account("001-100-2001", 100000);

 

▼ 클래스 배열 값 확인하기

 

 - for 문 이용

for(int i=0;i<accArr.length;i++) {
			accArr[i].display();  
		}

 => Account 클래스가 가지고 있는 display() 메서드 호출하기는 어떻게 ?

         - 참조변수. 메서드 ()

 

△ same with

accArr[0].display();
accArr[1].display();
accArr[2].display();

 

 

 - 확장 for문 이용

for(Triangle t : arr) {
			t.draw();
		}

 

★최종정리★

(student 클래스는 기존에 만들어져있음)

student 배열만들고 요소 2개 넣기

for문, 확장for문 이용해서 보기

Student[] arr = new Student[2];
		arr[0] = new Student("한서현", "20220001");
		arr[1] = new Student("한서현", "20220002");

		for(int i = 0; i < arr.length; i++) {
		   arr[i].showInfo();
		}

		System.out.println();

		for(Student s : arr) {
		   s.showInfo();
		}

 

 

 

 

 

1. for 문을 이용해 2. 사용자에게 값을 받아 클래스배열 만들어보기

  ( 그냥 위의 과정을 for 문 이용해서 하는거임 )

Account[]arr = new Account[3];
		Scanner sc = new Scanner(System.in);
		
		for(int i=0;i<arr.length;i++) {
			
			System.out.println("계좌번호, 잔액, 출금액 입력 ! ");
			String accId=sc.nextLine();
			int balance = sc.nextInt();
			int money = sc.nextInt();
			sc.nextLine();
			
			arr[i]=new Account(accId,balance);
			arr[i].withdraw(money);

}

 

showInfo 메서드 없이 확장 for 를 이용하여 배열값출력하기

for (int i=0;i<arr.length ;i++ ){
     System.out.println("사각형의 넓이 : " +  arr[i].findArea());
}

 

 

 

 

 

 

▷ 3개가 입력되어도, 2개가 입력되어도 넘어가게 만들어라

    ★★★★★ 통째로 암기

 

1. 오버로딩 생성자

  - name,num,birth 세개를 적을 수도 있고

  - name, num 만 적을 수도 있다

public PhoneInfo(String name, String num, String birth)	{
		this.name=name;
		this.num=num;
		this.birth=birth;
	}

public PhoneInfo(String name, String phoneNumber){
		this.name=name;
		this.num=num;
	}

2. null , empty 설정

public void showInfo() {
		System.out.println("name: "+name);
		System.out.println("phone: "+num);
		
		if(birth!=null && !birth.isEmpty())
			System.out.println("birth: "+birth);
		
		System.out.println();
	}

  - 입력된 정보를 보여주되, 

       name과 num 은 보여주고 birth는 null 값이 아니거나 empty가 아니면 보여줘라

 

 

 

 

 

 

nextInt 다음에 nextLine 나오면 nextLine 하나 더 써서 엔터값 초기화해줘야 함

int a = sc.nextInt();
int b = sc.nextInt();
sc.nextLine();               /// 요렇게
int c = sc.nextLine();

◈ .equalsIgnoreCase

String quit = sc.nextLine();
if (quit.equalsIgnoreCase("Q"))break;