知らなかった文法その他

結構あったのでメモ

static import

importの後にstaticをつけるとstaticメンバをクラス名抜きで呼び出せる。

import static java.lang.Math.sqrt;

public class Hoge{
  public void foo(){
    System.out.println(sqrt(9));
  }
} 

なかなか便利。特にimport static hogehoge.*;が便利そう。

可変長引数

メソッドに渡す引数の個数を変えられる。

public class Hoge{
  public void foo(String... args){
    for(String s : args) System.out.println(s);
  }
}

これも便利。さらにObjectの可変長引数だとボクシングでフリーダム。

public class Hoge{
  public void foo(Object... args){
    for(Object o : args) System.out.println(o.toString());
  }
  public void bar(){
    this.foo(1, '2', "3", 4.0);
  }
}

ボクシングでフリーダム。君のハートにノックアウト。

コレクションを配列に変換する

これは事あるたびにググってる。そろそろ暗記すべき。

import java.util.*;

class Hoge{
  public void foo(List<String> list){
    String[] array = list.toArray(new String[0]);
    for(String s : array) System.out.println(s);
  }
}

引数に渡された配列の長さがコレクションの長さより短い場合新しい配列を作って返す。同じか長い場合はそれに入れる。

BigIntegerクラス

longで物足りない人用のクラス。36進数とか基数も指定できる。便利。

配列の初期化

引数に配列を渡すときにその場で初期化できる

class Hoge{
  public void foo(String[] args){
    for(String s : args) System.out.println(s);
  }
  public void bar(){
    this.foo(new String[]{"aaa", "bbb"});
  }
}

一行減った。



という感じ。特にBigIntegerは最近解いていたTopCoderの問題でモロ使えたので今後活用していきたい。サンプルコードとかチュートリアルもいいけど、他人が書いたまとまったコード読むのも結構収穫がある。あと文法と標準ライブラリくらいは一回ちゃんと勉強した方がいいんかね。



参考