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

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

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

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

Q&A

解決済

3回答

1874閲覧

System.out.printlnの挙動について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2017/01/07 08:38

System.out.printlnの挙動について
下記ソースがあります。
1 public class Sub {
2 __public static void main(String[] args) {
3 __//test();
4 __String str1 = "AAA";
5 __String str2 = "BBB";
6 __String str3 = new String("AAA");
7 __//str1 = new String("AAA");
8 __System.out.println("str1.hashCode() = " + str1.hashCode());
9 System.out.println("str2.hashCode() = " + str2.hashCode());
10__System.out.println("str3.hashCode() = " + str3.hashCode());
11__System.out.println("str3.equals(str1) = " + str3.equals(str1));
12__System.out.println("str3 == str1 = " + str3 == str1);
13
}
14}
上記をコンパイルして実行した結果が下記になります
str1.hashCode() = 64545
str2.hashCode() = 65538
str3.hashCode() = 64545
str3.equals(str1) = true
false

12行目の内容が「false」しか出力されていなく、「str3 == str1 = 」が何故か消えています。
理由をご存じの方は教えていただきたく思います。

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

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

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

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

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

guest

回答3

0

ベストアンサー

演算子の優先順位が違うことに注意してください。
掛け算が足し算より先に計算するように、Javaでは'=='より、先に、'+'をしたものを計算します。
なので、このコードを質問者様の期待通りに実行するには、

System.out.println("str3 == str1 = " + (str3 == str1));

とします。

他の演算子の優先順位は次のようなサイトを見るといいですよ。

演算子の優先順位と結合規則 - 演算子 - Java入門

投稿2017/01/07 08:46

編集2017/01/07 09:02
taka.impact

総合スコア32

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

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

0

"str3 == str1 = " + str3

がまず実行されてstr3 == str1 = AAA
の文字列インスタンスが生成され、そのインスタンスとstr1を比較してfalseが帰っているからではないでしょうか

投稿2017/01/07 08:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

演算子の優先順位の違いでした。
「文字列:"str3 == str1 = "」と「str3の内容」を足した結果を比較していたので、「str3 == str1 = 」が消えていたようです。
理解出来ました。
回答したおふたかたありがとうございました。
ベストアンサーを選べないので、自己解決とします。

投稿2017/01/07 09:41

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

swordone

2017/01/07 09:51

いや、選べよ。 自己解決の方が回答者に失礼。
退会済みユーザー

退会済みユーザー

2017/01/07 10:21

同様の内容の場合は基本先着順で選ぶこと
退会済みユーザー

退会済みユーザー

2017/01/07 11:05

そういうルールだったんですね。。 次回から気をつけます!!
退会済みユーザー

退会済みユーザー

2017/01/07 11:08

あぁ。 ベストアンサー選んでそれ以外の回答にイイネ的なやつやればよかったな。。
s8_chu

2017/01/07 11:12

ベストアンサーは決定してしまった後でも変更できるはずなので、変更してはいかがでしょうか?
退会済みユーザー

退会済みユーザー

2017/01/07 11:32

初めて知りました。 yahoo知恵袋とは違うんですね。 教えて頂きありがとうございます。
退会済みユーザー

退会済みユーザー

2017/01/07 11:38

(自己解決が回答者に失礼って変な感覚だなぁ)
swordone

2017/01/07 15:27

回答が的外れなら自己解決ってのはわかりますよ。しかしこの自己解決は回答者の回答そのままなのに、回答者の回答を無視して自己解決というのはおかしいと感じないのですか?
退会済みユーザー

退会済みユーザー

2017/01/08 01:29

返信ありがとうございます。 それぞれ的外れではないですが、単体での回答としては理解できませんでした。 そのため、両者の回答を確認して理解出来ましたので、どちらにベストアンサーをするかに決めかねて自己解決としました。 自己解決という選択が回答者の回答を無視しているように見えたのが原因らしいので、その点では誤解を与え不快な思いを与えた閲覧者には申し訳ないと思っています。 (閲覧者に謝るのも変な感覚だなぁ)
s8_chu

2017/01/08 21:16

郷に入っては郷に従えというものです。知恵袋から来た方は不思議に感じることもあるかもしれませんが、teratailではこれが常識として扱われています。また、teratailでは質問文を書くとき、Markdownというものを使って質問文を綺麗に書くことができます。ソースコードをMarkdownを使わずにベタで書いてしまうと、「見辛いしやる気がそがれる」という回答者さんも少なくありませんので、質問文を書くときにMarkdownを使うことは重要です。一度、質問をするときのヒント(https://teratail.com/help/question-tips)を読んでみると良いかもしれません。質問をするときどのように質問すればいいのかが書いてあります。
退会済みユーザー

退会済みユーザー

2017/01/09 02:37

チュートリアル見るの面倒なんですよね。 ゆとりですみません。 回答が得られなかった時に参考にします。 ご指導ありがとうございました。
退会済みユーザー

退会済みユーザー

2017/01/09 04:27

適度に読まないとやってけんぞ
swordone

2017/01/09 05:21 編集

ゆとりどうこうと関係なく、人としての常識がいくらか欠けてる とくにわざわざ()内のことを書くあたり
退会済みユーザー

退会済みユーザー

2017/01/09 05:09

少し読みました。 回答放置されてないから、それなりに常識はあると思いますが、確かに欠けているかもしれませんね。 teratailでは人格否定するのが常識なのですかね。 それは被害妄想ですかね?
退会済みユーザー

退会済みユーザー

2017/01/09 05:31

わざわざ遠回しに言う当たりがやさしいですね。。 玉石混合の業界なので、彼は社会人になっても許してあげてください〜
swordone

2017/01/09 05:33

×玉石混合 ○玉石混交(ぎょくせきこんこう)
退会済みユーザー

退会済みユーザー

2017/01/09 05:42

彼は社会人だよ
退会済みユーザー

退会済みユーザー

2017/01/09 05:46

面倒見がいいですよね。 周りの人達。 (この業界も見捨てたもんじゃないなぁ)
退会済みユーザー

退会済みユーザー

2017/01/09 05:51

>×玉石混合 伝わればいい(震え声)
GrassfieldK

2017/01/10 06:38

質問者さんは一度自分を見つめ直したほうがいいのではないでしょうか? ここで言い合って論破するのは容易いですが、teratailはそういう場所ではありませんし…もう少し成長したらまた利用してみては?
退会済みユーザー

退会済みユーザー

2017/01/10 12:54

???
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問