JAVA chapter 05. 참조 타입. 


5.6 배열 타입

5.6.1 배열이란?



5.6.2 배열 선언



5.6.3 값 목록으로 배열 생성


// 배열 변수를 이미 선언한 후에 다른 실행문에서 중괄호를 사용한 배열 생성은 허용되지 않는다.

ex)

타입[] 변수;

변수 = { 값0, 값1, 값2, 값3,  ... }; // 컴파일 에러


// 배열 변수를 미리 선언한 후, 값 목록들이 나중에 결정되는 상황이라면 new 연산자를 사용해서 값 목록을 지정해주면 된다

ex)

변수 = new 타입[] { 값0, 값1, 값2, 값3 }


ex)

String[] names = null;

names = new String[] { "신용권", "홍길동", "감자바" };



5.6.4 new 연산자로 배열 생성


// 값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶다면 new 연산자로 다음과 같이 배열 객체를 생성시킬 수 있다.


1. 타입[] 변수 = new 타입[길이];


2. 타입[] 변수 = null;

변수 = new 타입[길이];


ex)

int [] scores = new int[3];

scores[0] = 83;

scores[1] = 90;

scores[2] = 75;



5.6.5 배열 길이

// 배열의 인덱스 범위는 0 ~ (길이-1)이고 인덱스를 초과해서 사용하면 ArrayIndexOutOfBoundsException이 발생한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package sec06.exam03_array_length;
public class ArrayLengthExample {
    public static void main(String[] args) {
        int[] scores = { 839087 };
        
        int sum = 0;
        for(int i=0; i<scores.length; i++) {
            sum += scores[i];
        }
        System.out.println("총합 : " + sum);
        
        double avg = (double) sum / scores.length;
        System.out.println("평균 : " + avg);
    }
}
cs





5.6.6 커맨드 라인 입력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package sec06.exam04_main_argument;
public class MainStringArrayArgument {
    public static void main(String[] args) {
        if(args.length != 2) { // 입력된 데이터 개수가 2개가 아닐 경우
            System.out.println("프로그램의 사용법");
            System.out.println("java MainStringArrayArgument num1 num2");
            System.exit(0);
        }
        
        String strNum1 = args[0];
        String strNum2 = args[1];
        
        int num1 = Integer.parseInt(strNum1); // 문자열을 정수로 변환
        int num2 = Integer.parseInt(strNum2);
        
        int result = num1 + num2;
        System.out.println(num1 + " + " + num2 + " = " + result);
    }
}
cs


5.6.7 다차원 배열



5.6.8 객체를 참조하는 배열

1
2
3
4
5
6
7
8
9
10
11
12
13
package sec06.exam06_array_reference_object;
public class ArrayReferenceObjectExample {
    public static void main(String[] args) {        
        String[] strArray = new String[3];
        strArray[0= "Java";
        strArray[1= "Java";
        strArray[2= new String("Java");
 
        System.out.println( strArray[0== strArray[1]);
        System.out.println( strArray[0== strArray[2] );    
        System.out.println( strArray[0].equals(strArray[2]) );
    } 
}
cs




5.6.9 배열 복사 (얕은 복사)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package sec06.exam07_array_copy;
 
public class ArrayCopyByForExample {
    public static void main(String[] args) {
        int[] oldIntArray = { 123 };
        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] + ", ");
        }
    }
}
cs




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package sec06.exam07_array_copy;
 
 
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] + ", ");
        }
    }
}
cs




5.6.10 향상된 for문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package sec06.exam08_advanced_for;
public class AdvancedForExample {
    public static void main(String[] args) {
        int[] scores = { 9571849387 };
        
        int sum = 0;
        for (int score : scores) {
            sum = sum + score;
        }
        System.out.println("점수 총합 = " + sum);
        
        double avg = (double) sum / scores.length;
        System.out.println("점수 평균 = " + avg);
 
    } 
}
cs





5.7 열거 타입

5.7.1 열거 타입 선언

1
2
3
4
5
6
7
8
9
10
11
package sec07.exam01_enum;
 
public enum Week {
      MONDAY,
      TUESDAY,
      WEDNESDAY,
      THURSDAY,
      FRIDAY,
      SATURDAY,
      SUNDAY
}
cs



5.7.2 열거 타입 변수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package sec07.exam01_enum;
 
import java.util.Calendar;
 
public class EnumWeekExample {
    public static void main(String[] args) {
        Week today = null; // 열거 타입 변수 선언
        
        Calendar cal = Calendar.getInstance();
        int week = cal.get(Calendar.DAY_OF_WEEK); // 일(1) ~ 토(7)까지의 숫자를 리턴
        
        switch(week) {
            case 1:
                today = Week.SUNDAY; break;
            case 2:
                today = Week.MONDAY; break;
            case 3:
                today = Week.TUESDAY; break;
            case 4:
                today = Week.WEDNESDAY; break;
            case 5:
                today = Week.THURSDAY; break;
            case 6:
                today = Week.FRIDAY; break;                
            case 7:
                today = Week.SATURDAY; break;        
        }
        
        System.out.println("오늘 요일: "+ today);
        
        if(today == Week.SUNDAY) {
            System.out.println("일요일에는 축구를 합니다.");
        } else {
            System.out.println("열심히 자바 공부합니다.");
        }
    }
}
cs




5.7.3 열거 객체의 메소드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package sec07.exam01_enum;
 
public class EnumMethodExample {
    public static void main(String[] args) {        
        //name() 메소드
        Week today = Week.SUNDAY;
        String name = today.name();
        System.out.println(name); // SUNDAY
        
        //ordinal() 메소드
        int ordinal = today.ordinal();
        System.out.println(ordinal); // 6
 
        //compareTo() 메소드
        Week day1 = Week.MONDAY;
        Week day2 = Week.WEDNESDAY;
        int result1 = day1.compareTo(day2);
        int result2 = day2.compareTo(day1);
        System.out.println(result1); // -2
        System.out.println(result2); // 2
 
        //valueOf() 메소드
        /*Week weekDay = Week.valueOf("SUNDAY");
        if(weekDay == Week.SATURDAY || weekDay == Week.SUNDAY) {
            System.out.println("주말 이군요");
        } else {
            System.out.println("평일 이군요");
        }*/
        
        if(args.length == 1) {
            String strDay = args[0];
            Week weekDay = Week.valueOf(strDay);
            if(weekDay == Week.SATURDAY || weekDay == Week.SUNDAY) {
                System.out.println("주말 이군요");
            } else {
                System.out.println("평일 이군요");
            }
        }
        
        //values() 메소드
        Week[] days = Week.values();
        for(Week day : days) {
            System.out.println(day);
        }
    }
}
cs



Posted by 너래쟁이
: