Java SE7 Gold 取得を目指して (6)


Java SE7 Gold をとりたい…!

本日は第6回目です。
5章の残り半分を進めました。

今日のこぼれ話

最近、ひょんなことでCoffeeScriptを書いたのですが、{} の代わりにインデント、というのはなかなか心地のいい記法ですね。
{ の位置を行終わりにするか次の行にするか、みたいな不毛な論争も起きませんし。
とはいえ、そんな言語も \ とか入れて途中改行すると途端に見づらくなるので、Javaのように1行が長くなりがちな言語だと不向きなのかもしれません。
まぁ、eclipseのようなIDEはもちろん、最近はテキストエディタでもフォーマッタありますし、コード整形はそちらで十分やっていけるのでしょう。
インデントとかフォーマットを気にしないメンバーが、必ずと言っていいほどプロジェクトに紛れこんでしまうのは、また別のお話…。

本日知ったこと(5章 2/2)

  • フォーマット

    • Numberフォーマットは NumberFormat format = NumberFormat.getXXXInstance(); のような形で取得する (newできない)
    • DecimalFormatは DecimalFormat format = new DecimalFormat(pattern);のような形で
    • DecimalFormatで\を使いたければ\u00a5
    • DateFormatは DateFormat format = DateFormat.getInstance(); のような形で(new できない)
    • SimpleDateFormatは SimpleDateFormat format = new SimpleDateFormat(pattern); のような形で
    • (個人的に)あまり使わないSimpleDateFormatのパターン文字
    文字 意味 出力例
    G 紀元 2016
    E 曜日 火, Tue
    a 午前/午後 午後, PM
    SS ミリ秒
    z タイムゾーン JST
    • パターン中での '' は単一引用符
  • 正規表現

    • Matcherの引数CharSequenceは、StringやStringBuilderのスーパーインタフェース
    • Matcherのメソッドたち
    Pattern p = Pattern.compile("(?<=SE)\\d");
    Matcher m = p.matcher("Java SE6 Gold");
    System.out.println(m.find()); // true
    System.out.println(m.group()); // 6
    System.out.println(m.start()); // 7
    System.out.println(m.end()); // 8
    System.out.println(m.replaceAll("7")); // Java SE7 Gold
    
    • String.replaceAll(str1, str2); は第1引数に正規表現をとる
    • String.replace(str1, str2); は第1引数に単純な文字列をとる
    • String.valueOf(obj); はstaticメソッドなので、以下でも大丈夫
    String str = null;
    str.valueOf(10); // 10
    

正規表現と聞くと、この格言(?)を思い出しますよね。

一つの問題に直面した時,「なるほど、正規表現を使えばいいのか.」と考える人がいる。
こうして彼らは二つの問題を抱えることになる。
http://kiyotakakubo.hatenablog.com/entry/20090518/1242658608