BLOG

【プログラマー 研修 Java】まんじゅうの記録4


ごきげんよう、めちゃくちゃ朝型のまんじゅうです。

今日は3時に目覚め、再び眠りにつくも4時に目覚め、6時まで目をつぶっていました。

何時に寝てもこんな感じなので、できるだけ早く寝るようにしています。




休日は映画『ハーレイ・クインの華麗なる覚醒』を見に行きました。


感想を一言でいうと、最高でした。




バットマンの敵であるジョーカーの元カノ ハーレクイン。



ジョーカーとの別れから立ち直り、 “ジョーカーの彼女” としてではなく、

1人の人間 “ハーレイクイン” として生きていく様が描かれています。



DC作品少ししか見てないのですが、初心者でも楽しめる作品でしたので、

興味が湧いた人はぜひ見に行っていただいて、感想共有しましょう。


学習内容


さてさて本題の研修の話をしましょう。

JavaSilverの勉強で思い出したこと、知ったことを紹介していこうと思います。

配列の作成と使用

 使ったことのないメソッドが出てきましたので、紹介します。

 その① cloneメソッド
 変数の参照先にあるインスタンスをそのままコピーできます。

public class Main {
  public static void main(String[] args) {
    int[][] arrayA = {{1, 2}, {1, 2}, {1, 2, 3}};
    int[][] arrayB = arrayA.clone(); //2次元配列arrayAをarrayBへコピー
    int total = 0;
    for (int[] tmp : arrayB) {
      for (int val : tmp) {
        total += val;
      }
    }
    System.out.println(total);
  }
}

 以上では4行目で2次元配列arrayAをarrayBへコピーしています。

 つまり、arrayBにはarrayAとまったく同じ要素が入っていることから、

 変数totalに2次元配列arrayAの要素が順番に足されることになり、

 コンソールには「12」が表示されます。

 その②  arraycopyメソッド
 このarraycopyメソッドは配列の任意の範囲だけ切り出してコピーできます。

public class Main {
  public static void main(String[] args) {
    char[] arrayA = { 'a', 'b', 'c', 'd', 'e' };
    char[] arrayB = new char[arrayA.length];
    System.arraycopy(arrayA, 1, arrayB, 0, 4); //2次元配列arrayAの一部をarrayBへコピー
    for (char c : arrayB) {
      System.out.println(c);
    }
  }
}

 以上では5行目で配列arrayAの一部をarrayBへコピーしています。

 arraycopyのあとの()内に5つの引数が入ります。

 System.arraycopy(arrayA, 1, arrayB, 0, 4)
 →arrayAのarrayA[1]から要素4個をarrayBのarrayB[0]にコピーする

 つまり、たった1行でこのような処理が行われています。

 arrayB[0] = arrayA[1];
 arrayB[1] = arrayA[2];
 arrayB[2] = arrayA[3];
 arrayB[3] = arrayA[4];

 arrayA[1]~arrayA[4]の要素がarrayB[0]~arrayB[3]にコピーされたので、

 実行するとコンソールに「bcde」と表示されます。

ループ処理の使用

■ for 文
<構文> for ( 初期化文 ; 条件文 ; 更新文 ) { 繰り返し処理 }

 e.g. for  ( int i = 0 ; i < 5 ; i++ ) { … } 
 初期化文: int i = 0
 条  件  文: i < 5
 更  新  文: i++

 これがよく見るfor文だと思いますが、色々知らないことがありました…

 

 その① 初期化文、更新文はカンマ(,)区切りで複数記述可能
  for ( int i = 0,  j = 0  ;  i < 3  ;  i++ )
  for ( int i = 1 ;  j < 3 ;  i++, period() )

 ただし複数の変数を宣言する場合は、同じ型のみ。
 × for ( int i = 0,  long l = 0  ;  i < 3  ;  i++ )

 

 その② 条件文は論理演算子を使用で複合条件を記述可能
  for ( int i = 0, j = 0 ; i < 3 && j < 5 ; i++)

 初期化文、更新文のようにカンマ(,)で区切っての複数記述はできない。
 × for ( int i = 0, j = 0 ; i < 3, j < 5 ; i++)

ふりかえり



研修でやった範囲でも、うろ覚えになっていること、まだ知らないこと、

たっくさんあるなぁと問題を解くたびに思います。はぁ~


日々苦戦しておりますが、新しいことを知り、理解するのは楽しい。

まだまだ合格には程遠いですが、がんばっるぞーー!



それでは今日はここらへんで、また会いましょう。アデュー

BLOGトップへ戻る