日付8の配置と列挙のタイプ


6.配列

-----------------------배열의 길이 기본--------------------------------- 



	public static void main(String[] args) {
		
		int[] scores = {83,90,87}; 
		
		int sum =0 ;
		
//		// length 메서드를 이용한 배열의 순회
//		for(int i=0; i<scores.length; i++) {
//			sum += scores[i];
//		} //for 
		
		
		Iterable i; 
		
		
		// int score 부분을 i로 하지말고 유의미하게 적어라! 
		for(int score : scores) { // 콜론끼리 score:scores 따닥따닥 붙이지 마라 
			//sum += scores[1] 이렇게 썻었음 ㅠ. 
			sum += score;
		}// enhanced for 
		
		
		
		System.out.println("총합: " + sum);
		
		double avg= (double) sum/ scores.length;  //length를 사용한 정확한 
		System.out.println("평균: " + avg);

	} //main

-参照オブジェクトの配列


(1)基本タイプ

   -각 항목에 값을 직접 가지고 있음 

(2)参照タイプ(クラス、インタフェース)配列

   -각 항목에 객체의 주소를 가짐 
------------------------------참조 타입의 배열과 객체의주소----------------------------------

	public static void main(String[] args) {
		
		String[] languages = new String[3];
		
		System.out.println(languages);
		//[Ljava.lang.String;@4517d9a3 << 객체의 래퍼런스(참조) 객체의 FQCN@논리적인 주소값(16진수)
		// FQCN = Fully Qualified Class Name = 모든 클래스에 대한 이름
		
		languages[0] = "언어1"; 
		languages[1] = "언어2"; 
		languages[2] = "언어3"; 
		
		System.out.println(languages[0].hashCode());
		System.out.println(languages[1].hashCode());
		System.out.println(languages[2].hashCode());
		
		// Literal = 순수한 값 + Immutable(수정불가능)
		languages[0] = "언어1";  // String 내용이 같으면 같은 객체의 주소에서 공유한다. 
		languages[1] = "언어1"; 
		languages[2] = "언어1"; 
		
		// 객체의 주소를 부르는 메서드 
		System.out.println(languages[0].hashCode());
		System.out.println(languages[1].hashCode());
		System.out.println(languages[2].hashCode());
	
	} // main

-アレイのコピー


(1)配列が作成されると、そのサイズは変更できません
(2)より多くのストレージスペースが必要な場合は、より大きな配列を作成し、配列からアイテム値をコピーします.

-アレイのコピー方法


(1)for文使用

	// 기존 배열을 직접 새로운 배열에 일일히 복사하는 예제
	public static void main(String[] args) {
		
		int[] oldArr = {1, 2, 3}; 	//기존 배열 
		int[] newArr = new int[5]; // 새로운 더 큰 배열 
		
		// 기존 배열의 원소를 새로운 배열에 복사 
		for(int i=0; i<oldArr.length; i++) {
			newArr[i] = oldArr[i];
		} // classical for
		
		//새로운 배열의 출력 
		System.out.println(Arrays.toString(newArr));
		//

	} //main
    

(2)System.arrayCopy()メソッドの使用

	// 기존 배열을 직접 새로운 배열에 arrayCopy() 메서드를 이용해 복사하는 예제
	public static void main(String[] args) {
		
		String[] oldArr = {"JAVA", "array", "copy"}; 	//기존 배열 
		String[] newArr = new String[5]; // 새로운 더 큰 배열 
		System.out.println(Arrays.toString(newArr));
		
		
		// 기존 배열의 원소를 새로운 배열에 복사 
		// System.arraycopy(oldArr, offset(기존 배열 시작점), newArr, offset(새 배열 시작점), oldArr.length(개수)); 
		System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);
		
		
		//새로운 배열의 출력 
		System.out.println(Arrays.toString(newArr));
		//

	} //main

(3)Arraysクラスの使用

	// 기존 배열을 직접 새로운 배열에 Arrays 클래스 이용해 복사하는 예제
	public static void main(String[] args) {
		
		String[] oldArr = {"JAVA", "array", "copy"}; 	//기존 배열 
		String[] newArr = new String[5]; // 새로운 더 큰 배열 
		System.out.println(Arrays.toString(newArr));
		
		
		// 기존 배열의 원소를 새로운 배열에 복사 
		//Arrays.copyOf(기존 배열, 기존배열 0에서 몇까지의 길이 )
		newArr =Arrays.copyOf(oldArr,oldArr.length); // 시작점을 정하는건 copyOfRange();
		
		//새로운 배열의 출력 
		System.out.println(Arrays.toString(newArr));
		//

	} //main

7.列挙タイプ


-列挙タイプ


(1)値のみのデータ型


(2)限定値を「列挙定数」(Enumeration Constant)と定義する


-列挙タイプ宣言


(1)ファイル名と同じ名前で宣言(慣例:列挙タイプの頭文字大文字):


(2)列挙定数の定義(有限値)

 1)열거 상수 이름은 관례적으로 모두 대문자로 작성
 2)다른 단어가 결합된 이름일 경우 관례적으로 밑줄(_)로 연결 
 
 
------------------------------열거 타입 선언-------------------------------------
//enum 생성
 enum Week {
	MONDAY, // << 열거 상수(대문자)= 객체
	TUESDAY, // 객체
	WEDNESDAY, // 객체 
	THURSDAY, //객체 
	FRIDAY, //객체 
	SATURDAY, //객체
	SUNDAY //객체
} // end enum

-列挙タイプ変数


(1)列挙型変数宣言


(2)列挙定数値の保存-列挙タイプ変数値を列挙定数の1つとする


(3)列挙タイプ変数が参照タイプ

 1)열거 타입 변수는 참조 타입이므로 null 값에 저장 가능하다! 
--------------------------열거타입 변수 선언/ 저장/ null 사용--------------------------

	public static void main(String[] args) {
	
		Week day = Week.MONDAY; 
		day = Week.TUESDAY; 
		System.out.println(day.hashCode());
		
		
		//switch 문으로 비교가능한 타입은 아래와 같습니다.
		// 1.정수 2.문자 3.문자열 4.열거타입 
		switch(day){//week의 주소를 넣은 객체
		
			case MONDAY: System.out.println("ㅜㅜ"); break; //case문에 열거 상수 넣을때 day선언 따로 안해도됌. 
			case FRIDAY: System.out.println("^^"); break;
		    default: System.out.println("--"); 
		    
		}//switch
		
		
		System.out.println(day == Week.FRIDAY);
		System.out.println(day != Week.FRIDAY);
		
		if(day== Week.FRIDAY) {
			System.out.println("불금!!!");
		} else {
			System.out.println("실망!!!");
		} //if - else 
		
		
		// null: 현재 객체의 주소를 가지고 있지 않다!! 의미 
		day = null;  // day 변수는 객체의 주소를 들고있지 않다!
		// NullPoninterException 오류가, 자바 개발자가 가장 많이 만나는 오류
		
        
        
	}//main
今日は学生たちが窮屈だったので、ゆっくりと進度を上げました.しかしそうなればなるほど、生徒たちの燃える意志が感じられる.講師は軽く説明した.講師に会えてよかった!