(1) 배열의 길이 : 직접 입력하지 않고 코드에서 배열의 길이를 얻을 수 있다.

>> int num = intArray.length; (주로 for문의 조건식에서 사용)

 

public class ArrayLengthExample {
	public static void main(String[] args) {
		int[] scores = {83,90,87};

		int sum = 0;
		for (int i=0;i<scores.length ;i++ ){ //i는 인덱스번호로 주로 사용
			sum += scores[i];
		}
		System.out.println("총합 : " + sum);

		double avg = (double) sum/scores.length;
		System.out.println("평균 : " + avg);
	}
}
---------- run ----------
총합 : 260
평균 : 86.66666666666667

- 최댓값을 구하라 (for문 이용)

public class Exercise07 {
	public static void main(String[] args){
		int max = 0;
		int[] array = {1,5,3,8,2};
		for (int i=0;i<array.length ;i++){
			if (max<array[i]){
				max = array[i];//0과1를 비교해서 큰 값인 1을 max에 대입,1과 5를 비교해서 5를 대입...
			}
		}
		System.out.println("max: " + max);
	}
}
---------- run ----------
max: 8

 

(2) 다차원 배열 : 1차원 배열을 이용해서 2차열 배열을 구현한다.

>> int[][] scores = new int [행의 수][열의 수] // 새로운 int 배열을 만들어라

scores[0][0] = 3; // 0행 0열에 3을 대입해라

>> int[][]scores = {{95,80},{92,96}};

int score = scores[0][0]; //결과 : 95

int score = scroes[1][1]; // 96

>> String[][] names = {{"김빛나","홍길동"},{"가나다","고구마"}};

String name = names[0][1]; //홍길동

 

public class ArrayExample{
	public static void main(String[] args) {
		int[][] mathScores = new int[2][3];
		for (int i=0;i<mathScores.length ;i++ ){ //0,1
			for (int k=0;k<mathScores[i].length ;k++ ){ //0,1,2
				System.out.println("mathScores[" + i + "][" + k + "] = " + mathScores[i][k] );
			}
		}
		System.out.println();

		int[][] englishScores = new int[2][]; 
		englishScores[0] = new int[2];
		englishScores[1] = new int[3];
		for (int i=0;i<englishScores.length ;i++ ){
			for (int k=0;k<englishScores[i].length ;k++ ){ 
				System.out.println("englishScores[" + i + "][" + k + "] = " + englishScores[i][k] );
			}
		}
		System.out.println();

		int[][] javaScores = {{95,80},{92,96,80}};
		for (int i=0;i<javaScores.length ;i++ ){
			for (int k=0;k<javaScores[i].length ;k++ ){ 
				System.out.println("javaScores [" + i + "][" + k + "] = " + javaScores[i][k] );
			}
		}
	}
}
---------- run ----------
mathScores[0][0] = 0
mathScores[0][1] = 0
mathScores[0][2] = 0
mathScores[1][0] = 0
mathScores[1][1] = 0
mathScores[1][2] = 0

englishScores[0][0] = 0
englishScores[0][1] = 0
englishScores[1][0] = 0
englishScores[1][1] = 0
englishScores[1][2] = 0

javaScores [0][0] = 95
javaScores [0][1] = 80
javaScores [1][0] = 92
javaScores [1][1] = 96
javaScores [1][2] = 80

- 전체 합과 평균값을 구하라 (중첩 for문 이용)

public class Exercise08 {
	public static void main(String[] args) {
		int[][] array = {{95,86},{83,92,96},{78,83,93,87,88}};

		int sum = 0;
		double avg = 0.0;

		int count = 0; //**
		for (int i=0;i<array.length ;i++ ){
			for (int k=0;k<array[i].length ;k++ ){//0일떄,1일때,2일때
				sum += array[i][k]; //i와 k 모두 입력해줘야 함
				count ++; //for문이 다 돌면 10번 카운팅
			}
		}

		avg = (double)sum / count;

		System.out.println("sum : " + sum);
		System.out.println("avg : " + avg);
	}
}
---------- run ----------
sum : 881
avg : 88.1

(3) 객체를 참조하는 배열

public class ArrayExample0 {
	public static void main(String[] args) {
		String[] strArray = new String[3];
		strArray[0] = "Java";
		strArray[1] = "Java";
		strArray[2] = new String("Java"); // 동일 문자열이지만, 새로운 객체를 생성하면 같은 객체 참조 x

		System.out.println(strArray[0] == strArray[1]); //같은 객체를 참조?
		System.out.println(strArray[0] == strArray[2]); 
		System.out.println(strArray[0].equals(strArray[2]));//.equals() 동일 문자열?
	}
}
---------- run ----------
true
false
true

 

(4) 배열 복사

>> 배열은 한 번 생성되면 크기를 변경할 수 없다!!!

>> 프로그램 도중 더 많은 저장이 필요하다고 한다면? 큰 배열을 새로 만들고, 이전 배열을 복사해야 한다.

 

*3가지 방법*

1. for문을 이용하여 복사

public class ArrayCopyExample1 {
	public static void main(String[] args) {
		int[] oldIntArray = {1,2,3};
		int[] newIntArray = new int[5];

		for (int i=0;i<oldIntArray.length ;i++ ){
			newIntArray[i] = oldIntArray[i];//새로운 배열에 이전 배열을 복사하여 대입
		}

		for (int i=0;i<newIntArray.length ;i++ ){
			System.out.print(newIntArray[i] + ",");
		}
	}
}
---------- run ----------
1,2,3,0,0, //이전 배열 값 1,2,3이 복사되고 0은 default값이 출력

 

2. System.arrayCopy() 메소드를 이용하여 복사

>>System.arrayCopy(이전배열,이전배열의 복사시작 위치,새로운배열,새로운배열의붙여넣기할위치,몇개복사)

 

public class ArrayCopyExample {
	public static void main(String[] args) {
		String[] oldStrArray = {"java","array","copy"};
		String[] newStrArray = new String[5];

		System.arraycopy(oldStrArray,0,newStrArray,0,oldStrArray.length);

		for (int i=0;i<newStrArray.length ;i++ ){
			System.out.print(newStrArray[i] + ",");
		}
	}
}
---------- run ----------
java,array,copy,null,null,

 

3. Arrays 클래스를 이용하여 복사 >> 추후에 공부....

 

(5) 향상된 for문 (자바 5부터 추가됨~)

>> 매번 for문을 작성하기 귀찮기 때문에 사용

>> 배열의 전체 값을 순차적으로 처리하고자 할 때 사용

 

public class AdvancedForExample {
	public static void main(String[] args) {
		int[] scores = {95,71,84,93,87};

		int sum = 0;
		for (int score : scores){ //항목의 개수만큼 반복
			sum += score;
		} 
		System.out.println("점수 총함 = " + sum);

		double avg = (double)sum/scores.length;
		System.out.println("점수 평균 = " + avg);

	}
}
---------- run ----------
점수 총함 = 430
점수 평균 = 86.0

+ Recent posts