質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

1979閲覧

Java の==とequalsの違いがわかりません。

RiFu

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/12/28 04:20

編集2017/12/28 04:30

###質問
MinecraftのPluginの作成をしていたのですが、b.getType().equals(Material.EMERALD_BLOCKのequalsがわかりません。==と何が違うのでしょうか?超初心者なので、極力分かりやすくお願いします。

java

1public class EventsClass implements Listener{ 2 3 @EventHandler 4 public void onInteract(PlayerInteractEvent event) { 5 Action a = event.getAction(); 6 Player p = event.getPlayer(); 7 Block b = event.getClickedBlock(); 8 9 if(a.equals(Action.LEFT_CLICK_BLOCK)) { 10 if(b.getType().equals(Material.EMERALD_BLOCK)) { 11 p.sendMessage(ChatColor.LIGHT_PURPLE + "test"); 12 if(p.getHealth() == 20) { 13 14 } 15 }else { 16 17 } 18 19 } 20 } 21} 22

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2017/12/28 04:22

例えばどんな説明のどこがわからないですか
RiFu

2017/12/28 04:31

わかりずらくてすいません。質問を編集しましたので、再度確認お願いします。
ozwk

2017/12/28 04:38

調べて見つけた説明のここがわからんと書いてくれないと、またわからない説明を読まされる可能性が高いですよ
guest

回答2

0

ベストアンサー

java

1public class Test{ 2 public static void main(String... args){ 3 //new String("something")はパフォーマンス的にだめ 4 String a = new String("aaa"); 5 String b = new String("aaa"); 6 String c = a; 7 String d = new String("bbb"); 8 9 System.out.println(a == b); // false(同じオブジェクトか?) 10 System.out.println(a.equals(b)); // true(同じ値か?) 11 System.out.println(a==c);//true(同じオブジェクトか?) 12 System.out.println(a.equals(c));//true(同じ値か?) 13 System.out.println(a==d);//false(同じオブジェクトか?) 14 System.out.println(a.equals(d));//false(同じ値か?) 15 } 16 17}

==演算子は値の同一性をequals()メソッドは値の同値性を表すということになっています。

投稿2017/12/28 05:25

編集2017/12/29 15:19
tignear

総合スコア260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RiFu

2017/12/28 05:32

ありがとうございます!とても分かりやすかったです!
guest

0

「==」は値同士の比較をするものです。

System.out.println( 1 == 1 ); // trueが出力される。

「equals」は参照渡しされるオブジェクト同士を比較するものです。

String a = "aaa"; String b = "aaa"; System.out.println(a == b); // falseが出力される。 System.out.println(a.equals(b)); // trueが出力される。

投稿2017/12/28 04:39

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RiFu

2017/12/28 04:55

もしSystem.out.println(a == b);がSystem.out.println(a == a);だった場合は、trueとなるんですか? System.out.println(a.equals(b));のb以外のものでも、trueとなるんですか?また、a.equals(a)の場合はfalseになるのですか?複数質問すいません。
tignear

2017/12/28 05:11 編集

この例はまずい気がする…… コンパイラが最適化するせいで両方trueだし… (オラクルJDKのJava9で確認)
RiFu

2017/12/28 05:20

すいません..できたら、どの例が悪いのか的確に教えてほしいです。
tignear

2017/12/28 05:31 編集

回答への指摘で下のStringを比較してるやつ。 メソッド内に入れると最適化されてどっちもtrueじゃねぇかってなってまずい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問