갈림길 이정표

[5. 참조 타입] 본문

Programming Language/Java 마스터하기(feat. 이것이 자바다)

[5. 참조 타입]

이몽뇽 2020. 7. 19. 23:27

5.1 데이터 타입 분류

5.2 메모리 사용 영역

5.3 참조 변수의 ==. != 연산

5.4 null과  NullPointerException

5.5 String 타입

5.6 배열 타입

5.7 열거 타입

package pack1;

public class Test8_array {

	public static void main(String[] args) {
		// 배열: 성격(데이터 타입)과 크기([])가 일치하는 복수 개의 기억장소를 대표명 하나를 주고 첨자(index)로 기억장소를 구분.
		// 장점: 반복처리가 효율적 - 그래서 주로 for문과 함께 함.
		int a;				//기억장소가 한개 (simple variable) (장점: 각 데이터의 이름 줄 수 있음 - 가독성 좋음),(단점: 데이터 수가 커지면 불편 하나씩 선언)
		int[] ar; 			// = int ar[] (array*) 정수 기억장소를 여러개 잡을 거야
		ar = new int[5];	//기억장소가 []만큼 확보 (0부터 시작-index로 순서가 부여되어 있음)
		System.out.println("ar의 크기 : " + ar.length);
		ar[0] = 10;
		ar[1] = 20;
		ar[4] = ar[0] + ar[1];
		System.out.println("ar[4] : " + ar[4]);
//		System.out.println(ar[5]); = err
		int aa = 4, bb = 2 + 2;
		System.out.println("ar[4] : " + ar[aa] +" " + ar[bb]); //첨자변수
		//계산된 값 대입 후 ar[4] 배열값 (모두 다 같은 배열) 
		
		System.out.println();
		int[] ar1 = {1,2,3,4,5}; //선언과 동시에 값을 기억
		System.out.println(ar1[0] + " " + ar1[4]); // 0번째가 1값
		int sum = 0;
		for(int i=0; i < ar1.length; i++) { //순서값은 0부터인데 개수값은 1부터 시작하기 때문
			System.out.print(ar1[i] + " ");
			sum += ar1[i];
		}
		System.out.println("합은 " + sum); //배열과 for문은 짝꿍
		
		//향상된 for (enhanced for)
		for(int sbs:ar1) {				//조건 필요없어, 자동적으로 반복해줌 (ar1의 데이터가 없을 때 까지)
			System.out.print(sbs + " ");
		}
		
		System.out.println();
		String[] city = {"서울", "인천", "수원", "의정부", "천안", "김포"};
		for(String c:city) {
			System.out.print(c + " ");
		}

		//1차원 배열 (열들로만 구성 = 행) (0,1,2,...)
		System.out.println("\n======");
		int[] ar2 = new int[5];
		for (int i = 0; i < ar2.length; i++) {
			ar2[i] = i + 1;		// 순서값을 활용한 데이터값을 부여 
		}
		for(int i = 0; i < ar2.length; i++) {
			System.out.print(ar2[i] + " ");
		}
		
		System.out.println();
		//다차원 배열 (일차원 배열의 배열) (0,1,2,...)
		int su[][] = new int[3][4];	//2차원 (4개짜리 일차원 배열이 3개)
//		int su[][] = new int[2][3][4];  3차원 (" 배열이 2개)
//		vector & 
//		마치 연속적으로 보이지만 내부적으로는 무작위 데이터 위치 처리
		System.out.println(su.length + " " + su[0].length);
		su[0][0] = 100;
		System.out.println(su[0][0]);
		
		System.out.println();
		int num = 10;
		for (int i = 0; i < su.length; i++) { // 행첨자로 사용
			for (int j = 0; j < su[i].length; j++) {  //열첨자로 사용
				su[i][j] = num++; //치환 후 증가
			}
		}
//		System.out.println(su[0][1]);
		for (int i = 0; i < su.length; i++) { // 행첨자로 사용
			for (int j = 0; j < su[i].length; j++) {  //열첨자로 사용
				System.out.print(su[i][j] + " ");
			}
			System.out.println();
		}
		
		System.out.println();
		//가변 배열
		int [][]scores = new int[2][]; //int[][]scores = int scores[][]
		scores[0] = new int[2];
		scores[1] = new int[3];
		System.out.println(scores.length + " " + scores[0].length + " " + scores[1].length);
		//						행의 길이			첫번째 행의 열의 길이			두번째 행의 열의 길이
		System.out.println();
		int[][] jum2 = {{90,92},{88,56,77}};
		for (int i = 0; i < jum2.length; i++) {
			for (int j = 0; j < jum2[i].length; j++) {
				System.out.print(jum2[i][j] + " ");
			}
			System.out.println();
			
			

		}

	}

}
Comments