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

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

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

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

Q&A

解決済

2回答

2433閲覧

Java SilverSE8 の練習問題の不明点に関して。

T-Takebayashi

総合スコア13

Java

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

0グッド

0クリップ

投稿2018/01/05 11:54

編集2018/01/05 11:58

Java SilverSE8 の勉強をしております。
教科書の問題で分からない部分があったので質問をさせてください。

資料:オラクル認定資格教科書 Javaプログラマ Silver SE 8
練習問題5-11 (201ページ)

問:コンパイル、実行した結果として正しいものを選びなさい。

public class Test { public static void main(String[] args) { Test ojb1 = new Test(); Test ojb2 = new Test(); System.out.print(ojb1 == ojb2); ojb2 = operate(ojb1, ojb2); System.out.print(" " + (ojb1 == ojb2)); } static Test operate(Test ojb1, Test ojb2) { Test ojb3 = ojb1; ojb1 = ojb2; return ojb3; } }

答:false true

なぜfalse falseにならないのか理解が出来ません。
ちなみに12行目(ojb1 = ojb2;)をコメントアウトして実行しても同じ結果になりました。
12行目の変更は無効なのでしょうか?

どなたか詳しい方解説をして頂けると大変助かります。
宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Javaでは、引数の渡し方は参照の値渡しなので、メソッドの中で仮引数に代入しても、それは呼び出し側に影響しません。

ちなみに12行目(ojb1 = ojb2;)をコメントアウトして実行しても同じ結果になりました。

12行目の変更は無効なのでしょうか?

operate内ではojb1は書き換わっていますが、上述のようにこの変更はメソッド外に影響しません。最終的なojb2 = operate(略)での返り値の代入だけが外部に影響する変更です。

投稿2018/01/05 12:05

maisumakun

総合スコア145183

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

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

T-Takebayashi

2018/01/05 12:10

ご回答ありがとうございます。 解決致しました!
guest

0

メモリ上には、2つのTestオブジェクトが存在します。

最初の比較では、obj1とobj2は別々のオブジェクトを指していますが、obj1をobj3に代入することで、obj3もobj1のTestオブジェクトを指すことになります。

投稿2018/01/05 12:02

pngnshny

総合スコア75

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

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

T-Takebayashi

2018/01/05 12:10

迅速なご回答ありがとうございます。 obj2がobj1のTestオブジェクトを指す用にならない理由が分かりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問