SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine Day 2024 Winter

2024年2月1日(木)12:00~17:40

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

その他のスペック一覧

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

採用管理システム<br>主要製品スペック一覧 2023

採用管理システム
主要製品スペック一覧 2023

みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース | 第1回

【認定Java Silver】値コピーと参照情報のコピーを習得する


  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena

模擬問題に挑戦!(続き)

問題3

以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?

■Sample6.java
import java.util.ArrayList;
class Foo {
  int num = 10;
}
public class Sample6 {
  public static void main(String[] args) {
    Foo obj = new Foo();
    ArrayList<Foo> list = new ArrayList<Foo>();
    list.add(obj);
    obj.num = 100;
    System.out.println(list.get(0).num);
  }
}
  • A. 「10」が出力される
  • B. 「100」が出力される
  • C. コンパイルエラーとなる
  • D. 実行時エラーとなる

解答・解説

すこし迷いますね。これも参照情報のコピーを問う問題です。8行目でArrayListオブジェクトを生成し、9行目でFooオブジェクトを格納していますが、これもArrayListオブジェクト内には参照情報がコピーされています。したがって、10行目でFooオブジェクトのnum変数に100を代入していますが、11行目でArrayListオブジェクト内で管理しているFooオブジェクトのnum変数にアクセスすると「100」が取得できます。

〔正解:B

問題4

以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?

■Sample7.java
public class Sample7 {
  static int num = 10;
  public static void main(String[] args) {
    method1(num);
    System.out.println("mainメソッド側:" + num);
  }
  public static void method1(int num) {
    num += 10;
    System.out.println("method1メソッド側:" + num);
  }
}
  • A. 以下のように実行結果が表示される
    method1メソッド側:20
    mainメソッド側:10
  • B. 以下のように実行結果が表示される
    method1メソッド側:20
    mainメソッド側:20
  • C. コンパイルエラーとなる
  • D. 実行時エラーとなる

解答・解説

2行目でメンバ変数としてnum変数を宣言しているので、クラス内全体で有効な変数です。したがって、4行目のmethod1()メソッドの引数であるnumは、2行目の変数を使用しています。しかし、method1()メソッド内では7行目で引数としてnum変数が宣言されています。したがって、8行目のnum変数は、7行目の変数を使用するため、2行目のnum変数に加算した結果の「20」が代入されることはありません。

〔正解:A

あともう一言

問題4で使用した、Sample7クラスの2行目にあるnum変数は、static変数です。もし、「int num =10;」のように、インスタンス変数として宣言されているとどうなると思いますか?

答えは「コンパイルエラー」です。 理由は、staticなメソッドであるmain()から、非staticであるインスタンス変数には、直接アクセスすることができないためです。

次回は、このstatic修飾子について解説します。

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース連載記事一覧

もっと読む

この記事の著者

山本道子(ヤマモト ミチコ)

2004年Sun Microsystems社を退職後、有限会社Rayを設立し、システム開発、インストラクタ、執筆業などを手がける。著書に『オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8』『同Silver SE 8』『同Gold SE 8』のほか、『SUN教科書 Webコンポーネントディベロッパ(SJC-WC)』、『携帯OS教科書 Androidアプリケーション技術者ベーシック』、『Linux教科書 LPICレベル1 スピードマスター問題集』(共著)、監訳書に『SUN教科書 Javaプログラマ(SJC-P)5.0・6.0 両対応』(いずれも翔泳社刊)などがある。月刊誌『日経Linux』(日経BP社刊)でLPIC対策記事を連載。日々の楽しみは晩酌、好きな言葉は表面張力。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/8 2016/06/07 20:00

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年2月1日(木)12:00~17:40

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング