1 - D Array
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);
}
}