본문 바로가기
백엔드/Java

[JAVA] JAVA 배열과 forEach문

by BGwon_C 2023. 12. 26.

JAVA 배열

※ 배열 : 한 개의 변수에 여러개의 값을 순차적으로 저장할 때 사용

 

※ 배열 수식을 표현하는 두 가지 방식 :
int[ ] a = new int[10];
int a[ ] = new int[10];
(이때 a는 변수. 후자는 헷갈리니까 전자 방식 추천)

 

 

package basic;

public class arr_sample {
    public static void main(String[] args) {
        int[] score;
        score = new int[3];

        score[0] = 80;
        score[1] = 60;
        score[2] = 40;
        // score[4] = 20;  --> 자바스크립트에서 하듯이 이렇게 지정된 범위 밖 변수를 넣으면 에러가 뜸

        int sum = 0; // 지역변수는 반드시 초기화
        for(int i=0; i<= 2; i++) {
            sum += score[i];
        }
        System.out.println(sum);
    }
}

 

 

※ 배열과 생성

배열의 개념

 

  • 배열 선언 : int intArray [ ];         or         int [] intArray; 

              int                      intArray                       [ ];
    (배열 타입) (배열에 대한 레퍼런스 변수) (배열선언)

  • 배열 생성 : intArray = new int[10];          ===>     new 해야 생성 (그전까지는 그냥 선언)
                or   int intArray[] = new int[10];  ===>    주로 이쪽 방식을 사용 (위의 방식은 두 줄 쓰기용)

                          intArray                =           new         int           [10];
             (배열에 대한 레퍼런스 변수)   (배열 생성)  (타입)   (원소 개수 or
          int            intArray                =           new         int           [10];
    (배열 타입)
    ===> 초기화된 값의 개수(3) 만큼의 배열 생성

  • 보통 선언과 동시에 값을 초기화 함 :


        주의) 잘못된 배열 선언 :

 

  • 배열 원소 접근 : int a [ ] = new int[5];     (-> 원소가 5개인 배열 생성. 인덱스는 0~4까지 가능)
          a[0] = 5;                                            (-> 원소0에 5 저장)
          a[3] = 6;                                            (-> 원소3에 6 저장)
          int n = a [ 3 ];                                    (-> 원소3의 값을 읽어 변수 n에 저장. n은 6이 됨)
                   인덱스에 음수 불가. 범위 넘는 수 불가

배열 생성 및 초기화 과정

 

※ 배열 리턴

  • 메소드에서 배열 리턴 :
    ※ 참고 : 하나의 배열을 다수의 레퍼런스가 참조 가능

    예시)
    Public class ReturnArray {
    	static int[] makeArray() {                     // 정수형 배열을 리턴하는 메서드
        	int b[] = new int[4];                      // 4개의 원소를 가지는 배열 b생성
        	for(int i=0; i < b.length; i++)            // 배열의 원소를 0, 1, 2, 3으로 초기화
            	b[i] = i;
            return b;                                  // 배열 리턴
        }
        
        public static void main(String[] args) {
        	int intArray[];                     	   // 배열 레퍼런스 변수 선언
            intArray = makeArray();                    // 메서드(makeArray())로부터 배열 전달받음
            for(int i = 0; i < intArray.length; i++)
            	System.out.print(intArray[i] + " ");   // 배열 모든 원소 출력
        }
    }​


  • 배열 레퍼런스(참조) 리턴 : 

 

 

※ 참고 : 
result : [{ orderDate }]                    - result라는 property의 값이 orderDate라는 객체를 가진 배열임

result.[0] : { orderDate }                 - result property 배열의 0번째 인덱스는  orderDate라는 객체임

result[0].orderDate : orderDate     - result property 배열의 0번째 인덱스인  orderDate의 값은 orderDate임

 

 

※ 배열과 일반 변수의 차이?

  • int       -> 프리미티브 타입    (int[ ]   ) [ ] a = new int [2] [  ]
  • int[ ]    -> int array 타입         (String) [ ] b = new String [3]

 

 

 

※ foreach문

package basic;

import java.util.Scanner;

public class arr_sample {
    public static void main(String[] args) {
        // for-each문으로 array하는 법
        /*int[] arr = { 10, 20, 30, 40, 50};
        int sum = 0;
        for (int e : arr) {           // int나 string 등 변수 type 적는거 빼먹지 마라
            sum += e;
        }
        System.out.println(sum);

        String[] s_arr = { "a", "b", "c" };
        String sss = "";
        for (String s : s_arr) {
            sss += s;
        }
        System.out.println(sss);*/

        // 문제) 음수를 입력하거나, 입력한 수가 배열의 크기보다 커지면(인덱스가 정해진 바운드리(10)를 넘어가면) 종료, 작을 동안은 계속 입력
        Scanner scan = new Scanner(System.in);
        int[] arr = new int[10];  // int 10개 저장할 수 있는 배열 공간 확보를 위해 변수와 배열 선언
        int ind = 0, num = 0;
        do {
            System.out.print("숫자를 입력하세요. 종료하려면 -1을 입력합니다. : ");
            num = scan.nextInt();
            if (num < 0) {
                break;
            }
            arr[ind] = num;
            ind++;
        } while (ind <= arr.length -1);
        scan.close();

        for(int e : arr) {  // 배열의 모든 원소를 개수만큼 읽어보는 반복문 - for each
            System.out.print(e + "\\t"); // "\\t" -한칸씩 띄워주는 대행문자열(= tab), "\\b"백스페이스???, "\\n"줄 넘기기, ","콤마
        }
    }
}

 

댓글