[TIL] JAVA 배열에 관해서

2026. 1. 30. 09:52·Programming Language/Java

 

 

배열이 필요한 이유

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;
    } 
  }
  • 가변적 매개변수는 매개변수 앞 …만 붙여주면 됩니다
  • 여기에 넣는 모든 값이 리스트가 됩니다
    • 그리고 이러한 리스트들은 배열이 됩니다
      • [리스트와 배열의 차이](https://velog.io/@enamu/배열Array과-리스트List#:~:text=배열과 리스트의 차이점,-메모리 할당: 배열&text=크기: 배열은 크기가,삽입과 삭제가 빠르다.)
  • ❗주의!
    • 가변 매개변수는 항상 마지막이여야 합니다
    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
'Programming Language/Java' 카테고리의 다른 글
  • [TIL] 추상 클래스란? 개념, 사용 이유, 예제로 이해하기
  • [TIL] 자바 객체 설계부터 상속까지 (+ toString이 자동 호출되는 이유)
  • [TIL] Wrapper클래스
  • [TIL] String 클래스
dev_Hyeonjoon
dev_Hyeonjoon
문제를 풀며 사람들에게 감동✨을 전하고 가치를 만드는 개발자가 되고 싶습니다 💻
  • dev_Hyeonjoon
    Hyeonjoon's code
    dev_Hyeonjoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • Programming Language (29)
        • JavaScript (0)
        • Java (27)
      • Front-end (10)
        • React-project (5)
        • Vanilla[JS]-project (5)
        • study (0)
      • AI Tools (1)
      • Back-end (0)
      • 독서록 (0)
      • 기타 (5)
      • Trouble Shooting (2)
        • Python (1)
      • 자격증 (1)
      • 알고리즘 (1)
        • 백준 (1)
      • FrameWork (0)
        • Node.js (Express.js) (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    형변환
    토이프로젝트
    군자기계발
    OOP
    파이썬
    구름IDE
    vanillajs
    자바공부
    바닐라js
    사지방코딩
    자바기초
    자바
    사지방
    코딩
    조건문
    군대에서코딩
    Java
    Til
    리액트
    객체지향
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
dev_Hyeonjoon
[TIL] JAVA 배열에 관해서
상단으로

티스토리툴바