public class MainWrapper { public static void ex01() { // 가족이 3명인 경우 Family f = new Family(3); // 가족의 이름 3개, 나이 3개 String[] name = {"나", "엄마", "언니"}; int[] age = {20, 23, 30}; // 디폴트 생성자 + Setter for(int i = 0; i < f.getFamily().length; i++) { // f.getFamily().length == f.getFamilyCount() f.getFamily()[i] = new Person(); // 디폴트 생성자를 이용해서 배열 요소를 저장해 둔다. f.getFamily()[i].setName(name[i]); // Setter를 이용해서 이름을 저장한다. f.getFamily()[i].setAge(age[i]); // Setter를 이용해서 나이를 저장한다. } // 확인 for(int i = 0; i < f.getFamily().length; i++) { System.out.println((i+1) + "번째 가족 이름: " + f.getFamily()[i].getName()); System.out.println((i+1) + "번째 가족 나이: " + f.getFamily()[i].getAge()); } }
public static void ex02() { // Person이 3명인 Family 객체 생성 Family f = new Family(3); // 가족의 이름 3개, 나이 3개 String[] name = {"나", "엄마", "언니"}; int[] age = {20, 23, 30}; // 파라미터가 2개인 생성자 for(int i = 0; i < f.getFamily().length; i++) { f.getFamily()[i] = new Person(name[i], age[i]); } // 확인 for(int i = 0; i < f.getFamily().length; i++) { System.out.println((i+1) + "번째 가족 이름: " + f.getFamily()[i].getName()); System.out.println((i+1) + "번째 가족 나이: " + f.getFamily()[i].getAge()); } }
public static void ex03() { // ex01() 리팩토링 Family f = new Family(3); // 가족의 이름 3개, 나이 3개 String[] name = {"나", "엄마", "언니"}; int[] age = {20, 23, 30}; Person[] family = f.getFamily(); for(int i = 0; i < family.length; i++) { family[i] = new Person(); family[i].setName(name[i]); family[i].setAge(age[i]); } // 향상 for문 이용 for(Person p : family) { if(p != null) { // NullPointExeption을 방지해서 보다 안전한 코드가 된다. System.out.println("가족 이름: " + p.getName()); System.out.println("가족 나이: " + p.getAge()); } } }
public static void ex04() { // ex02() 리팩토링 Family f = new Family(3); // 가족의 이름 3개, 나이 3개 String[] name = {"나", "엄마", "언니"}; int[] age = {20, 23, 30}; // 리팩토 Person[] family = f.getFamily(); // 파라미터가 2개인 생성자 for(int i = 0; i < family.length; i++) { family[i] = new Person(name[i], age[i]); } // for문으로 확인 for(int i = 0; i < family.length; i++) { System.out.println((i+1) + "번째 가족 이름: " + family[i].getName()); System.out.println((i+1) + "번째 가족 나이: " + family[i].getAge()); } // 향상 for문 NullPointExeption 방지 예시 (객체는 항상 null 값을 조심해야한다.) family[1] = null; for(Person p : family) { if(p != null) { System.out.println("가족 이름:" + p.getName()); System.out.println("가족 나이:" + p.getAge()); } } }
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public class Family { private int familyCount; // 가족의 수, 배열의 길이 private Person[] family; // 가족 배열, 배열의 선언만 수행 public Family(int familyCount) { this.familyCount = familyCount; family = new Person [familyCount]; // 배열의 생성이 수행 } public int getFamilyCount() { return familyCount; } public void setFamilyCount(int familyCount) { this.familyCount = familyCount; Person[] temp = new Person[familyCount]; System.arraycopy(family, 0, temp, 0, family.length); family = temp; // 임시 배열의 주소값을 패밀리 배열에 복사 } public Person[] getFamily() { return family; } public void setFamily(Person[] family) { this.family = family; } }
🤣엄마는 23살 이지만 언니는 30살이다 포항항~🤣👍