organize/자바

자바 처음부터 다시 시작하기 6

001cloudid 2024. 4. 17. 22:07
728x90

배열의 출력

		//배열의 출력
		int[] iArr = {100,90,80,70,60,50};
		System.out.println(iArr);//배열을 가리키는 참조 변수 iArr값을 출력. 주소가 출력
		//단, char 배열의 경우는 주소가 나타나지 않음
		char[] chArr = {'a','b','c','d'};
		System.out.println(chArr);
		
		System.out.println();
		
		//배열 요소를 순서대로 하나씩 출력
		for(int i = 0; i<iArr.length;i++) {
			System.out.println(iArr[i]);
		}
		
		System.out.println();
		
		//배열 iArr의 모든 요소를 출력
		System.out.println(Arrays.toString(iArr));

		System.out.println();
		
		//향상된 for문
		for(int a : iArr) {
			System.out.println(a);
		}

 

		int[] iArr1 = new int[10];
		int[] iArr2 = new int[10];
		
		for(int i = 0; i < iArr1.length;i++) {
			iArr1[i] = i + 1; //1~10의 숫자를 순서대로 배열에 넣음
			System.out.print(iArr1[i]+ ", ");
		}
		
		System.out.println();
		
		for(int i = 0; i < iArr2.length;i++) {
			iArr2[i] = (int)(Math.random()*10)+1; //1~10사이의 숫자를 임의로 배열에 넣음
			System.out.print(iArr2[i] + ", ");
		}

 

배열 활용

		//배열의 활용

		//총합과 평균 : 배열의 모든 요소를 더해 총합과 평균을 구함
		int sum = 0;
		float avg = 0F;
		
		int[] score = {100, 79, 88, 75, 70};
		
		for(int i = 0; i < score.length ; i++) {
			sum += score[i]; //반복문을 이용해서 배열에 저장되어 있는 값들을 모두 더함
		}
		
		avg = (float)sum/score.length; //계산 결과를 float타입으로 얻으려면 형변환(분모, 분자 중 한 곳만 형변환 해주면됨)
		System.out.println("총합 = " + sum);
		System.out.println("평균 = " + avg);
		
		System.out.println();
		
		//최솟값과 최댓값
		int[] score1 = {58,30,45,66,79,80,91,44};
		int max = score1[0]; //배열의 첫번째 값으로 최댓값을 초기화
		int min = score1[0]; //배열의 첫번째 값으로 최솟값을 초기화

		for(int i = 1; i < score1.length;i++) { //배열의 두 번째 요소부터 읽기 위해서 변수 i의 값을 1로 초기화
			if(score1[i]>max) {
				max = score1[i];
			} else if(score1[i]<min) {
				min = score1[i];
			}
		}
		System.out.println("최댓값 " + max);
		System.out.println("최솟값 " + min);
		
		System.out.println();
		
		//섞기 : 배열의 요소의 순서를 반복해서 바꿈(숫자 섞기)
		int[] numArr = {0,1,2,3,4,5,6,7,8,9};
		System.out.println(Arrays.toString(numArr));
		
		System.out.println();
		for(int i = 0; i < numArr.length; i++) {
			int n = (int)(Math.random() * 10); //0~9 중 한 값을 임의로 얻음
			int temp = numArr[0];
			numArr[0] = numArr[n];
			numArr[n] = temp;
			System.out.print(numArr[i] + ", ");
		}
		System.out.println();
		System.out.println(Arrays.toString(numArr));

 

String 배열의 선언과 생성

		//String 배열의 선언과 생성
		String[] name = {"동명왕","온조왕","혁거세"}; //3개의 문자열을 배열을 생성하고 값을 할당
		
		System.out.println(Arrays.toString(name));
		
		String[] strings = {"가위", "바위", "보"};
		for(int i = 0; i < 5;i++) {
			int temp = (int)(Math.random()*3);
			System.out.println(strings[temp]);
		}

 

2차원 배열

 

		//2차원 배열
		//테이블 형태의 데이터를 저장하기 위한 배열
		
		/*
		 *   국어    영어    수학
		 * 1 100    100    100
		 * 2 50     30     40
		 * 3 40     50     60
		 * 4 70     80     90
		 */
		
		int[][] score = new int [4][3]; //4행 3열의 2차원 배열 생성
		/*
		 *  0 0 0 
		 *  0 0 0
		 *  0 0 0
		 *  0 0 0
		 */
		
		/*
		 * 행 index (0~행길이 - 1) ㅣ
		 * 열 index (0~열길이 - 1) ㅡ
		 * 		0			1			2
		 *0  score[0][0] score[0][1] score[0][2]
		 *1  score[1][0] score[1][1] score[1][2]
		 *2  score[2][0] score[2][1] score[2][2]
		 *3  score[3][0] score[3][1] score[3][2]
		 */
		
		score[0][0] = 100;
		System.out.println(score[0][0]);
		
		//2차원 배열의 초기화 => 1차원 배열의 배열
		int[][] arr = { {1,2,3},{4,5,6} }; //new int[][] 가 생략됨
		// =>
		// int[][] arr = {
		//					{1,2,3}, //1차원배열
		//					{4,5,6}  //1차원배열
		//				 };

 

		/* 100    100    100
		 * 50     30     40
		 * 40     50     60
		 * 70     80     90
		 * 2차원 배열로 만들어보기
		 */
		
		int[][] score = {
				{100, 100, 100},
				{50, 30, 40},
				{40, 50, 60},
				{70, 80, 90}
		};
		int sum = 0;
		
		for(int i = 0; i< score.length;i++) {
			for(int j = 0; j < score[i].length;j++) {
				System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
				sum += score[i][j];
			}
		}
		System.out.println("sum = " + sum);

 

String 클래스

		//String 클래스
		//1. String 클래스는 char[]와 메서드를 결합한 것
		//2. String 클래스는 내용을 변경할 수 없음(읽기만 가능)
		//ex) String a = "a", b = "b"; 
		//    a = a + b => ab라는 변수값이 생김
		
		//String 클래스의 주요 메서드
		//char charAt(int index) 문자열에서 해당 위치에 있는 문자를 반환
		String string1 = "ABCDE";
		char ch1 = string1.charAt(3); //문자열 string의 4번째 문자 D를 ch에 저장
		//int length() 문자열의 길이를 반환
		string1.length(); //5
		//String substring(int from, int to) 문자열에서 해당 범위(from ~ to)의 문자열을 반환(to는 포함 안됨)
		//String substring(int from) to 생략시 from부터 끝까지 반환 (== String substring(int from, .length())
		String string2 = "012345";
		String temp1 = string2.substring(1,4);//string2에서 index번위 1~4의 문자를 반환
		System.out.println(temp1);
		//boolean equals(Obeject obj) 문자열의 내용이 같은지 확인
		//char[] toCharArray() 문자열을 문자배열로 변환해서 반환

 

Arrays 클래스

		//Arrays클래스
		//배열의 비교와 출력 equals(), toString()
		
		int[] arr = {0,1,2,3,4};
		int[][] arr2D = { {11,12}, {21,22}};
		
		//1차원 배열일 때는 toString(), 다차원 배열일때는 deepToString()
		System.out.println(Arrays.toString(arr));
		System.out.println(Arrays.toString(arr2D));
		System.out.println(Arrays.deepToString(arr2D));
		
		System.out.println();
		
		String[][] str2D1 = {{"aaa","aaa"},{"AAA", "AAA"}};
		String[][] str2D2 = {{"aaa","aaa"},{"AAA", "AAA"}};
		
		//1차원 배열일 때는 equals(), 다차원 배열일 때는 deepEquals()
		//System.out.println(str2D1 == str2D2); //사용하지 않음
		System.out.println(Arrays.equals(str2D1, str2D2));
		System.out.println(Arrays.deepEquals(str2D1, str2D2));
		
		//배열의 복사 copyOf(), copyOfRange()
		
		System.out.println();
		
		//배열의 정렬 sort()
		int[] arr1 = {3,4,2,1,0,-1};
		Arrays.sort(arr1);
		System.out.println(Arrays.toString(arr1));

 

 

 

 

728x90