(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