このブログは46歳からプログラミング(Java言語)を学んでいる、ぐーたら女の備忘録です。
アナログ女、プログラミングと無縁だった女は、どこまで成長できるの?
46歳Javaの学び|文字列の比較「==」がダメな理由について
Javaを学びはじめた初心者が必ず落ちる穴・・・
それが文字列の比較
「==」を使ってもコンパイルエラーにならないからタチが悪いんだよ・・
参考書などでは
「==」は使えないと書かれてけど、そもそもなんで使えないのか!?
その謎が解けたので、備忘録として残します。
「==」はアドレス値を比較する
「==」はアドレス値が同じかどうかを比較するもの。
存在する場所が同じであれば、イコール。
例えば
Hero h1 = new Hero(“ぐーたら女”) ;
Hero h2 = h1 ;
このように
h1をh2に代入している場合
h1のアドレス値が、h2に代入されるので、h1,h2ともに同じアドレス値となる。
このとき
h1 == h2 と言える。
そのため
文字列「太郎」という文字、内容を比較したい時は、アドレス値を比較する「==」ではエラーとなる場合が起こり得る。
なので
文字列の比較には「==」は使えないとされているんだな~という理解。
文字を比較したいなら「epuals」を必ず使う!
文字を比較したい場合、なぜ「==」じゃダメなのか!?は前項のとおり。
文字列が同等、同じ内容か?(アドレス値が違ってもよい)を判定できる「epuals」を使うことに納得ができたのは、次のとおり。
例えば
Hero h1 = new Hero (“ぐーたら女”) ;
Hero h2 = new Hero (“ぐーたら女”) ;
h1 != h2 となるけど(アドレス値は違う)
h1.equals(h2) といえる(「ぐーたら女」は同じ)
文字列、Stiring型(参照型)は「epuals」を使うのであ~る。
ここまでブログに残せば、文字列は「==」じゃダメ。「equals」を使うって、脳に叩き込ませられたと信じたい(笑)
分からないことが、分かった!!が成長☆☆☆
アナログ、プログラミング初心者でも、46歳という年齢でも、諦めなーい。
どこまで成長できるか!?
どんな未来の自分に出会えるか!?
ということで、今日の学びはここまで。