ごきげんよう、めちゃくちゃ朝型のまんじゅうです。
今日は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++)
研修でやった範囲でも、うろ覚えになっていること、まだ知らないこと、
たっくさんあるなぁと問題を解くたびに思います。はぁ~
日々苦戦しておりますが、新しいことを知り、理解するのは楽しい。
まだまだ合格には程遠いですが、がんばっるぞーー!
それでは今日はここらへんで、また会いましょう。アデュー