자바/기본

자바 - 배열 , 제어문

backend dev 2024. 3. 4.

 

배열

 

배열이란?

배열(Array)은 자료구조 중 하나로, 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법이다.
배열은 인덱스(index)를 사용해 각 요소에 접근할 수 있다. 이러한 특징 때문에 배열은 데이터의 순서를 유지하고, 
특정 위치의 요소에 빠르게 접근할 수 있는 장점이 있다.

 

배열(Array)의 장점 및 단점

장점


빠른 접근 

배열은 인덱스를 사용하여 요소에 빠르게 접근할 수 있다. 
인덱스를 알고 있다면 원하는 위치의 요소에 시간복잡도 O(1)에 접근할 수 있다.


메모리 공간의 효율성 

배열은 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용할 수 있다.
또한, 요소들은 순서대로 저장되기 때문에 인접한 요소들에 대한 캐시 지역성이 좋아 성능 향상에 도움을 줄 수 있다.


다차원 배열 

배열은 다차원으로 선언할 수 있다. 이를 통해 행렬과 같은 다차원 데이터를 표현할 수 있다.


단점


크기 제한

배열은 생성할 때 크기를 정하고 이 크기를 변경할 수 없다. 따라서 미리 최대 크기를 예상하여 배열을 생성해야 하며,
크기를 동적으로 조정할 수 없는 제약이 있다.


삽입과 삭제의 어려움

배열은 요소를 삽입하거나 삭제하는 작업에 비용이 크다.
배열의 중간에 요소를 삽입하거나 삭제할 경우 해당 위치 이후의 요소들을 모두 이동시켜야 하기 때문이다.
이로 인해 시간 복잡도가 O(n)이 되어 성능 저하가 발생할 수 있다.

 

 

배열의 선언 및 초기화

배열을 선언하기 위해서는 배열의 타입과 크기를 지정해야 한다.

int[] data = new int[5];
int[] data2 = {1, 2, 3, 4, 5};

크기를 지정해서 배열을 초기화하거나 

값을 바로넣어서 초기화 할 수 있다.

 

 

 

배열에 값 할당

- 인덱스를 이용하여 데이터에 접근하고 값을 조회,할당 할 수 있다.

- 인덱스는 0부터이며 인덱스 최대크기는 배열의 크기 - 1 이다.

int[] data = new int[5];

data[0] = 0;
data[1] = 1;
data[2] = 2;
data[3] = 3;
data[4] = 4;

System.out.println(data[0]);

배열의 크기가 5인 배열에 값을 할당 및 조회하는 방법

 

 

배열 함수들

 

배열의 길이

int length = data.length; // 배열의 길이 반환 : 5

 

배열 정렬

Arrays.sort(data); // 배열 오름차순 정렬
//배열의 내림차순 정렬은 Wrapper클래스 배열로 변경하거나 , 배열을 List같은 Collection으로 수정 후 진행하면 된다.

 

배열 채우기 , 배열 간단하게 출력

int[] data = new int[5];
Arrays.fill(data, 11); //배열의 데이터를 전부 원하는 값으로 지정하기 
System.out.println(Arrays.toString(data)); // 배열 내용 확인하기

결과

 

배열 출력

int[] data = {1, 2, 3, 4, 5};

for (int num : data) { //배열의 데이터를 받아와서 처리하는 방법
    System.out.println("num = " + num);
}

for (int i = 0; i < data.length; i++) { // 반복문의 인덱스를 이용하여 처리하는 방법 
    System.out.println("i = " + i);
}

 


제어문

1. 조건문

if

if(조건문){
    조건문이 성공(true)했을경우 진행될 코드
}

 

if else

if(조건문){
    조건문이 성공(true)했을경우 진행될 코드
}
else{
    조건문이 실패(false)했을경우 진행될 코드
}

if else if 

if(조건문){
    조건문이 성공(true)했을경우 진행될 코드
}
else if(조건문2){
    조건문2가 성공(true)했을경우 진행될 코드
} else if (조건문3) {
    조건문3이 성공(true)했을경우 진행될 코드
}
else{
    위의 모든 조건문이 실패(false)일 경우 진행될 코드
}

 

if 중첩문

if(조건문1){
    조건문1이 성공(true)했을경우 진행될 코드
    if (조건문2) {
        조건문1,조건문2가 성공(true)했을경우 진행될 코드
            if(조건문3){
                조건문1,조건문2,조건문3이 성공(true)했을경우 진행될 코드
            }
    }
    else{
        조건문2가 실패(false)일 경우 진행될 코드
    }
}

 

Switch

switch(입력변수) {
    case 입력값1: ...
         break;
    case 입력값2: ...
         break;
    ...
    default: ...
         break;
}

 

사용예시

Scanner sc = new Scanner(System.in);
int data = Integer.parseInt(sc.nextLine());
switch (data) {
    case 0 :
        System.out.println("0 입니다.");
        break; // break가 없으면 아래로 진행된다. 
    case 1 :
        System.out.println("1 입니다.");
        break;
    case 2 :
        System.out.println("2 입니다.");
        break;
    case 3 :
        System.out.println("0 입니다.");
        break;
    case 4 :
        System.out.println("break가 없으면 switch을 빠져나가지않고 아래로 진행됩니다.");
    case 5 :
        System.out.println("break가 없으면 switch을 빠져나가지않고 아래로 진행됩니다."); 
        
    default:
        System.out.println("case에 맞는게 없다면 default가 실행됩니다.");
        
}

 

반복문 

for

for (초기화; 조건식; 증감식) {
        // 조건식이 참일 때 수행될 문장들을 적는다.
}

 

초기화


반복문에 사용될 변수를 초기화 하는 부분이며 처음에 한 번만 수행된다. 보통 변수 하나로 for문을 제어하지만, 둘 이상의 변수가 필요할 때에는 콤마를 구분자로 변수를 초기화 하면 된다.

단, 두 변수의 타입은 같아야 한다.

 

 

조건식


조건식의 값이 참이면 반복을 계속하고, 거짓이면 반복을 중단하고 for문을 벗어난다. for의 뜻이 ‘~하는 동안’ 이므로 조건식이 참인 동안 반복을 계속한다고 생각하면 된다.

초기화, 조건식, 증감식은 필요하지 않으면 생략이 가능하다.(모두 생략도 가능)

for (;;){ ... } // 초기화, 조건식, 증감식 모두 생략. 조건식은 참이된다.


조건식이 생략된 경우, 참으로 간주되어 무한 반복문이 된다.

 

 

for 반복문 예시

for (int i = 0; i < 10; i++) {
    System.out.println("i = " + i);
}

 

while

while문은 조건식이 참인동안, 즉 조건식이 거짓이 될 때까지 블럭{ }내의 문장을 반복한다.

while (조건식) {
			// 조건식의 연산결과가 참인 동안, 반복될 문장들을 적는다.
}

 

while문의 조건식은 생략 할 수 없다.

while ( ) { // 에러. 조건식이 없음
			...
}

 

do-while

while문과 반대로 블럭{ }을 먼저 수행 한 후에 조건식을 평가한다.

do {
		// do 블럭 안에 코드는 무조건 한번은 실행된다.
        // 조건식이 성공(true)라면 다시 실행된다.
} while (조건식);

 

'자바 > 기본' 카테고리의 다른 글

try-with-resources  (2) 2024.03.19
디자인 패턴 - 추상 팩토리 패턴  (1) 2024.03.15
자바 - 상속  (0) 2024.03.11
자바 - 클래스 (내부클래스-인스턴스 클래스,static 클래스)  (1) 2024.03.06

댓글