こんにちは!しーま(@s59shima)です。
いつもブログをご覧いただきありがとうございます。
この記事では、こんな悩みや疑問のある方に向けて記事を書きました。

Javaの資格【Silver】を受験しようか迷っているんだけど、どんな問題が出題されるの!?勉強時間や勉強方法は!?
Silverの受験対策が知りたい方、合格するために必要なポイントを知りたい方 におすすめです。
Silverの試験目的・難易度について
オラクル公式サイトよりSilver試験の目的・難易度について確認していきましょう。
Silverの試験目的
日常的なプログラミング・スキルだけでなく、さまざまなプロジェクトで発生する状況への対応能力も評価することを目的としています。
https://education.oracle.com/ja/products/trackp_816

基本的なJavaプログラミングスキルに加え、あらゆる問題に対して解決する能力も必要となっています。
Silverの難易度
Javaアプリケーション開発に必要とされる基本的なプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向け資格です。
https://education.oracle.com/ja/products/trackp_816

Silverの資格を取得することで、Java開発者として作業をこなせるという証明にもなる!
Silverは、開発現場で戦力となるスキルを目的としているため、 Bronzeに比べると難易度がより高くなった印象もあります。
Silverの試験問題をチェック

オラクル公式サイト(https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html)より、Silver(OCJ-P)の試験問題について確認しました。
12の分野に分かれ、オブジェクト指向プログラミングの基礎を問われる内容になっています。
- Javaテクノロジと開発環境についての理解
- Javaの基本データ型と文字列の操作
- 配列の操作
- メソッドの作成と使用
- 継承による実装の再利用
- 例外処理
- 簡単なJavaプログラムの作成
- 演算子と制御構造
- クラスの宣言とインスタンスの使用
- カプセル化の適用
- インタフェースによる抽象化
- モジュール・システム
各分野のポイントについて紹介します。
Javaテクノロジと開発環境についての理解
以下2つのポイントを押さえましょう!
- Javaテクノロジと開発環境
- Java言語の主要機能
JVM / JRE / JDK の役割
Javaを始める第1歩として、JVM / JRE / JDKがあります。こちらの役割・違いについて理解する必要があります。

JVM | Javaプログラムを実行するための仮想マシン |
JRE | Javaアプリを実行する場合に必要なもの。 |
JDK | Javaでプログラミングする場合に必要なもの。 |
Javaの主要IDE
Javaの開発開発では、IDEの活用は必須です。主要なIDEについて知っておきましょう!
Eclipse | 無料で使用できる高機能なIDE。プラグインによる機能拡張が可能。 |
Net Beans | 無料で使用できる高機能なIDE。最新版では日本語化に対応していない場合もある。 |
IntelliJ IDEA | 無料・有料で使用できる高機能なIDE。Java以外にも他のプログラム言語に対応している。 |
下記の記事で詳しく解説していますので、合わせてどうぞ!
Javaの基本データ型と文字列の操作
以下5つのポイントを押さえましょう!
- データ型の種類・扱い方
- 変数の宣言および初期化
- 変数のスコープ(有効範囲)
- 文字列の作成と操作
- StringBuilderクラスのメソッドを使用した文字列の操作
データ型の種類・扱い方
Javaにはプリミティブ型と参照型の2つのデータ型があります。この2つの違いは、インスタンスへの参照を行うかどうかです。
プリミティブ型は「真偽値・文字・数値」を扱い、参照型は「オブジェクト型・列挙型・配列型」などがあります。
プリミティブ型の種類
種類 | データ型 | 値 |
---|---|---|
真偽値 | boolean | true / false |
文字 | char | 16ビットUnicode |
数値 | byte | -128~127 |
数値 | short | -32768~32767 |
数値 | int | -2147483648~-2147483647 |
数値 | long | -9223372036854775808~-9223372036854775807 |
数値 | float | 浮動小数点数 |
数値 | double | 浮動小数点数 |
下記の記事で詳しく解説していますので、合わせてどうぞ!
変数の宣言および初期化
下記の条件を満たすことが出来れば、変数名は自由に決められます。
- 記号はアンダースコア(_)と通貨記号($)の2つのみ可能
- 数字は2文字目以降から使用可能
- 予約語は使用不可
予約語とは、Javaプログラムに必要な用語のことです。予約語には以下のようなキーワードがあります。
abstract, break, case, do, else, finally, for など
配列の操作
以下2つのポイントを押さえましょう!
- 1次元配列の宣言、インスタンス化、初期化および使用
- 2次元配列の宣言、インスタンス化、初期化および使用
メソッドの作成と使用
以下3つのポイントを押さえましょう!
- 引数や戻り値を持つメソッドとコンストラクタの作成
- メソッドのオーバーロードとメソッド呼び出し
- static変数とstaticメソッド
継承による実装の再利用
以下5つのポイントを押さえましょう!
- サブクラスとスーパークラスの作成と使用
- 抽象クラスの作成と継承
- メソッドのオーバーライドによるポリモーフィズム
- 参照型のキャストとポリモーフィックなメソッド呼び出し
- オーバーロード、オーバーライドおよび隠蔽の区別
例外処理
以下3つのポイントを押さえましょう!
- 例外処理の仕組みとチェック例外、非チェック例外、エラーの違い
- try-catch文による例外処理
- 例外をスローするメソッドの作成と呼び出し
簡単なJavaプログラムの作成
以下3つのポイントを押さえましょう!
- mainメソッドを持つ実行可能なJavaプログラムの作成
- コマンドラインでのJavaプログラムのコンパイルと実行
- パッケージの宣言とインポート
コマンドラインでのJavaプログラムのコンパイルと実行
コンパイルと実行コマンドについて
- コンパイルするときは【javac】コマンドを使用。拡張子(.java)を含んだファイル名を記述。
- 実行するときは【java】コマンドを使用。拡張子(.class)を含まないクラスファイル名を記述。
例)Sampleというクラスをコンパイル・実行するまでをコマンドでやってみましょう!
1.【Dドライブ直下にworkフォルダを作成し、ここにSample.javaを作成】

public class Sample{
public static void main(String[] args){
System.out.print("programming");
}
}
2.【Javacコマンドでクラスファイルを作成】(※ -dオプションを付与し、クラスファイルの出力先を指定。)
D:\work>javac -d class Sample.java
3.指定したディレクトリにクラスファイルが出力されることを確認

4.【javaコマンドでクラスファイルを実行】(※-cpオプションを付与し、クラスパスを指定)
D:\work>java -cp class Sample
パッケージの宣言とインポート
- 名前空間を提供
- アクセス制御
- クラスの分類
パッケージ宣言の記述位置
package jp.co.sample; // <- 必ず先頭行に記述する
import java.util.*;
public class Main {
}
演算子と制御構造
以下3つのポイントを押さえましょう!
- 演算子の使用 (演算子の優先順位を変更するための括弧の使用を含む)
- 分岐文( if、if/else、switch)の使用
- 繰り返し文(do/while、while、for文および拡張for文)の使用とネストした繰り返し文およびbreak、continuneの使用
クラスの宣言とインスタンスの使用
以下3つのポイントを押さえましょう!
- 参照型の宣言とインスタンス化、およびオブジェクトのライフサイクル(作成、再割り当てによる参照解除、ガベージ・コレクションなど)
- Javaクラスの定義
- オブジェクトのフィールドへの読み取りと書き込み
カプセル化の適用
以下2つのポイントを押さえましょう!
- アクセス修飾子の使用
- クラスに対するカプセル化の適用
インタフェースによる抽象化
以下4つのポイントを押さえましょう!
- インタフェースの作成と実装
- 具象クラスの継承とインタフェース、抽象クラスの継承
- ListインタフェースとArrayListクラスの使用
- ラムダ式の理解
1.インタフェースの作成と実装
Java SE 8からインタフェースに実装を記述できるようになりました。
それが、デフォルトメソッド です!
下記は、デフォルトメソッドのサンプルコードになります。
public interface Sample {
default void method() {
System.out.println("Sample method");
}
}
デフォルトメソッドは、オーバーライドすることも可能です。
■インタフェースを実装した場合
public class Main implements Sample {
@Override
public void method() {
System.out.println("Main method");
}
}
■インタフェースを継承した場合
public interface Sample2 extends Sample {
@Override
default void method() {
System.out.println("Main method");
}
}
モジュール・システム
以下3つのポイントを押さえましょう!
- モジュール型JDK
- モジュールの宣言とモジュール間のアクセス
- モジュール型プロジェクトのコンパイルと実行
モジュールシステム(Java SE 9~)の誕生により、パッケージ単位の情報隠蔽が可能になりました。
モジュールシステムを使用するには、module-info.javaというファイルが必要です。
module-info.javaには以下の点を記述できます。
- どのパッケージを公開するか(exports)
- どのモジュールを使用するか(requires)
使用例はこちら(「com.pack.a」パッケージを公開し、「module2」モジュールを利用する場合)
// module-info.java
module module1 {
exports com.pack.a
requires module2
}
Silverの勉強時間について

Silverに合格した方の体験談を見てみると、早い方で2週間程度、平均的に2・3ヶ月の勉強時間で取得されている方がほとんどでした。
ただ、体験談を確認して一番重要だと感じたことは「勉強時間」よりも「いかに効率よく学習ができる」かという事。
出題範囲は決まっていますし、この後に紹介する問題集でアウトプットを繰り返していけば最短で資格取得できる可能性はアリだと思います。
Silverの過去問について
IPAが運営する情報処理技術者試験とは異なり、OCJ-P(Silver)の過去の試験問題は公表されません。よって、過去問を入手するのは難しいです。
そのため、以下の問題集(黒本)などを活用し、ある程度の実践形式に備える必要があると予想されます。

1回に数万円かかる受験料を無駄にしないよう、万全な対策で望みましょう!
合格した方の大半はこちらの問題集(黒本)を使用して対策を行っていることが分かりました!

かなり前(当時はSJC-Pという名称)になりますが、、、私自身も上記の問題集を受験対策として、無事に合格することができました!

Silverの申し込み(試験日)について
ピアソンVUEの公式サイトより全国の試験会場が確認できます。最寄りの場所で空いている日を確認してみましょう。

まとめ
今回は、Javaの資格【OCJ-P Silver】の出題問題について徹底解剖しました。
最後まで読んでいただきありがとうございました。
最後に出題内容をまとめると以下の通りです。
- Javaテクノロジと開発環境についての理解
- Javaの基本データ型と文字列の操作
- 配列の操作
- メソッドの作成と使用
- 継承による実装の再利用
- 例外処理
- 簡単なJavaプログラムの作成
- 演算子と制御構造
- クラスの宣言とインスタンスの使用
- カプセル化の適用
- インタフェースによる抽象化
- モジュール・システム