ソースコードを追いかけて

一見複雑怪奇。 でも、ていねいにコードを追っていくと「みえて」きた! ただいまプログラミング学び中。 勉強になったことなどをメモとしてまとめています。 Java、HTML、CSS、JavaScript、、など。 他、IT系でなるほど〜って思ったことなども。

Stringの基本的な問題で思わぬ苦戦!【Java知識】

【とあるテキストの問題より】

 

 

*

**

***

****

と出力しましょう♪

 

 

[My answer]

 

String x = "";

for(int i = 0; i < 4; i++){

x += "*";

System.out.println(x);

}

 

※正解かどうかは別です

地味に悩んだ!

やっぱり、自分で考えてプログラム書くのは問題解くだけとは違う!

 

 

【ギモン!?】

 

はじめ、String x = ""; を書かなかったら

null

*

**

と出力されちゃって、なんでnullが??nullいらないんですけど。

と思ったんです(汗)

nullString型文字列を結合するとnullnullという文字列に変換される

 

 

【追記】

以下は間違った認識だと気づく!↓↓↓

 ーーーーーーーーーーーーーー

 

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円
(2021/4/13 10:15時点)
感想(5件)

****************

ブログランキングに参加しています。

ブログランキング・にほんブログ村へにほんブログ村

 

 

実践重視で実力のつくプログラミングスクール↓↓↓

 参考:過去記事  

ウェブカツは部活!?実践に特化したプログラミングスクールで脱・知識バカ - ソースコードを追いかけて