Javaトレーニングまとめ3日目第4話

20444 ワード

1.配列


大量のデータの平均値を簡単に求め,配列を用いて大量の変数を一度に処理することができる.
同じタイプの複数のデータを1つのアレイに順次格納します.

例)1-1

	int math = 20;
	int korean = 30;
	int science = 40;
	int english = 50;
	int society = 80;
	int japanese = 50;
	int sum = scores[0] + scores[1] +scores[2] +scores[3] 		+scores[4];
	int sum = 0;
	for (int i = 0; i < scores.length; i++) {
		sum = sum + scores[i];
    }
例1−1に示すように、1つのカテゴリに様々な変数が宣言されているため、無効な資料構造タイプである.

例)1-2

	int[] score = new int[5];
	int count = score.length;
	System.out.println(score[0]);*/
	int[] score1 = new int[] {20,30,40,50,60};
	int[] score2 = {20,30,40,50,60};
例1-2に示すように、1-1の例のようにデータの追加時の各変数を宣言する必要はありません.

2.for文/通常for文&強化for文


通常のfor文は条件文の初期値、条件、カウンタのインクリメント方法を設定し、強化されたfor文はJava独自のforeach文を使用します.
効率を上げることができます.
foreach
for each構文を使用する場合、for each構文を使用して集合データを処理する場合、集合を変更することはできません.
(インデックス:オブジェクト)オブジェクトのサイズに応じて繰り返し回数を決定します.foreach文は通常のfor文よりも柔軟です.

例)2-1

	for (int value:moneyList2 ) {
	System.out.println(value);

3.Garbage Collection(ゴミ収集)


プログラム開発では無効なメモリ浪費(Garbage)が発生し、C言語ではfree()という関数が直接使用されます.
メモリは解放されますが、Javaでは開発者が直接メモリを解放することはありません.
Javaはゴミ収集(GC,ゴミ収集)というデバイスが使用しなくなったメモリをクリーンアップした.

練習問題


// 4-1 practice exercise

/*
다음 조건에 맞는 각 배열을 준비하는 프로그램을 작성하시오. 값의 초기화는 필요 없음.
1. int형 값을 4개 담을 수 있는 배열 points
2. double 형 값을 5개 담을 수 있는 배열 weights
3. boolean 형 값을 3개 담을 수 있는 배열 answers
4. String형 값을 3개 담을 수 있는 배열 names
*/

	int point[] = new int[4];
	double weight[] = new double[5];
	boolean answers[] = new boolean[3];
	String[] names = new String[3];
	System.out.println(answers);

// 4-2 practice exercise !

/*
다음 조건에 맞는 프로그램을 작성하시오.
1. 3개의 계좌 잔액 “121902”, “8302”, “55100” 이 담겨 있는 int 형 배열 moneyList 를 선언하시오
2. 그 배열의 요소를 1개씩 for 문으로 꺼내서 화면에 표시하시오
3. 같은 배열 요소를 foreach 문으로 1개씩 꺼내서 화면에 표시하시오
*/
	int moneyList1[] = {121902};
	int moneyList2[] = {8302};
	int moneyList3[] = {55100};
//formal
	for (int i = 0; i < moneyList1.length; i++) {
		System.out.println(moneyList1[i]);
	}
	for (int i = 0; i < moneyList2.length; i++) {
		System.out.println(moneyList2[i]);
	}
	for (int i = 0; i < moneyList3.length; i++) {
		System.out.println(moneyList3[i]);
	}
//향상된 for 문
	for (int value:moneyList1 ) {
		System.out.println(value);
	}
	for (int value:moneyList2 ) {
		System.out.println(value);
	}
	for (int value:moneyList3 ) {
		System.out.println(value);

//4-3 practice exercise !

/*
각 라인에서 발생하는 예외의 이름을 답하시오.
*/

	int [] counts = null;
	float[] heights = {171.3F , 175.0F};
		   
        System.out.println(counts[1]);         
		System.out.println(heights[2]);

// 값을 담고있는 수가 2개 이고 인덱스 값이 초과 또는 같기 때문에 에러발생!
잘못된 인덱스를 사용해서 배열에 접근했다는 것을 알려주기 위한 예외.
인덱스는 0보다 크거나 배열의 사이즈보다 작아야 한다.
  • エラーコール4-3-1
    System.out.println(counts[1]);
    空の値であるため、countsを配列に保存できません.(Cannot load from int array because "counts"is null)
    nullは何もないことを示します.(0またはスペース:")
    すべての参照タイプのデフォルト値はnullです.
    nullは有効なオブジェクトインスタンスではないため、メモリが割り当てられていません.
  • エラーコール4-3-2
    System.out.println(heights[2]);
    //値を含む数が2で、インデックス値が以上であるか等しいため、エラーが発生しました.
    無効なインデックスを使用して配列にアクセスすることをユーザーに通知する例外です.
    インデックスは0より大きいか、配列より小さいサイズでなければなりません.
  • // 4-4 practice exercise !

    /*
    다음 4개의 조건에 맞는 “숫자 맞추기 퀴즈" 프로그램을 작성 하시오.
    1. 3개짜리 int형 배열 numbers를 준비하시오. 이 때 초기화는 각각 “3”, “4”, “9”로 합니다.
    2. 화면에 “1자리의 숫자를 입력 해 주세요" 라고 표시합니다
    3. 다음 코드를 사용해 키보드로부터 숫자를 입력 받아, 변수 input 에
    대입합니다
    4. input값이 3, 4, 9 중 하나와 같다면 “정답!” 이라고 표시합니다
    */
    
    int[] numbers = {3,4,9};
    	System.out.println("한자리 숫자를 입력해 주세요 :");
    Scanner sc = new Scanner(System.in);
    int input = sc.nextInt();
    	for (int num: numbers ) {
    		if(input == num){
    			System.out.println("정답!");
    	}else {
    		System.out.println("틀렸습니다!");
    		}
    	break;
    }