仕事をしていた時に、バグとして出ていた現象です。
NULLチェックをしていないのが悪い、テストしてないのが悪い
という結論なのですが、意識はしておかないと気付きにくいなと思って、備忘録として保存します。
javaではStringとintをそのまま結合した場合、文字列扱いで結合する。
以下のように、文字型と数値をそのまま結合した場合、文字列扱いで結合してしまう。
intの場合などはプリミティブなので、nullは入れることができません。
そのため、特に型変換などをしなくてもまぁなんとかなってしまったりします(;^ω^)。
ただし参照型(Integer)などでnullを入れた場合はどうなってしまうのか?
Integerの場合は、数値型ですからもちろんそのまま結合します。
つまり、nullという文字列を結合します(´・ω・)。
ちなみに文字列で型変換するようにしても、文字列結合してしまうので結局NULLという文字列で結合されてしまいます。
数値+数値の場合は足し算しようとする
この場合、もちろんnullは計算できないので、nullPointerExceptionになります。
結論
nullチェックを忘れずに行いましょう。
おまけ
見た目は35という結果ですが、これは3と5を文字列結合しただけです。
本当にこの処理方法は正しいか?というのは、デバッグなどで確認してからOKを出しましょう。
過程や方法などどうでもいいのだ!!と言ってしまえばそれだけなんですけど(´・ω・)