Javaなんでも知ってるマンきてくれや
■ このスレッドは過去ログ倉庫に格納されています
String型の変数にnullを代入した後に+演算子を使うとnullが文字列に変換されるのはなんでなんや?
String str = null;
str += "null";
でnullnullになる意味が分からんのやが
nullだけでええやん 参照を持たないところに新しい参照先を追加するんやからnullが文字列になる必要なくない? +=すると既に入ってる値はtoStringされて結合されるから 暗黙のキャストで比較したときに空列とnullが等しいと困るから あかん余計わからんようになった勉強しなおしてくるわ +=はすでに変数に入ってる値(null含む)をそのまま文字列に変換する String.toString()の中身を見るんや
そうするとnullだと"null"になって出力される処理になってるやろ?
これだと適当に取得したStringをログに出す時にnullって書かれて便利なんや >>10
出力するときにnullって目に見えるといいからってだけなんか? >>12
そうやで
nullの時に何も書かないと、""っていう空文字が入ってる時と見分け付かないからや >>14
なるほど理解したわ
確かにその区別は重要やな
皆サンガツ
これで眠れるわ 文字列との結合のときって、String.toString()が呼び出されとるんちゃうかな
String.toString(null)が内部的には呼び出されてて、それと"null"が結合されとるんちゃう? ChatGPTでもBingAIでも聞けば教えてくれるで >>11
+=使わんかったらこうなるやろ
str = str + "null"
+使うとString型は暗黙的にこうなるや
str = str.toString() + "null"
str.toStringは"null"や >>17
GPT君に聞いたら
Javaの仕様では、String型の変数にnullを代入すると、その変数はnull参照と呼ばれる特殊な値を持つことになります。これは、変数が何も参照していないことを示すための値です。
しかし、String型の変数に対して"+"演算子を使用すると、Javaコンパイラは文字列結合を行います。その際、文字列とnull参照を結合すると、Javaはnull参照を文字列"null"に変換します。これは、null参照を文字列として扱う場合によくある操作であり、JavaのStringクラスでもこのように定義されています。
つまり、String型の変数にnullを代入して+演算子を使用すると、Javaは自動的にnullを文字列"null"に変換し、その後に文字列を結合するため、"nullnull"という文字列が生成されることになります。
こんな答えでなんでなのか教えてくれへんかったんや
聞き方が悪かったんかもしれんが >>18
>>16
裏ではそういう処理が行われてたんか
理解が深まったわ ■ このスレッドは過去ログ倉庫に格納されています