参照に関連した出題:2問目(SJC-P対策無料問題集)

Java認定資格(SJC-P/310-035)を一発合格したい!
このサイトは、そんなあなたを本気で応援します!!
SJC-P(310-035)対策のメルマガ問題集も好評発刊中。
ぜひあなたの受験に役立ててください。
メールマガジンの購読はもちろん無料です!

登録はこちらから→SJC-P対策メルマガ問題集
TOP    >>    SJC-P対策Java用語集    >>    参照に関連した出題:2問目

参照に関連した出題:2問目

参照の問題2

以下のようなコードがあります(開始から終了までの部分)。


//開始
class Test{
   public static void main( String argv[ ] ){
      Card c1 = new Card();
      c1.deposit = 1000;
      Bank.useCard( c1 );
      System.out.println( "c1.deposit == " + c1.deposit );
   }
}

class Card{
   int deposit;
}

class Bank{
   public static void useCard( Card c ){ c.deposit -= 500; }
}
//終了


a.  c1.deposit == 0  と出力される。

b.  c1.deposit == 500  と出力される。

c.  c1.deposit == 1000  と出力される。

f.  コンパイルエラーとなる。

g.  実行時エラーとなる。

h.  いずれの選択肢にも該当しない。

前の問題     解答・解説     次の問題


















































参照の問題2(解答)

b.  c1.deposit == 500  と出力される。

参照の問題2(解説)

今回は参照についての問題です。
参照についてはSJC-P対策Java用語集でも説明しているので参考にして下さいね。
SJC-P対策Java用語集:参照

さて、今回のポイントは次のところです。

   public static void useCard( Card c ){
      c.deposit -= 500;
   }

useCard メソッドは参照変数を引数として受け取っていますね。
これは特に難しく考える必要はありません。
このメソッドに引数として渡される参照変数は c にコピーされてメソッド内で 利用されるということです。

例えば

      Bank.useCard( c1 );

とメソッドを呼び出した場合、c1 という参照変数に格納された参照が c にコピー されメソッド内で利用されるということです。
そのため、c と c1 は同じインスタンスを指し示すことになります。

このように、参照変数が代入やメソッドの引数として渡される場合、インス タンスそのものがコピーされるのではなく、参照がコピーして渡されます。
コピーされた参照は同じインスタンスを指し示すことになるので、いずれの参照変数から も同じインスタンスにアクセスすることになるのです。

それでは処理の流れを見てみましょう。

まずはインスタンスの生成からです。

      Card c1 = new Card();

生成したインスタンスのフィールド deposit に値を代入しています。

      c1.deposit = 1000;

続いて c1 を引数としてクラス Bank のメソッド useCard( Card c ) を呼び出しています。
これにより、 c1 に格納されている変数がローカル変数である c にコピーされます。

      Bank.useCard( c1 );public static void useCard( Card c ){
      c.deposit -= 500;
   }

その後、メソッド内で参照変数 c を通じてインスタンスが操作されています。

      Bank.useCard( c1 );

          ↓

   public static void useCard( Card c ){
      c.deposit -= 500;
   }

メソッドを抜けるとローカル変数である c は破棄されます。

最後に c1 を通じて deposit の内容を出力しています。

      System.out.println( "c1.deposit == " + c1.deposit );

このため実行結果は

>javac Test.java

>java Test
c1.deposit == 500

となり、解答は b になります。

関連ページ:SJC-P対策Java用語集・参照



前の問題     この問題     次の問題

SJC-P対策問題集

Java認定試験( SJC-P/310-035 )対策のメルマガ問題集も好評発刊中! もちろん無料です。
またバックナンバーも見やすくしてオンライン問題集として随時アップしていきます。
受験しない人でも Java の基礎知識を学習するのに最適です。

SJC-P対策参考書

現在、Java認定試験(SJC-P/310-035)対策の参考書は本当にたくさん出版されてます。
ここでは、その中から厳選した本当に役立つ参考書を紹介します。
無駄な出費を抑えるためにも、ぜひ参考にして下さい。

SJC-P対策Java用語集

Java認定試験( SJC-P/310-035 )合格のために必要な Java の用語を集めました。
試験対策にはもちろん、試験以外で Java を学習する際にもご活用下さい。

更新履歴

このサイトの最新情報はここで確認できます。
また、今までこのサイトがどのような軌跡を辿ってきたのかも知ることができます。

Javaを始める人へ

これからJavaを始めようとしているあなたへ。
Javaの勉強を始めるにはどうしたら良いのかを説明しています。
また、初心者に役立つ情報を提供していきます。

Java認定資格の概要

Java認定資格にはどのようなものがあるのか。
資格取得のためにはどのような知識が必要なのか。
その他、資格を取得することのメリットなど、Java認定資格の概要を説明します。

LINK

Javaの勉強に役立つリンク。
その他のプログラミングに関するリンク。
ソフトウェアに関するリンクなど、管理人の主観で集めたリンク集です。
相互リンクも常時募集中!
詳細は以下のページで確認して下さい。

このサイトについて

このサイト「1発合格★Java認定試験!」についての説明です。
サイトで掲載しているソースコードや問題や免責事項などについて説明しています。
初めての人は一度のぞいてみて下さい。

ちょっとひと息

仕事や試験勉強に疲れたら、ここでちょっと一息つきませんか。
一生懸命に打ち込むのも良いけど、たまには何も考えずにゆっくり休むのも良いものです。
たまにはのんびり脳みそをリフレッシュしましょう。

Copyright (C) sjc-p.obx21.com. All Rights Reserved.
このサイトはどのページにでも直接リンクして頂いて結構です。リンク大歓迎!
このページのトップページのURLはhttp://sjc-p.obx21.com/です。

Java関連情報
Spring / JSF(JavaServer Faces) / Hibernate / Jbuilder / TOMCAT入門 / NetBeans / JUnit / Struts
Strutsリファレンス / ANT / TOMCAT / JavaでWebサービス / JDBC / JBoss / J2EE / iアプリ
EJB / アプレット / JavaとXML / JMF(Java Media Framework) / Java3D / Jakarta Commons / JNI / OracleとJava
EclipseでJava入門 / Java RMI, CORBA / JSP/サーブレット入門・初心者向け / Javaネットワークプログラミング / WebLogic