숨 참고 JAVA 다이브 🌊 (5) - 배열

joyfulwave·2022년 8월 10일
0

숨 참고 JAVA 다이브

목록 보기
5/21

어려울 거 같아서 미뤄뒀던 프로그래밍 공부 이번에 숨 딱 참고 Java 다이브 💦


💡 배열

  • 변수를 그룹으로 묶은 형태의 한 종류로서, 사물함 같은 형태를 갖고 있어요.
  • 하나의 배열안에는 같은 종류(데이터 형)의 값들만 저장될 수 있어요.



💡 1차 배열

  • 한 줄만 존재하는 사물함 같이 구성된 상태을 뜻해요.
  • 행에 대한 개념이 없고, 열에 대한 개념만 존재해요.

📎 배열 만들기

⚫️ 배열의 선언

데이터형[] 배열이름;

  int[] a;
  float[] b;
  double[] c;
  char[] d;
  String[] e;

⚫️ 배열의 생성 : 변수를 저장할 수 있는 사물함을 생성

배열이름 = new 데이터형[크기];

  a = new int[1];
  b = new flaot[2];
  c = new double[3];
  d = new char[10];
  e = new String[20];

  // 배열 생성의 예
	int[] grade; //여러개의 int형 변수를 저장할 수 있는 배열의 선언
    grade = new int[3]; // 배열의 칸을 3칸으로 할당
    
  //  배열 선언과 크기 지정에 대한 일괄처리
  	int[] score = new int[];
    float[] weight = new float[];

⚫️ 배열의 모양 : 생성된 배열은 사물함과 같이 각각의 칸에 값들이 저장되고, 각각의 칸은 0부터 일련번호가 지정돼요. (일련번호 = 배열의 인덱스)

⚫️ 데이터 할당

  • 배열은 값을 저장할 수 있는 공간일 뿐, 그 자체가 값은 아니에요.
  • 값이 대입되지 않은 경우, 숫자형은 0, boolean형은 false가 자동으로 대입돼요.
  • 배열안에 값을 저장하기 위해서는 인덱스 번호를 사용하여 각각의 칸에 직접 값을 대입해야해요.

배열이름[인덱스] = 값;

	int[] grade = new int[3];
	grade[0] = 75;
	grade[1] = 82;
	grade[2] = 91;
  • 배열의 크기 설정과 값 할당에 대한 일괄처리 : 배열의 크기를 지정하면서 괄호 {...} 안에 배열에 포함될 각 항목들을 콤마(,)로 나열하면, 배열의 생성과 값의 할당을 일괄처리할 수 있어요. 이 때 배열의 크기를 별도로 지정하지 않으며, 'new 데이터형[]' 이 부분은 생략 가능해요.

데이터형[] 배열이름 = new 데이터형[]{ 값1, 값2, ..., 값n };
데이터형[] 배열이름 = { 값1, 값2, ..., 값n };

	int[] score = new int[2]{ 100, 90 };
	int[3] grade = { 75, 85, 91 };

⚫️ 배열 값 사용하기

  • 배열안에 저장되어 있는 값들을 사용하여 연산이나 출력 등의 처리를 위해서는 배열에 부여된 인덱스 값을 통해서 데이터에서 접근해야해요.
	System.out.println( grade[0] ); // 75
	System.out.println( grade[1] ); // 82
	System.out.println( grade[2] ); // 91

⚫️ 배열과 반복문

  • 배열의 특성 : 0 ~ (배열의 크기-1) 만큼의 인덱스 값을 순차적으로 갖어요.
  • 특성을 활용한 배열 데이터 처리 : 일정 범위를 갖고 순차적으로 증가하는 인덱스 값의 특성을 활용하면 반복문 안에서 배열의 값을 할당하거나, 할당된 값을 읽어들이는 처리가 가능해요.
	int[] grade = new int[]{100, 100, 90};
	for(int i = 0; i < 3; i++){
		System.out.println( grade[i] );
	}
    
    /*
    출력결과)
    100
    100
    90
    */

⚫️ 배열의 크기(길이)

  • 배열의 길이를 얻기 위해서는 배열이름.length 형식으로 접근해요.
	//grade라는 배열을 생성한 경우 배열의 길이 
	int size = grade.length;
  • 배열의 길이값은 주로 반복문의 조건식에서 반복의 범위를 지정하기 위하여 사용돼요.
	int[] grade = new int[]{100, 100, 90};

	for(int i = 0; i < grade.length; i++){
		System.out.println( grade[i] );
	}



💡 2차배열

  • 1차 배열의 각 칸에 새로운 배열을 넣는 형태에요.
  • 1차 배열의 각 칸은 행이되고, 각각의 칸에 추가된 개별적인 배열이 열의 개념이 되어 행렬을 구성하게 돼요.

📎 2차원 배열

⚫️ 2차원 배열의 선언

  • 데이터 타입의 이름 뒤에 대괄호 [] 를 행과 열에 대하여 각각 지정해요.

데이터형[][] 배열이름;

  int[] grade;
  double[] sum;

⚫️ 2차원 배열의 크기 할당

  • 행과 열에 대한 크기를 명시해요.

배열이름 = new 데이터형[행][열];

  grade = new int[3][3];
  sum = new double[3][2];

⚫️ 2차원 배열의 선언과 할당의 일괄처리

데이터형[][] 배열이름 = new 데이터형[행][열];

  int[][] grade = new int[3][3];
  double[][] sum = new doule[3][2];

⚫️ 2차원 배열의 선언, 크기 할당, 값의 대입에 대한 일괄처리

  • 2차원 배열의 경우 블록 괄호 {}를 2중으로 겹쳐서 2차원 배열을 표현한다.
  • 행과 열의 구분에는 콤마(,)가 사용된다.
  • 컴파일러가 블록괄호 "{}"의 요소를 파악하면 행,열의 크기가 산출될 수 있으므로 배열의 크기 설정을 위한 [][]에는 배열의 크기를 명시하지 않는다.
	// 행, 열에 대한 인덱스를 통하여 값을 대입하기
    grade[0][0] = 75;
    
    //일괄지정
    int[][] grade = new int[][]{
    	{ 75, 82, 91 }, 
        { 88, 64, 50 },
        { 100, 100, 90}
    }
    
    System.out.println(score[0][0]);
    
    /*
    출력결과)
    75    
    */

📎 2차원 배열의 길이

  • 2차원 배열의 길이는 행에 대한 측면과 열에 대한 측면을 나누어서 생각해야 해요.

⚫️ 행의 길이

    //1차 배열의 길이는 2차 배열에서는 행의 크기로 조회된다.
	int rows = grade.length;

⚫️ 열의 길이

	// 열의 길이는 각 행에 대하여 개별적으로 조회해야 한다.
	int cols = grade[].length;



💡 배열과 관련한 용어들

⚫️ Arrays.toString() : 배열의 요소를 문자열로 출력할 수 있어요. Arrays.toString()을 사용하기 위해서는 import java.util.Arrays; 코드를 작성해 넣어줘야해요.


  import java.util.Arrays;
  public class Main {

      public static void main(String[] args) {		
          int[] grade = new int[]{ 75, 82, 91};

       System.out.print(grade);
       System.out.println(" ");
       System.out.pruntln(Arrays.toString(grade));

       /*
       출력결과)
       758291

       [75, 82, 91]
       */

      }
  }
	 

⚫️ System.arraycopy() : 배열을 복사할 수 있어요.

System.arraycopy( 복사할 배열, 복사를 하기 시작할 인덱스, 덮어쓸 배열, 덮어쓰기 시작할 인덱스, 복사할 길이)

	int[] a = new int[]{ 1, 2, 3, 4, 5 };
    int[] b = new int[]{ 0, 0, 0, 0, 0 };
    
    System.out.println(Arrays.toString(a));
    System.out.println(Arrays.toString(b));
    System.arraycopy(a, 1, b, 2, 4);
    System.out.println(Arrays.toString(b));
    
    /*
    출력결과)
    [1, 2, 3, 4, 5]
    [0, 0, 0, 0, 0]
    [0, 0, 2, 3, 4, 5]
    */

⚫️ foreach : 배열의 이름과 새로운 변수만 하나 지정하면 반복을 할 때 자동으로 배열의 요소를 하나씩 처리해줘요.

for(배열의타입 변수이름 : 배열이름){
.. 실행 구문 ..
}

	String[] fruit = new String[]{"사과", "바나나", "딸기"}
   
    for(String i : a){
    	System.out.println(i);
    }
    
    /*
    출력결과)
    사과
    바나나
    딸기
    */
    



다음 다이브에서 또 만나요 🌊




출처
https://media.giphy.com/media/l2Je1bFuOpkNpyqYM/giphy.gif
https://media.giphy.com/media/Jbb3KS22397YQ/giphy.gif

0개의 댓글