【とあるテキストの問題より】
*
**
***
****
と出力しましょう♪
[My answer]
String x = "";
for(int i = 0; i < 4; i++){
x += "*";
System.out.println(x);
}
※正解かどうかは別です
地味に悩んだ!
やっぱり、自分で考えてプログラム書くのは問題解くだけとは違う!
【ギモン!?】
はじめ、String x = ""; を書かなかったら
null
*
**
と出力されちゃって、なんでnullが??nullいらないんですけど。
と思ったんです(汗)
『nullとString型文字列を結合するとnullはnullという文字列に変換される
【追記】
以下は間違った認識だと気づく!↓↓↓
ーーーーーーーーーーーーーー
Java silverの勉強してて、「参照型の変数に入るのはあくまで“参照”だよ〜!」ということがしつこく出題されていたので
「このことか!」って思いました。
最初に空の文字で初期化しないと、xはnullなわけだから
そりゃ出力したら「null」って出るよね!?
ーーーーーーーーーーーーーー
いや〜!あやふやだった!
わかった気になっていた!
String奥深い。
と気づかされた基本的な問題(^^)
【情報更新】
★String文字列とnull
『nullとString型文字列を結合するとnullはnullという文字列に変換され、結合される』
※Java silver黒本より
変数aはnullで、bには“Hallo”が入っていたら、a+bは『nullhello』になっちゃうわけですね(笑)
(※ptintメソッドで出力した時)
なので、
String xは何も代入しなかったら自動でnullで初期化され
そのあとxにどんどん『+』を使って『*』を結合していったら
nullがnullという文字に置き換わってつながるので
null
*
**
となったのでしょう!
【素朴な疑問】
初期化されたnullの段階ですでに文字列としての“null”なのだろうか、、?
また学びを深めていきます!(^^)
【JavaSilver黒本】
徹底攻略Java SE 8 Silver「1Z0-808」対応問題集 試験番号1Z0-808 [ 志賀澄人 ] 価格:3,520円 |
****************
ブログランキングに参加しています。
実践重視で実力のつくプログラミングスクール↓↓↓
参考:過去記事