Study/JAVA

1 - D Array

so.so 2021. 2. 15. 15:48

1차원 배열에서는 배열명까지만 참조변수로 활용됨

즉, 'a'는 참조변수이다.

- 참조변수이기 때문에 특정 주소에 관련된 값이 담겨져 있음

 

null

int[ ] a = null;

 

null reference, null pointer은 참조 변수를 초기화할 때 사용됨

- 참조 변수는 메모리 상의 임의의 지점을 가리킨다고 볼 수 있음

- 즉, 메모리 상에서 참조 변수 안에 있는 값 (위치값)으로 이동 할 수 있음

 

- 그런데, 참조 변수 값이 null이면, 

- '어디로 가면돼?' 라고 했을 때, '몰라'와 하는 것과 같다.

- 즉, 이동할 주소값이 없다는 것이다.

- hash code의 값은 0을 가진다.

 

 

1-D Array 참조 변수의 표현

- 기본적인 선언

int[ ] a;

또는 

int b[ ];

----

int a[10]; //은 사용 불가능하고
int[] b = new int [10]; // 이라 해야 함. 선언과 생성을 함게 구함

 

 

- 메모리 공간을 만들면,

- 무조건 해당 공간에 대한 위치가 생김

- 즉 주소가 생기기때문에, 이 주소를 참조하는 변수가 레퍼런스 변수이다.

 

배열을 초기화하는 방법

1. 디폴트 포기화

: 배열을 생성하면 '0'으로 자동 초기화 된다.

 

2. 생성과 함께 초기값을 직접 지정한다.

: 이대, 배열의 크기는 지정할 수 없는데, 데이터 초기화를 통해 배열의 크기가 결정되기 때문이다.

 

3. java.utii.Arrays class 활용

import java.util.Arrays;

- 여러 배열 데이터를 관리하는 클래스이다.

- 이 클래스 멤버 메소드를 활용하여 초기화할 수 있음

 

1-D array data input

1. 가장 일반적인 방법은 Scanner을 이용하여 데이터를 1개씩 가져오는 방법이다.

- Scanner.nextInt( ) 함수 사용

 

2. 한 줄을 문자열 형태로 갖고와서 문자열 분석을 통해 가공해서 처리할 수 있음

- Strng class 활용

 

3. 문자 배열과 정수 배열을 '배열'이라는 것을 기반으로 데이터 가공을 통해 처리할 수 있음

- 람다식을 사용하고 있음

 

import java.util.*; //Arrays. Scanner

public class Main{
    static void printSum(int[] a){
        int sum = 0;
        for(int i = 0; i < a.length; i++){
            sum += a[i];
        }
        
        System.out.println("sum = " + sum);
    }
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int[] a = new int[10];
        
        for(int i = 0; i < 10; i++) a[i] = sc.nextInt();
        printSum(a);
        sc.nextLine(); //첫번째 줄 마지막 개행 데이터 제거용
        
        String[] sl = sc.nextLine().split(" ");
        for(int i = 0; i < 10; i++) a[i] = Integer.parseInt(sl[i]);
        printSum(a);
            
        String[] s2 = sc.nextLine().split(" ");
            
        //각각의 문자열 배열 데이터를 정수 데이터로 전환 처리하고 있음
        Arrays.parallelSetAll(a, (index) -> Integer.parseInt(s2[index]));
        printSum(a);
    }
}