JAVA chapter 05. 참조 타입. 5.6 배열타입 5.7 열거 타입
JAVA/CONCEPT 2017. 11. 16. 21:54 |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 = { 83, 90, 87 }; 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 = { 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] + ", "); } } } | 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 = { 95, 71, 84, 93, 87 }; 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 |