• ベストアンサー

equalsと==

Stringの比較の時に==ではなくequals()を使うのは以下のサイトでわかったんですが http://www.atmarkit.co.jp/fjava/onepoint/java/jv14.html では逆にintなどが==でOKなのは同じ数字の場合は同じリファレンスをみているのですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Stringクラスですのでクラスを比較するためのメソッドが容易されています。 変数には参照が入っているためにメソッドで比較を行います。 ですが、intはプリミティブ型です。 参照ではなく値が入っているため==演算子での比較が可能です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • equalsと==について

    今まで、equalsは主に文字列の比較、==はプリミティブ型の比較と言うことで仕事で使っておりました。 しかし、文字列も==が使えることがわかりました。 String a = "aaa"; String b = "aaa"; という変数がある場合、今までは if(a.equals(b))とやっておりました。(と教わりました) が、if(a==b)でも同一の結果が得られることがわかりました。 実際、Stringクラスのソースを見ると、最初に==かどうかをif文を使って判定してます。 具体的にどう違うのか、ご存知の方教えてください。 また、どちらが良いのかも教えてください。 宜しくお願いします。

    • ベストアンサー
    • Java
  • JAVAのequalsメゾットに関して

    public class Sample{ private int num; public Sample(int num){ this.num=num; public boolean equals(Sample obj){ if(obj==null){ return false; } return this.num==obj.num; } } ここでのequalsメゾットは、object同一性を比較するものか、それともobejectの同値性を比較するものでしょうか? また、オブジェクトクラスの中のequalsメゾットをみたら return(this==obj); と書かれていますが、これを見る限り同一性を比較するものだと思いますが、「objectクラスのequalsメゾットは同値性を比較するメゾット」と書かれているサイトも多くて、一体どっちが正しいでしょうか? ご回答いただければ幸いです。よろしくお願いいたします。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java
  • equalsの逆

    javaで、文字列の場合は比較演算子の「==」は用いずに if ((str1.getText()).equals(str2)){ (※…str1,2は文字列) と書きますよね? この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

    • ベストアンサー
    • Java
  • javaとC#のStringの違い

    javaだと、Equals()を使わないとStringの比較ができないのですが、C#だとEquals()も==も使えます。 これはなぜでしょうか? C#では、Stringも基本データ型なのでしょうか?それとも中間言語にコンパイルされる際に==をEquals()に変換されているのでしょうか?

    • ベストアンサー
    • Java
  • equals()メソッドの継承について

    ある本に ーーーーーーーーーーーーーーーーーーーーー class Car { protected int num; protected double gas; public Car() { num = 0; gas = 0.0; System.out.println("車を作成しました。"); } } class Sample8 { public static void main(String[] args) { Car car1 = new Car(); Car car2 = new Car(); Car car3; car3 = car1; boolean bl1 = car1.equals(car2); boolean bl2 = car1.equals(car3); System.out.println("car1とcar2が同じか調べたところ" + bl1 + "でした。"); System.out.println("car1とcar3が同じか調べたところ" + bl2 + "でした。"); } } JavaのクラスはすべてObjectクラスのメンバを継承していますので、equals()メソッドを記述しなくても、このメソッドを呼び出すことが出来るわけです。 ----------------------------------------- JavaのクラスはすべてObjectクラスのメンバを継承していますので、equals()メソッドを記述しなくても、このメソッドを呼び出すことが出来る    についてですが、 逆から言えば他の言語の場合は本来クラスの宣言の辺りにでもequals()メソッドを記述する必要があるという意味なんでしょうか?

    • ベストアンサー
    • Java
  • javaの比較一致(equals)について

    javaの基礎的なことについて質問させていただきます。 まず byte配列を空にして、 new String(byteStream.toByteArray(), "UTF-8"); でString変数に代入した後に split関数で分割します。 分割した後に equals関数を使って比較をしてみたのですが TRUEにならず compareTo関数を使用してみたところかなり数値がずれていました。 文字コードで取得した場合はズレが生じるのでしょうか? できればご教授おねがいします。

    • ベストアンサー
    • Java
  • equals()について

    プログラミングの勉強をしています。 endと入力するとプログラムを終了すると言ったプログラムです。 以下のプログラムなのですが、 import java.io.*; class Ex58{ public static void main(String args[])throws IOException{ String s=""; String t = "end"; int number = 0; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(!s.equals(t)){ System.out.print(">"); s = br.readLine(); System.out.println("入力された文字列は" + s + "です。"); System.out.println((number+1) + "番目の文字は" + s.charAt(number) + "です。"); System.out.println((number+2) + "番目の文字は" + s.charAt(number+1) + "です。"); System.out.println("文字列の長さは" + s.length() + "です。"); } } } このプログラムの中で System.out.println((number+1) + "番目の文字は" + s.charAt(number) + "です。"); System.out.println((number+2) + "番目の文字は" + s.charAt(number+1) + "です。"); System.out.println("文字列の長さは" + s.length() + "です。"); を書き加えたところendが入力されても処理が終了しない プログラムになってしまいました。 どなたか助言をよろしくおねがいします。

    • ベストアンサー
    • Java
  • java equalsメソッドについて

    こんにちは。 java初心者ですがandroidを触ることになりました。 不可解なコードで大変恐縮ですが、ご教授願えれば幸いです。 スピナーでセレクトされた文字列と変数(A,B,C,D)の値を比較して条件分岐させたいのですが、 うまくいかず悩んでいます。 下記コード ■■■の部分になります。 1) スピナーに表示される文字列を取得し、変数itemqに代入。 2) 変数A(SONY)と変数itemq(?)を比較し、同じ文字列か比較する。 3) 同一の値であればitemqの値をテキストビューに値をセットする。 というようなものです。 equalsメソッドで比較しているのですが、この部分がどうやら間違っているようなのですが、 原因が全く分かりません。 無知な質問になりますが、どうぞ皆様宜しくお願いいたします。 またコードについての指摘や助言もおねがいします。 public class SampleActivity extends Activity { String path = "/sdcard/PriceSearch/topitems.csv"; static List<String> items = new ArrayList<String>(); static ArrayAdapter<String> adapter; private ListView listview; public String itemq; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Spinner spinner = (Spinner)findViewById(R.id.spinner1); // read csv file readCsvFile(spinner); spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> parent, View viw, int arg2, long arg3) { Spinner spinner = (Spinner)parent; String item = (String)spinner.getSelectedItem(); //トースト表示 Toast.makeText(Price_SearchActivity.this, item, Toast.LENGTH_LONG).show(); itemq = item; listread(); } //Spinnerのドロップダウンアイテムが選択されなかった時 public void onNothingSelected(AdapterView<?> parent) { }}); Button button1 = (Button)findViewById(R.id.btnend); button1.setOnClickListener(new View.OnClickListener() { //@Override public void onClick(View v) { //Activity終了 finish(); return; } }); } //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ String A = "SONY"; String B = "TOSHIBA"; String C = "MITSUBISHI"; String D = "FUJITSU"; private void listread() { TextView tv = (TextView)findViewById(R.id.textView2); if (A.equals(itemq) ) { tv.setText(itemq); }else if (B.equals(itemq) ) { tv.setText("itemq"); }else if (C.equals(itemq) ){ tv.setText("itemq"); }else if (D.equals(itemq) ){ tv.setText("itemq"); }else { tv.setText("該当なし"); } } //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ private void readCsvFile(Spinner spinner) { try { // create reader InputStream input = new FileInputStream(path); InputStreamReader ireader=new InputStreamReader(input, "UTF-8"); CSVReader reader = new CSVReader(ireader,',','"',0); String[] csv; //スピナー用 ArrayAdapterを作成 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner); while ((csv = reader.readNext()) != null) { //ドロップダウンアイテムの追加 adapter.add(csv[0]); } //スピナーにadapterを設定 spinner.setAdapter(adapter); reader.close(); ireader.close(); input.close(); } catch (FileNotFoundException e) { Log.e("ERROR", e.toString()); } catch (UnsupportedEncodingException e) { Log.e("ERROR", e.toString()); } catch (IOException e) { Log.e("ERROR", e.toString()); } } }

    • ベストアンサー
    • Java
  • 配列の値(長文です)

    現在JFrameを使ってのデバック中なのですが、どうしてもわからないので質問します。A.javaの(1)を格納しようとする時、TreeTest.javaのerrorメソッドで入れた配列をshowClassPropertyメソッドで使いたいのですが初期化されてるようで何も表示しません。どうすればきちんと動作するか教えていただけませんか?粗末なプログラムですみません。些細なことでもいいので教えていただければ幸いです。 A.java------------------------------- public class A{ TreeTest tree = new TreeTest(); ・・・      tree.error("java",1);  ・・・(1) } ------------------------------------- TreeTest.java------------------------ public class TreeTest extends JFrame{ String[][] hai = new String[10][10]; int counter; TreeTest(){ ・・・ for(int ii=0;ii<10;ii++){ for(int jj=0;jj<10;jj++){ hai[ii][jj]= new String(); } } ・・・ } public void error(String a,int i){ for(int co=0;co<10;co++){ if(hai[i][co].equals("")){/*配列の中身がない場合*/ hai[i][co] = a;/* 配列にaを入れる */ System.out.println("hai["+i+"]["+co+"] = "+hai[i][co]); break; } } counter = i; } public void showClassProperty() { for(int co=0;co<10;co++){ if(!(hai[counter][co].equals(""))){/*配列の中身がある場合*/ System.out.println("hai["+counter+"]["+co+"] = "+hai[counter][co]); } } --------------------------------------- Main.java------------------------------ public static void main(String[] args){ TreeTest tree = new TreeTest(); tree.setVisible(true); }

    • ベストアンサー
    • Java
  • 配列の型判定の仕方

    メソッドの引数をObjectにして、その引数の型を判定しようとしています。 たとえば以下のような感じです。 String hoge(Object para) { if(para.equals(java.lang.Integer.class)) { return "intです"; } return "わかりません" } 上記は、int型なら判定できるメソッドですが、int[]やString[]を判定するためにはどうしたらよいのでしょうか? paraにint[]型の値が入ってきた場合、 para.equals(java.lang.Integer[].class) としてもtrueにはなりませんでした。 どうすればできるのか、ご教授いただけると幸いです。 手段がなければ、para.getClass().toString()をして出力される文字列で判定しようかと思っています。

    • ベストアンサー
    • Java