
객체 참조형 변수를 저장하는 배열로 배열의 자료형을 클래스명(사용자 정의 자료형)으로 지정하여 활용

객체 배열 : 객체 참조형 묶음 배열
Member memberInfo = new Member();
이거는 member 1명
만약 member가 여러 명? 배열 사용 = 객체 배열
Member memberInfo1 = new Member();
Member memberInfo2 = new Member();
Member memberInfo3 = new Member();
선언
클래스명[] 배열명;
클래스명 배열명[ ] ;
할당
배열명 = new 클래스명[배열크기] ;
선언, 동시에 할당
클래스명 배열명[ ] = new 클래스명[배열크기];
인덱스를 이용한 초기화
배열명[i] = new 클래스명();
선언과 동시에 할당 & 초기화
클래스명 배열명[]
= {new 클래스명(), new 클래스명()};

1)

2)

3)

4)

5)

6)

0)

class EmployeeService
package edu.kh.oarr.practice.model.service;
import java.util.Scanner;
import edu.kh.oarr.practice.model.vo.Employee;
public class EmployeeService {
private Employee[] employees = new Employee[3]; // 사원 정보를 저장할 Employee 배열
private Scanner sc = new Scanner(System.in);
public void displayMenu() {
int sel = 0;
do {
System.out.println("=== 직원 관리 프로그램 ===");
System.out.println("1. 직원 정보 입력(3명)");
System.out.println("2. 모든 직원 정보 출력");
System.out.println("3. 특정 직원 정보 출력(이름 검색)");
System.out.println("4. 특정 직원 급여/연봉 출력(사번 검색)");
System.out.println("5. 모든 직원 급여 합/연봉 합 출력");
System.out.println("6. 모든 직원중 급여가 가장 높은 직원의 이름, 부서, 급여 출력");
System.out.println("0. 종료");
System.out.print("메뉴 선택 >> ");
sel = sc.nextInt();
sc.nextLine();
switch (sel) {
case 1: initEmployee(); break;
case 2: System.out.println(allEmployeesInformation()); break;
case 3: System.out.println(searchEmployee());break;
case 4: System.out.println(salaryCheck());break;
case 5: allSalaryCheck(); break;
case 6: topSalaryEmployee(); break;
case 0: System.out.println("프로그램 종료."); break;
default: System.out.println("잘못 입력하셨습니다.");
}
}while(sel != 0);
}
// 3명의 직원 정보를 입력받아 배열에 각 요소에 초기화
public void initEmployee() {
// 사번, 이름, 부서, 직급, 급여 순서로 입력받기
for(int i=0; i<employees.length; i++) {
System.out.println("\n===" + (i+1) + "번째 사원 정보 입력 ===");
System.out.print("사번 : ");
int empNo = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("부서 : ");
String dept = sc.next();
System.out.print("직급 : ");
String jobTitle = sc.next();
System.out.print("급여 : ");
int salary = sc.nextInt();
System.out.println();
employees[i] = new Employee(empNo, name, dept, jobTitle, salary);
}
}
// 모든 직원 정보를 하나의 문자열로 반환
public String allEmployeesInformation() {
String str = "";
for(int i=0; i<employees.length; i++) {
str += "사번 : " + employees[i].getEmpNo()
+ ", 이름 : " + employees[i].getName()
+ ", 부서 : " + employees[i].getDept()
+ ", 직급 : " + employees[i].getJobTitle()
+ " , 급여 : " + employees[i].getSalary() + "\n";
}
return str;
}
// 특정 사원 정보 반환 메소드(이름 검색)
// 일치하는 이름이 없을 경우 "일치하는 이름의 사원이 없습니다." 반환
public String searchEmployee() {
System.out.println("\n========== 특정 사원 정보 출력(이름 검색) ============");
System.out.print("이름 입력 : ");
String name = sc.next();
for(int i=0; i<employees.length; i++) {
if( employees[i].getName().equals(name)) {
return "사번 : " + employees[i].getEmpNo()
+ ", 이름 : " + employees[i].getName()
+ ", 부서 : " + employees[i].getDept()
+ ", 직급 : " + employees[i].getJobTitle()
+ " , 급여 : " + employees[i].getSalary() + "\n";
}
}
return "일치하는 이름의 사원이 없습니다.\n";
}
// 입력받은 사번과 일치하는 직원의 급여, 연봉 정보 반환(연봉 == 급여 * 12)
// 일치하지 않는 경우 "사번이 일치하는 직원 없습니다." 반환
public String salaryCheck() {
System.out.println("\n=== 급여/연봉 조회 ===");
System.out.print("사번 입력 : ");
int empNo = sc.nextInt();
for(int i=0; i<employees.length; i++) {
if(empNo == employees[i].getEmpNo()) {
return "급여 : " + employees[i].getSalary() + " / 연봉 : " + employees[i].getSalary() * 12 + "\n";
}
}
return "사번이 일치하는 직원 없습니다.\n";
}
// 모든 사원 급여 합/연봉 합 출력
public void allSalaryCheck() {
System.out.println("\n=== 모든 사원 급여 합/연봉 합 ===");
int sum = 0;
int salSum = 0;
for(int i=0; i<employees.length; i++) {
sum += employees[i].getSalary();
salSum += employees[i].getSalary() * 12;
}
System.out.println("전 직원 급여 합 : " + sum);
System.out.println("전 직원 연봉 합 : " + salSum);
System.out.println();
}
// 모든 직원중 급여가 가장 높은 직원 출력
// (동일한 급여인 경우 사번이 낮은 사람이 출력)
public void topSalaryEmployee() {
int max = employees[0].getSalary();
for(int i=0; i<employees.length; i++) {
if(max < employees[i].getSalary()) {
max = employees[i].getSalary();
}
}
for(int i=0; i<employees.length; i++) {
if(max == employees[i].getSalary()) {
System.out.println("이름 : " + employees[i].getName() +
", 부서 : " + employees[i].getDept() +
", 급여 : " + employees[i].getSalary() + "\n");
}
}
}
}
class Employee
package edu.kh.oarr.model.vo;
public class Employee {
// 필드(==멤버 변수)
private int memberNum;
private String memberName;
private String memberDep;
private String memberLevel;
private int memberSalary;
// 생성자
public Employee() {} // 기본 생성자
public Employee(int memberNum, String memberName,
String memberDep, String memberLevel, int memberSalary) {
this.memberNum = memberNum;
this.memberName = memberName;
this.memberDep = memberDep;
this.memberLevel = memberLevel;
this.memberSalary = memberSalary;
}
// 메소드
// getter / setter
public int getMemberNum() {
return memberNum;
}
public void setMemberNum(int memberNum) {
this.memberNum = memberNum;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberDep() {
return memberDep;
}
public void setMemberDep(String memberDep) {
this.memberDep = memberDep;
}
public String getMemberLevel() {
return memberLevel;
}
public void setMemberLevel(String memberLevel) {
this.memberLevel = memberLevel;
}
public int getMemberSalary() {
return memberSalary;
}
public void setMemberSalary(int memberSalary) {
this.memberSalary = memberSalary;
}
}
class PracticeRun
package edu.kh.oarr.run;
import edu.kh.oarr.model.service.EmployeeService;
public class PracticeRun {
public static void main(String[] args) {
EmployeeService service = new EmployeeService();
service.displayMenu();
}
}
class Employee
package edu.kh.oarr.model.vo;
public class Employee {
// 필드(==멤버 변수)
private int memberNum;
private String memberName;
private String memberDep;
private String memberLevel;
private int memberSalary;
// 생성자
public Employee() {} // 기본 생성자
public Employee(int memberNum, String memberName,
String memberDep, String memberLevel, int memberSalary) {
this.memberNum = memberNum;
this.memberName = memberName;
this.memberDep = memberDep;
this.memberLevel = memberLevel;
this.memberSalary = memberSalary;
}
// 메소드
// getter / setter
public int getMemberNum() {
return memberNum;
}
public void setMemberNum(int memberNum) {
this.memberNum = memberNum;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberDep() {
return memberDep;
}
public void setMemberDep(String memberDep) {
this.memberDep = memberDep;
}
public String getMemberLevel() {
return memberLevel;
}
public void setMemberLevel(String memberLevel) {
this.memberLevel = memberLevel;
}
public int getMemberSalary() {
return memberSalary;
}
public void setMemberSalary(int memberSalary) {
this.memberSalary = memberSalary;
}
}
class PracticeRun
package edu.kh.oarr.run;
import edu.kh.oarr.model.service.EmployeeService;
public class PracticeRun {
public static void main(String[] args) {
EmployeeService service = new EmployeeService();
service.displayMenu();
}
}






class Student
package edu.kh.objarray.practice.model.vo;
public class Student {
private int grade;
private int classroom;
private String name;
private int kor;
private int eng;
private int math;
// 기본 생성자
public Student() {}
// 매개변수 생성자
public Student(int grade, int classroom, String name, int kor, int eng, int math) {
super();
this.grade = grade;
this.classroom = classroom;
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
// getter / setter
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public int getClassroom() {
return classroom;
}
public void setClassroom(int classroom) {
this.classroom = classroom;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
};
@Override
public String toString() {
return grade +"학년 " + classroom + "반 " + name + " >> 국어 : " + kor
+ ", 영어 : " + eng + ", 수학 : " + math + ", 평균: " + (int)((kor + eng + math)/3);
}
}
class PracticeService
package edu.kh.objarray.practice.model.service;
import java.util.Scanner;
import edu.kh.objarray.practice.model.vo.Student;
public class PracticeService {
// 1) 최대 10명의 학생 정보를 기록할 수 있게 배열을 할당한다.
private Scanner sc = new Scanner(System.in);
private Student[] std = new Student[10];
public void start() {
int input = 0;
int count = 0;
boolean flag = true;
// 2)while문을 사용하여 학생들의 정보를 계속 입력 받고
while(true) {
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int classroom = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("국어점수 : ");
int kor = sc.nextInt();
System.out.print("영어점수 : ");
int eng = sc.nextInt();
System.out.print("수학점수 : ");
int math = sc.nextInt();
std[count] = new Student(grade, classroom, name, kor, eng, math);
count++;
while(true) {
System.out.print("계속 입력 하시겠습니까?(y/n) : ");
char choose = sc.next().toUpperCase().charAt(0);
if(count == 10 || input =='N') {
flag = false;
break;
}
if(input == 'Y') {
break;
} else {
System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
}
}
} // while문 끝
for(int i=0; i<count; i++) {
System.out.println(std[i].toString());
}
}
}