백엔드
Java Study [2022-08-08] - 객체지향프로그래밍(다차원 배열, ArrayList 클래스)
머훈
2022. 8. 10. 01:06
📌 Java Study
🔸 2022-08-08 월요일
[배열과 ArrayList]
1. 다차원 배열
2차원 이상의 배열
지도, 게임, 평면이나 공간을 구현할 때 사용
int [][] arr = new int [2][3]
- int : 자료형
- arr : 배열 이름
- [2] : 행 개수
- [3] : 열 개수
int [][] arr = {{1, 2, 3}, {4, 5, 6}};
System.out.println(arr.length); // 2
System.out.println(arr[0].length); // 3
System.out.println(arr[1].length); // 3
int [][] arr = {{1, 2, 3}, {4, 5, 6}};
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
1 2 3
4 5 6
2차원 배열을 이용할 때, for 문 중첩으로 사용하는 경우가 많음
3차원은 for 문이 3개(면 - 행 - 열)
가장 바깥이 가장 큰 공간을 의미
2. ArrayList 클래스
자바에서 제공되는 객체 배열이 구현된 클래스
객체 배열을 사용하는데 필요한 여러 메서드들이 구현되어 있음
주요 메서드
메서드 | 설명 |
---|---|
boolean add(E e) |
요소 하나를 배열에 추가합니다. E는 요소의 자료형을 의미합니다. |
int size() |
배열에 추가된 요소 전체 개수를 반환합니다. |
E get(int index) |
배열의 index 위치에 있는 요소 값을 반환합니다. |
E remove(int index |
배열의 index 위치에 있는 요소 값을 제거하고 그 값을 반환합니다. |
boolean isEmpty() |
배열이 비어 있는지 확인합니다. |
ArrayList<String> list = new ArrayList<String>();
<String>
에 어떠한 클래스를 배열의 요소로 사용할 지 지정
ArrayList<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for(int i = 0; i < list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
for( String s : list) {
System.out.println(s);
}
ArrayList list = new ArrayList();
- 무엇을 쓸 것인지 정해야됨, for 문에 오류 발생
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for(int i = 0; i < list.size(); i++) {
String str = (String)list.get(i);
System.out.println(str);
}
for( Object s : list) {
System.out.println(s);
}
ArrayList의 생성자에서 String을 지정하지 않으면 오류 발생
String str = (String)list.get(i);
=> String 타입 적어줘야함for( Object s : list)
=> 반환이 object로 되는데, object는 모든 클래스의 최상위 클래스이자, String을 지정하지 않으면 object 형태로 들어감따라서, ArrayList 사용 시 어떤 타입의 객체로 배열을 만들 것인지 지정하는 것이 바람직
3. 학생의 수강과목 학점 출력하기
- Heo 학생은 두 과목을 수강하고, Kim 학생은 세 과목을 수강합니다. 각 학생의 학점과 총점을 다음과 같이 출력해봅시다. Student 클래스에 ArrayList 멤버변수를 하나 가지고 각 학생이 수강하는 과목을 관리하도록 합니다.
과목이 되는
Subject
클래스를 만들고,Student
클래스 내에subjectList
를 배열로 유지, Subject가 추가 될 수 있도록 addSubject 메서드 제공전체 정보를 볼 수 있는 showStudentInfo() 제공
Student studentHeo = new Student(1001, "Heo");
studentHeo.addSubject("국어", 100);
studentHeo.addSubject("수학", 100);
Student studentKim = new Student(1002, "Kim");
studentKim.addSubject("국어", 95);
studentKim.addSubject("수학", 90);
studentKim.addSubject("영어", 80);
studentHeo.showStudentInfo();
System.out.println("=================================");
studentKim.showStudentInfo();