코드 그라데이션

클래스 배열 본문

Java, SpringBoot 추가 공부

클래스 배열

완벽한 장면 2023. 5. 1. 16:35

클래스 배열을 쓰는 이유

일반 배열을 쓰게 되면 모든 원소를 일일이 개수만큼 담아줘야하는데, 

배열이 필드의 개수만큼 필요하다

 

예를 들면 컴퓨터를 담으려면 컴퓨터가 종류, cpu, 가격으로 이루어졌다면 배열 3개를 만들어야 하는데,

그냥 "컴퓨터가 가지고 있는 정보"라는 공통점이 있고,

그래서 컴퓨터라는 클래스 속성 하나로 퉁쳐서 만들어버리는 편리함을 얻을 수 있다.

 

이제부터는 배열의 필드를 따로 담는게 아니라,

클래스째로 담아버리면 얘네들을 따로 들고다닐 필요가 없어짐.

 

필드에서는 선언과 동시에 초기화만 가능.

코드를 쓰는 것은 함수 안에다가 해야

생성자도 함수라는 것을 간과하지 말자.


그리고, 

Integer, String 같이 자료형을 반환하기 위한 데이터 타입이 있는데,

클래스 반환형도 클래스 자체가 데이터 타입이 될 수 있다는 말이다.


그리고...

함수를 정의할 때 왜 다른 함수들에서 같은 변수명을 써도 에러가 나지 않는가?

=> 함수는 모두 독립된 공간을 가지고 있다고 판단하기 때문이다.


 만약 이런 함수가 있으면

void receiveComputer(Computer computer) { // 컴퓨터를 받아와서
    for (int i = 0; i < com.length; i++) {
      if (com[i] == null) { // 그 공간이 null이면
        com[i] = computer; // 구매한 컴퓨터를 채워준다(장바구니에)
        break;
      }
    }
  }

computer 이게 null이 아니라는 보장이 있는가?

=> 없다.

void receiveComputer(Computer computer) { // 컴퓨터를 받아와서
    for (int i = 0; i < com.length; i++) {
      if (com[i] == null) { // 그 공간이 null이면
        com[i] = computer; // 구매한 컴퓨터를 채워준다(장바구니에)
        break;
      }
    }
  } 이것과

 

void receiveComputer() { 

    Computer computer
    for (int i = 0; i < com.length; i++) {
      if (com[i] == null) {
        com[i] = computer; 
        break;
      }
    }
  }

 

이것은 선언은 유사하나, 전자는 외부에서(부른 쪽에서) 받아오는 것이고, 후자는 초기화를 직접 해준다.

그런데 전자의 computer는, null이어도 에러가 안 나요.

그래서 해당 함수만 가지고 판단하기는 어렵습니다.

 

 

 

728x90

'Java, SpringBoot 추가 공부' 카테고리의 다른 글

[Java] 날짜, 시간 관련 함수  (0) 2023.05.04
[Java] 문자열 더하기와 String Builder  (0) 2023.05.04
Getter, Setter 그림  (0) 2023.04.30
제네릭에서 <T>의 의미  (0) 2023.04.28
230324 상속 개념 정리  (0) 2023.04.04
Comments