7일차! 배열타입!

쿠우·2022년 3월 31일
0

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로 초기화 가능
(null값이거나 선언만 하면 사용 못함.)

-값목록으로 배열 생성하는 방법

(1)변수 선언과 동시에 값 목록 대입(선언과 초기화를 동시에)
(2)변수 선언 후 값 목록 대입
(나눠서 선언과 초기화하면 new연산자가 필요함.)

-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

확실히 객체 들어가니까 학생들이 힘들어하는게 느껴졌다.
모두 함께 으쌰으쌰해서 아주 훌륭한 국비교육 아니 기업 아니 대한민국을 만들자 젊은이들이여

profile
일단 흐자

0개의 댓글

관련 채용 정보