배열이 필요한 이유
int mark1 = 100;
int mark2 = 75;
int mark3 = 60;
int sum = mark1 + mark2 + mark3;
- 만약 위에 있는 코드처럼 과목 점수를 일일이 적는다면 매우 귀찮을 것입니다.
- 심지어 과목이 추가 된다면 또 다시 변수를 선언하고 sum변수를 수정해야한다는 단점이 있습니다.
→ 이 경우 배열을 사용한다면 매우 편해질 것 입니다.
배열에 관해서
배열은 같은 타입의 여러 값을 저장할 수 있습니다.
🚧배열을 통해 같은 타입의 요소들을 묶을 수 있다 !🚧
- 예를 들어 아래와 같이 코드를 작성한다면
int [] marks = {75, 60, 56};
//세 가지 요소를 가지는 배열 마크를 생성했음
- 세 가지의 숫자를 한 번에 저장할 수 있게 됩니다.
- 이 배열은 점수 배열이며 대괄호 뒤로 마크 값이 들어오게 됩니다.
배열 반복문
배열을 정의하고 그 안에 요소를 구성했다면 구성 요소를 차례대로 반복할 수 있는 반복문을 설정할 수 있습니다.
향상된 for 문 (Enhanced For Loop)
- 또는 for-each라고도 불리우는
public class Main {
public static void main(String[] args) {
int [] marks = { 75, 60, 65} ;
int sum = 0;
for (int mark:marks){
sum = sum + mark;
}
}
}
- mark는 배열 요소를 하나씩 복사한 지역 변수
- mark 값을 바꿔도 marks 배열 자체는 바뀌지 않음 ❗
- 이 코드가 편한 이유 중 하나는 구성 요소가 얼마나 있는지 상관없이 코드를 사용할 수 있기 때문입니다.
배열 선언
int [] 배열이름 = new int[요소 개수];
int [] mark = new int[5];
→ 5개의 값을 가지는 정수 배열을 선언
- 왼쪽은 배열 타입을 설정하고 오른쪽은 배열의 크기를 설정합니다
⚠️배열의 값을 설정하지 않으면 정수일 때 디폴트 값은 항상 0
❗int[] marks = new int[];
- 와 같이 배열의 규모를 알 수 없는 코드를 작성 시 오류를 일으킨다
- 배열 사이즈는 항상 오른쪽에 작성해야 함 !
❗배열은 항상 명시된 타입만 가질 수 있다
- int를 작성해 놓고 float라고 적을 시 오류를 일으킴
배열 간단하게 적는 방법
int[] marks = {97, 98, 100};
Student student = new Student("Ranga", marks);
- 지금까지 써왔던 이런 방식 말고 더 간단하게 줄이고 싶다면 아래와 같이 적으면 됩니다.
Student student = new Student("Ranga", new int[] {97,98,100});
- 좋긴 한데 API로 치면 좋은 건 아닙니다.
- 그 이유는 이걸 사용하고자 하는 사람들이 똑같이 따라 쳐야만 사용할 수 있기 때문
배열 값 추출하기
배열의 인덱스를 사용
❗배열의 인덱스는 항상 0으로 시작
배열[인덱스번호]
mark[0]
- mark 배열의 인덱스 0인 값을 추출
배열 값 변경하기
배열[인덱스번호] = 변경할값
amrk[0] = 10;
배열 길이
배열.length
배열 초기값
int[] marks = new int[5];
double[] values = new double[5];
boolean[] test = new boolean[5];
- 모든 정수 타입의 배열은 초기 값 0
- 모든 double타입의 초기 값 0.0
- 모든 boolean타입의 초기 값 false
객체 요소로 하는 배열
class Person {}
Person[] person = new Person[5]
- 객체 배열을 만들 경우 초기 값 null
배열 전체를 출력하는 법
System.out.println(배열);
⚠️배열의 요소가 아닌 저장 경로가 출력 됩니다.
- 저희가 원하는 건 요소이기 때문에 다른 방법을 사용해서 출력해야 합니다
정적 메소드를 사용하여 출력하기
System.out.println(Arrays.toString(배열));
배열 초기 값 설정하기
정적 메소드를 사용
Arrays.fill(배열,초기값)
배열이 값이 동등한지
정적 메소드를 사용
Arrays.equals(배열1, 배열2);
- boolean 값으로 출력됩니다.
- 배열의 길이가 다르거나 매칭되는 요소가 없을 때 false
- 길이가 같고 AND 각 요소가 모두 매칭될 때 true
배열 정렬하기
Arrays.sort(배열);
가변 매개 변수
가변 매개 변수가 필요한 이유
- 가변 매개 변수는 아래와 같이 얼마나 인수가 들어올지 모르기 때문에 사용됩니다.
Student student = new Student("Ranga", 97,98,100);
Student student1 = new Student("Adam", 97,98);
Student student2 = new Student("Eve", 97,98,90,98);
- 정해진 매개 변수 없이 사용자의 입력을 받고 싶다면?
- ⇒ 가변 매개 변수 사용
가변 매개 변수 사용법
public class Student {
private String name;
private int[] marks; //배열 유지해도 상관없다
public Student (String name, int... marks){
this.name = name;
this.marks = marks;
}
}
- 가변적 매개변수는 매개변수 앞 …만 붙여주면 됩니다
- 여기에 넣는 모든 값이 리스트가 됩니다
- 그리고 이러한 리스트들은 배열이 됩니다
- ❗주의!
- 가변 매개변수는 항상 마지막이여야 합니다
void print (int... value, String name){} //에러
배열 추가 및 삭제
🚧 ArrayList를 사용하지 않는 방법은 다소 까다로울 수 있습니다 🚧
배열 추가
- 배열이 한번 생성되고 나면 사이즈가 크기가 정해지기 때문에 기존 배열에서 추가될 수 없습니다
- 따라서 유일한 방법은 배열 자체를 복사 후 새로 만들어야 하는 것
- 이런식으로 배열의 사이즈를 늘린 후 요소 자리에 위에 있는 값을 복사해 오고 배열의 마지막 값만 넣어주면 됩니다
- 이게 유일하게 배열에 요소를 추가하는 방식
- 이런식으로 배열의 사이즈를 늘린 후 요소 자리에 위에 있는 값을 복사해 오고 배열의 마지막 값만 넣어주면 됩니다
- int[] marks = {12,34, 45}; int [] newMarks = new int[marks.length + 1];
배열 삭제
- 배열 추가하는 방법과 마찬가지로 크기를 수정해줘야 합니다
int [] newMarksWithOneDeleted = new int[marks.length - 1];
- 이렇게 한 후 똑같이 배열 요소를 넣어주면 끝
ArrayList를 활용해 더 쉽게 추가 및 삭제하기
ArrayList : 배열을 추가, 삭제하기 편해지는 컬렉션 프레임워크
ArrayList arrayList = new ArrayList();
arrayList.add("Apple");
arrayList.add("Cat");
System.out.println(arrayList);
arrayList.remove("Cat");
System.out.println(arrayList);
- 추가 및 삭제가 매우 간편해짐
- 그리고 원본 배열을 수정할 수 있다는 장점이 있습니다.
- 하지만 위에 있는 코드에서는 타입을 설정하지 않았기 때문에 문자와 숫자가 섞여버릴 수 도 있습니다.
ArrayList arrayList = new ArrayList();
arrayList.add("Apple");
arrayList.add(1);
System.out.println(arrayList);
//에러 x
- 따라서 타입을 명시해주는게 좋습니다.
- 제네릭 기능을 사용해 타입을 지정
ArrayList<String> items = new ArrayList<String>();
// Java 7 이상부터는 다이아몬드 연산자 사용 가능
ArrayList<String> items = new ArrayList<>();
'Programming Language > Java' 카테고리의 다른 글
| [TIL] 추상 클래스란? 개념, 사용 이유, 예제로 이해하기 (0) | 2026.02.05 |
|---|---|
| [TIL] 자바 객체 설계부터 상속까지 (+ toString이 자동 호출되는 이유) (0) | 2026.02.03 |
| [TIL] Wrapper클래스 (1) | 2026.01.28 |
| [TIL] String 클래스 (0) | 2026.01.28 |
| [TIL]자바 프로그래밍의 참조 자료형 (0) | 2026.01.28 |
