-한 번 선언한 배열의 원소 타입을 변경 할 수 없다.
-한 번 선언한 배열의 크기(길이)를 변경 할 수없다.
(1)중복된 변수 선언 줄이기 위해 사용
(2)반복문 이용해 요소들을 쉽게 처리
----------------------배열의 출력 (기본 반복문과 향상된 반복문 ) -------------------
int[] intArray = { 1, 2, 3, 4, 5, 6, 7 };
//배열의 순회 (traverse)
//1.
for(int index=0; index<=6 ; ++index) {
System.out.println(intArray[index]);
} // Classical for
//2. for(배열의 원소의 변수:객체의 이름){}
for(int element:intArray) {
System.out.println(element);
}// enhanced for (향상된 for) ->무조건 처음부터 끝까지 구간지정 x
//3. 배열 클래스에 toString 메소드 사용
System.out.println(Arrays.toString(intArray));
(1)배열을 사용하기 위해 우선 배열변수 선언([]타입명에 붙여주는게 관례)
(2)배열변수는 참조변수 - 배열이 생성되기전 null로 초기화 가능
(null값이거나 선언만 하면 사용 못함.)
(1)변수 선언과 동시에 값 목록 대입(선언과 초기화를 동시에)
(2)변수 선언 후 값 목록 대입
(나눠서 선언과 초기화하면 new연산자가 필요함.)
(1)배열 생성시 값 목록을 가지고 있지 않음.
(2) 향후 값들을 저장할 배열을 미리 생성하고 싶을 경우
int[] intArray = new int[5]; 각 원소에 타입별 기본값이 들어갑니다.
------------------------배열의 생성 초기화와 선언을 나눠서 하거나 동시에 하거나----------------------------------
//main 메소드
public static void main(String[] args) {
int[] scores; // 실행문 이어서 세미클론을 붙임 ; int타입의 배열변수를 선언
scores = new int[] {83,90,87}; // new 연산자: "객체생성연산자"
int sum1= 0;
for(int i=0; i<3; i++) {
sum1 += scores[i]; // 배열의 원소를 누적
}// for
System.out.println("총합 : " + sum1);
int sum2 = add(new int[] {83,90,87}); //호출(Invoke)
System.out.println("총합 : " + sum2);
System.out.println();
}//main
// add 메소드
public static int add(int[] scores) {
int sum = 0 ;
for(int i =0 ; i<3; i++) {
sum += scores[i];
} //for
return sum;
} // add
-정수는 0 실수는 0.0이다.(char은 빈 문자열) (배열 속에서는 타입문자 l,f 생략)
-논리타입은 false
-참조타입은 null
------------------------------- 타입별 항목 기본값과 원소 초기화 ---------------------------
public static void main(String[] args) {
int[] arr1 = new int[3]; // 정수 int타입의 기본값으로 초기화된다.
for(int i=0; i<3; i++) {
System.out.println("arr1["+i+"]:"+ arr1[i]);
}//for
arr1[0] = 10; // indexing을 통해 각각의 원소를 대입연산자로 초기화
arr1[1] = 20;
arr1[2] = 30;
System.out.println(Arrays.toString(arr1));
//----
double[] arr2 = new double[3];
System.out.println(Arrays.toString(arr2));
arr2[0] = 0.1;
arr2[1] = 0.2;
arr2[2] = 0.3;
System.out.println(Arrays.toString(arr2));
//-----
String[] arr3 = new String[3];
System.out.println(Arrays.toString(arr3));
arr3[0] = "1월";
arr3[1] = "2월";
arr3[2] = "3월";
System.out.println(Arrays.toString(arr3));
} //main
(1)배열에 저장할 수있는 전체 항목 수
(2)코드에서 배열의 길이 얻는 방법 (배열에는 길이라는 속성이 있다. )
(3)배열의 길이는 읽기 전용
(4)배열의 길이는 for문의 조건식에서 주로 사용
자바의 배열(객체)는, 한 번 생성하면 크기(길이)와 원소의 타입을 변경할 수 없다.
(1) 2차원 배열 이상의 배열
수학의 행렬과 같은 자료 구조
(2)자바는 1차원 배열을 이용해 2차원 배열 구현
--------------------------------------다차원 배열 활용-------------------------
public static void main(String[] args) {
// 스칼라(Scalar) : 한 개의 값
int[] a = {1, 2, 3 }; // 1차원 배열
int[][] b = {{1,2},{3,4,6}}; //2차원 배열 (길이 고정x 행렬로만 알고 있으면 안됌.)
System.out.println(b[1][0]); // 2차원 배열의 원소 부르는법
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b)); // 객체속에 배열인 객체의 주소를 반환
System.out.println(Arrays.deepToString(b)); //다차원 배열의 원소를 나열하는 메소드
// 3차원 부터는 99.99% 쓰지않음. 복잡도가 높아짐.
int[][][] c = { { {1,2}, {3,4} },{ {5,6},{7,8} } }; // 3차원 배열
int[][][][] d = { { { {1,2} } } , { { {3},{4} },{ {5},{6} } } }; //4차원 배열
// int[] arr1 = new int[3];
// System.out.println("arr.length: " + arr1.length); //=3
int[][] arr2 = new int[2][]; // = {null,null} 배열 속에 배열의 길이가 각각 다를 때
// int[][] arr2 = new int[2][2] ={{0,0}{0,0}};
// int[][] b = {{1,2},{3,4,6}};
System.out.println("1. b.length: " + b.length); // 2차원 배열의 1차원적 원소길이
System.out.println("1. b[0].length: " + b[0].length);//2차원 배열의 첫번째 배열의 원소길이
System.out.println("1. b[1].length: " + b[1].length);//2차원 배열의 두번째 배열의 원소길이
} //main
확실히 객체 들어가니까 학생들이 힘들어하는게 느껴졌다.
모두 함께 으쌰으쌰해서 아주 훌륭한 국비교육 아니 기업 아니 대한민국을 만들자 젊은이들이여