Java

double の値が NaN かどうかは == 演算子ではチェックできない

double の変数が NaN かどうかは、Double#isNaN() でチェックする。 double の変数と Double.NaN を == で比較したら、常にfalseになってしまう。 double d = Double.NaN; if (d == Double.NaN) { // ここは通らない } if (Double.isNaN(d)) { // ここは通る…

あいまいなオーバーロードの解決はコンパイル時に行われる

フヒヒヒヒすいません! Java使いはじめて4年経つけど、ずーっと勘違いしていた。 あいまいなオーバーロードの解決は、実行時ではなくコンパイル時に行われる。 こんなのがあったら public class OverloadTest { public static void test(Object o) { Syste…

String#replaceFirst より StringUtils#replace を使う

DAO層で発行しているSQLのトレースをしているのだが、パラメータが "?" のまま出力されると不便なので、"?"をバインドされるパラメータに置換してからSQL文を出力するデバッグルーチンを書いたら、 java.lang.IllegalArgumentException: Illegal group ref…