7日目!配列タイプ!


6.配列タイプ


-一度に宣言された配列の要素タイプは変更できません.
-一度に宣言された配列のサイズ(長さ)は変更できません.

-アレイのメリット


(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または宣言のみの場合は無効)

-値リストを使用して配列を作成します。


(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文の条件式に用いられる
Javaの配列(オブジェクト)を作成すると、そのサイズ(長さ)と要素のタイプを変更することはできません.

-多次元配列


(1)2 Dアレイより大きいアレイ
数学マトリクスなどのデータ構造
(2)Javaは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
確かに客体に入ると、学生たちが疲れているような気がします.
若者ですね.