プログラミング言語を整える
初級Java Bronze を整える。
= Java の入門資格 Bronze の試験範囲を、章ごとの練習問題で確かめる
Java Bronze が初めての方は、先に そもそも Java Bronze とは・どんな場面で役立つか をどうぞ。
もう一つ上の資格は Java Silver を整える にあります。
試験の概要
- 試験名
- Java SE Bronze
- 試験番号
- 1Z0-818-JPN
- 資格
- Oracle Certified Java Programmer, Bronze SE
- 形式
- 選択問題
- 時間
- 65分
- 問題数
- 60問
- 合格ライン
- 60%
- 位置づけ
- 言語未経験者向けの入門資格。特定のバージョンに依存せず、配信は続く
出典:Oracle の公式ページ(2026年11月3日時点)。試験の条件や日程は変わることがあるので、申し込む前に公式ページで最新の情報を確かめてください。
いつ・どれを受ける?
受験予定日から、受けられる試験を引く
Java の日本語試験は、バージョンごとに配信の終わる日が決まっています。受験予定日を入れると、その日に受けられるものが出ます。
配信が終わっても、取得済みの資格がすぐに失効するわけではありません。
配信が終わる日の一覧(日付を入れなくても見られます)
- Bronze(1Z0-818-JPN):配信は続きます。
- Silver SE 11(1Z0-815-JPN):2026年11月30日に配信終了。
- Silver SE 17(1Z0-825-JPN):2027年2月28日に配信終了。
- Silver SE 25 対応:2026年11月下旬から配信予定。試験番号と範囲は未発表です。
Java 資格の試験の切り替わり(NOBORIBA®研修サービスのお知らせ)に、版の切り替わりの詳しい案内があります。
試験範囲マップ
7つの章ごとに、覚えることと練習問題への入口を並べました。範囲の言葉は Oracle の試験内容チェックリストに沿っています。
- 1
Java言語のプログラムの流れ
- ・Javaプログラムのコンパイルと実行
- ・Javaテクノロジーの特徴
- ・Javaプラットフォーム各エディションの特徴
ここで覚えることソースを javac でコンパイルしてできた .class を java コマンドで動かす、という流れをつかみます。プログラムは main メソッドから上から順に実行され、文は必ずセミコロンで終わります。
- 2
データの宣言と使用
- ・Java のデータ型(プリミティブ型、参照型)
- ・変数や定数の宣言と初期化、値の有効範囲
- ・配列(一次元配列)の宣言と作成、使用
- ・コマンドライン引数の利用
ここで覚えることint や char などのプリミティブ型と、String や配列などの参照型の違いが中心です。整数どうしの割り算は小数にならないこと、配列の添字は 0 から始まることを押さえます。
- 3
演算子と分岐文
- ・各種演算子の使用
- ・演算子の優先順位
- ・if, if/else文の使用
- ・switch文の使用
ここで覚えること++ の前置と後置、+ による文字列の連結、&& や || の短絡評価が定番の引っかけです。switch は break を書かないと次の case へ続けて実行されます。
- 4
ループ文
- ・while文の使用
- ・for文および拡張for文の使用
- ・do-while文の作成と使用
- ・ループのネスティング
ここで覚えることbreak はループを抜け、continue は今回の周回だけを飛ばします。do-while は条件より先に必ず1回実行されます。拡張 for の変数は要素の写しです。
- 5
オブジェクト指向の概念
- ・具象クラス、抽象クラス、インタフェース
- ・データ隠蔽とカプセル化
- ・ポリモフィズム
ここで覚えること抽象クラスは new できず、インタフェースのメソッドは実装側で public にします。フィールドを private にして外から直接触らせないのがカプセル化で、実際に動くメソッドは変数の型でなく実体のクラスで決まります。
- 6
クラスの定義とオブジェクトの使用
- ・クラスの定義とオブジェクトの生成、使用
- ・メソッドのオーバーロード
- ・コンストラクタの定義
- ・アクセス修飾子 (public, private) の適用とカプセル化
- ・static 変数および static メソッド
ここで覚えることstatic は全オブジェクトで共有される1つの値、インスタンス変数はオブジェクトごとの値です。オーバーロードは引数の型で選ばれ、メソッドに渡した int は値のコピーなので呼び出し元は変わりません。
- 7
継承とポリモフィズム
- ・サブクラスの定義と使用
- ・メソッドのオーバーライド
- ・抽象クラスやインタフェースの定義と実装
- ・ポリモフィズムを使用するコードの作成
- ・参照型の型変換
- ・パッケージ宣言とインポート
ここで覚えることサブクラスのコンストラクタは、まず親のコンストラクタを呼びます。親の型の変数からは親にあるメソッドしか呼べず、実体と違う型へのキャストは実行時に ClassCastException になります。
章ごとの練習問題(出力当て)
短い Java のコードを読んで、実行すると何が表示されるかを選びます(全30問)。選ぶと正解と理由が出ます。答えはどこにも送られず、記録もしません。問題はすべてオリジナルで、試験の実際の問題ではありません。
出力は OpenJDK 17 で実際にコンパイル・実行して、答えと一字一句同じになることを確かめたものです(OpenJDK 17.0.21)。「コンパイルエラー」「実行時に例外」が答えの問題も、本物の javac と java で確かめています。
第1章 Java言語のプログラムの流れ
0/4 問正解 (答えた問題:0/4)
問1
public class Main {
public static void main(String[] args) {
System.out.print("A");
System.out.println("B");
System.out.print("C");
}
}
実行すると何が表示される?
print は改行しない、println は出力のあとに改行します。A と B は同じ行に並び、B のあとで改行され、C は次の行に出ます。
問2
public class Main {
public static void main(String[] args) {
// System.out.println("A");
/* System.out.println("B");
System.out.println("C"); */
System.out.println("D");
}
}
実行すると何が表示される?
// は行末まで、/* から */ までは複数行にわたってコメントになり、実行されません。実行されるのは最後の println だけです。
問3
public class Main {
public static void main(String[] args) {
String msg = 'Hello';
System.out.println(msg);
}
}
実行すると何が表示される?
シングルクォート('')で囲めるのは1文字だけです。文字列はダブルクォート("")で囲みます。コンパイルの段階で止まるので、実行はされません。
問4
public class Main {
static void first() {
System.out.println("first");
}
static void second() {
System.out.println("second");
first();
}
public static void main(String[] args) {
System.out.println("start");
second();
System.out.println("end");
}
}
実行すると何が表示される?
実行は main の先頭から順に進みます。second() を呼ぶと、second の中の処理(second を表示してから first() を呼ぶ)がすべて終わってから、main の次の行へ戻ります。
第2章 データの宣言と使用
0/5 問正解 (答えた問題:0/5)
問5
public class Main {
public static void main(String[] args) {
int a = 7;
int b = 2;
double d = a / b;
System.out.println(d);
}
}
実行すると何が表示される?
a / b は int どうしの割り算なので、この時点で 3 になり、小数部分は捨てられます。それを double に入れると 3.0 です。左辺が double でも、右辺の計算が先に整数で行われます。
問6
public class Main {
public static void main(String[] args) {
int[] scores = new int[3];
scores[0] = 80;
scores[1] = 90;
scores[2] = 70;
int sum = 0;
for (int i = 0; i <= scores.length; i++) {
sum += scores[i];
}
System.out.println(sum);
}
}
実行すると何が表示される?
要素数 3 の配列の添字は 0 から 2 までです。i <= scores.length だと i が 3 になる周回があり、存在しない scores[3] を読もうとして実行時に例外になります。正しくは i < scores.length です。
問7
public class Main {
public static void main(String[] args) {
int[] a = new int[3];
boolean[] f = new boolean[2];
String[] s = new String[1];
System.out.println(args.length + " " + a[2] + " " + f[0] + " " + s[0]);
}
}
条件:コマンドライン引数を付けずに java Main で実行したとき
実行すると何が表示される?
引数を付けなければ args.length は 0 です。配列は作った時点で、int は 0、boolean は false、参照型(String)は null に初期化されます。s[0] を表示するだけなら null と出るだけで、例外にはなりません。
問8
public class Main {
public static void main(String[] args) {
char c = 'A';
System.out.println(c + 1);
System.out.println((char) (c + 1));
c++;
System.out.println(c);
}
}
実行すると何が表示される?
char に int を足すと結果は int になり、'A' の文字コード 65 に 1 を足した 66 が出ます。(char) を付けると文字の B に戻ります。c++ は char のまま 1 増えるので、c は B です。
問9
public class Main {
public static void main(String[] args) {
String a = "java";
String b = "java";
String c = new String("java");
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a.equals(c));
}
}
実行すると何が表示される?
== は参照(同じオブジェクトか)を比べます。リテラル同士は同じ文字列として使い回されるので a == b は true ですが、new String は別のオブジェクトを作るので a == c は false です。中身を比べるのは equals です。
第3章 演算子と分岐文
0/4 問正解 (答えた問題:0/4)
問10
public class Main {
public static void main(String[] args) {
int i = 5;
int j = i++ + ++i;
System.out.println(i + " " + j);
}
}
実行すると何が表示される?
i++ は「今の値 5 を使ってから 1 増やす」ので式の値は 5、i は 6 になります。続く ++i は「先に 1 増やす」ので i が 7 になり、式の値も 7。j は 5 + 7 = 12、i は 7 です。
問11
public class Main {
public static void main(String[] args) {
System.out.println(1 + 2 + "3" + 4 + 5);
}
}
実行すると何が表示される?
+ は左から順に計算します。最初の 1 + 2 は数の足し算で 3。そのあと "3" と出会った時点から文字列の連結になり、"33"、"334"、"3345" と続きます。
問12
public class Main {
public static void main(String[] args) {
int n = 0;
boolean r = (n == 0) || (++n > 0);
boolean s = (n != 0) && (10 / n > 1);
System.out.println(r + " " + s + " " + n);
}
}
実行すると何が表示される?
|| は左が true なら右を評価しないので ++n は実行されず、n は 0 のままです。&& は左が false なら右を評価しないので、10 / n(0 での割り算)も実行されません。
問13
public class Main {
public static void main(String[] args) {
int x = 2;
switch (x) {
case 1:
System.out.println("one");
case 2:
System.out.println("two");
case 3:
System.out.println("three");
break;
default:
System.out.println("other");
}
}
}
実行すると何が表示される?
x が 2 なので case 2 から実行が始まります。break が無いと次の case へそのまま続くので three も表示され、case 3 の break でようやく抜けます。default までは届きません。
第4章 ループ文
0/5 問正解 (答えた問題:0/5)
問14
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 6; i++) {
if (i == 4) break;
if (i % 2 == 0) continue;
System.out.print(i);
}
}
}
実行すると何が表示される?
i が 0 と 2 のときは偶数なので continue で表示を飛ばします。i が 1 と 3 のときに表示され、i が 4 になると break でループごと終わります。
問15
public class Main {
public static void main(String[] args) {
int n = 10;
do {
System.out.println("n=" + n);
n++;
} while (n < 5);
System.out.println("done");
}
}
実行すると何が表示される?
do-while は、条件を調べる前に本体を必ず1回実行します。1回目で n=10 が出て、n++ のあと n < 5 は偽なのでそこで終わります。while ならこの本体は一度も動きません。
問16
public class Main {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
実行すると何が表示される?
内側のループの回数は外側の i で決まります。i が 1 のとき * を1個、2 のとき2個、3 のとき3個出し、外側の1周ごとに改行します。
問17
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
for (int v : a) {
v = v * 2;
}
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
}
System.out.println(sum);
}
}
実行すると何が表示される?
拡張 for の v は、要素の値のコピーです。v を書き換えても配列 a の中身は変わらないので、合計は元のままの 6 です。配列を書き換えたいときは添字を使います。
問18
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.print(i);
}
System.out.println(i);
}
}
実行すると何が表示される?
for の初期化部で宣言した i は、その for 文の中でしか使えません。ループの外で i を使っているので、変数が見つからないとしてコンパイルエラーになります。
第5章 オブジェクト指向の概念
0/4 問正解 (答えた問題:0/4)
問19
abstract class Shape {
abstract double area();
}
public class Main {
public static void main(String[] args) {
Shape s = new Shape();
System.out.println(s.area());
}
}
実行すると何が表示される?
抽象クラスは、中身が未完成のメソッドを持てる代わりに、new でオブジェクトを作れません。使うときは、area() を実装したサブクラスを作ってそれを new します。
問20
class Account {
private int balance = 100;
}
public class Main {
public static void main(String[] args) {
Account a = new Account();
a.balance = 200;
System.out.println(a.balance);
}
}
実行すると何が表示される?
private のフィールドは、同じクラスの中からしか使えません。外から直接読み書きさせず、getBalance などのメソッドを通すのがカプセル化(データ隠蔽)です。
問21
class Animal {
String sound() { return "..."; }
}
class Dog extends Animal {
String sound() { return "Woof"; }
}
class Cat extends Animal {
String sound() { return "Meow"; }
}
public class Main {
public static void main(String[] args) {
Animal[] zoo = { new Dog(), new Animal(), new Cat() };
for (Animal a : zoo) {
System.out.println(a.sound());
}
}
}
実行すると何が表示される?
変数の型は Animal でも、どのメソッドが動くかは中に入っている実体のクラスで決まります。これがポリモフィズムです。Dog には Woof、Animal には ...、Cat には Meow が使われます。
問22
interface Payable {
int pay();
}
class Salary implements Payable {
public int pay() { return 300; }
}
class Bonus implements Payable {
public int pay() { return 50; }
}
public class Main {
public static void main(String[] args) {
Payable[] items = { new Salary(), new Bonus(), new Salary() };
int total = 0;
for (Payable p : items) {
total += p.pay();
}
System.out.println(total);
}
}
実行すると何が表示される?
インタフェース型の配列に、それを実装したクラスのオブジェクトを入れられます。300 + 50 + 300 で 650 です。なお、インタフェースのメソッドを実装するときは public を付けないとコンパイルエラーになります。
第6章 クラスの定義とオブジェクトの使用
0/4 問正解 (答えた問題:0/4)
問23
class Counter {
static int total = 0;
int id;
Counter() {
total++;
id = total;
}
}
public class Main {
public static void main(String[] args) {
Counter a = new Counter();
Counter b = new Counter();
Counter c = new Counter();
System.out.println(a.id + " " + c.id + " " + Counter.total);
}
}
実行すると何が表示される?
static の total は全オブジェクトで共有される1つの値なので、3回 new すると 3 になります。id はオブジェクトごとの値で、作った時点の total が入るため a は 1、c は 3 です。
問24
public class Main {
static void show(int x) { System.out.println("int"); }
static void show(long x) { System.out.println("long"); }
static void show(double x) { System.out.println("double"); }
public static void main(String[] args) {
char c = 'a';
show(c);
show(3L);
show(2.5f);
}
}
実行すると何が表示される?
オーバーロードは引数の型で選ばれます。該当する型が無いときは、より小さい型から順に広げて、最も近いものが使われます。char は int に、float は double に広がり、3L はそのまま long です。
問25
class Box {
Box() {
this(5);
System.out.println("A");
}
Box(int size) {
System.out.println("B" + size);
}
}
public class Main {
public static void main(String[] args) {
new Box();
}
}
実行すると何が表示される?
this(5) は同じクラスの別のコンストラクタを呼びます。呼ばれた Box(int) の処理(B5 を表示)が終わってから、元のコンストラクタの続き(A を表示)に戻ります。
問26
public class Main {
static void addOne(int n, int[] arr) {
n = n + 1;
arr[0] = arr[0] + 1;
}
public static void main(String[] args) {
int x = 10;
int[] y = {10};
addOne(x, y);
System.out.println(x + " " + y[0]);
}
}
実行すると何が表示される?
Java の引数は、値のコピーが渡されます。int の n を変えても呼び出し元の x は変わりません。一方、配列では「配列の場所」のコピーが渡るので、arr[0] の書き換えは呼び出し元の y から見えます。
第7章 継承とポリモフィズム
0/4 問正解 (答えた問題:0/4)
問27
class Parent {
Parent() { System.out.println("P"); }
}
class Child extends Parent {
Child() { System.out.println("C"); }
}
public class Main {
public static void main(String[] args) {
new Child();
}
}
実行すると何が表示される?
サブクラスのコンストラクタの先頭では、親のコンストラクタ super() が(書かなくても)自動で呼ばれます。そのため親の P が先に、子の C があとに出ます。
問28
class Animal {}
class Dog extends Animal {}
public class Main {
public static void main(String[] args) {
Animal a = new Animal();
Dog d = (Dog) a;
System.out.println("ok");
}
}
実行すると何が表示される?
Animal から Dog へのキャストは、型の関係としてはコンパイルが通ります。しかし中身の実体は Animal で Dog ではないので、実行時に ClassCastException になります。
問29
class Animal {
void eat() { System.out.println("eat"); }
}
class Dog extends Animal {
void fetch() { System.out.println("fetch"); }
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog();
a.eat();
a.fetch();
}
}
実行すると何が表示される?
コンパイラは変数の型(Animal)だけを見て、呼べるメソッドを調べます。Animal に fetch が無いので、実体が Dog でもコンパイルエラーです。呼びたければ (Dog) a にキャストします。
問30
public class Main {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("a");
System.out.println(names.size());
}
}
実行すると何が表示される?
List と ArrayList は java.util パッケージのクラスです。import java.util.*; のような import が無いと、名前が見つからずコンパイルエラーになります。java.lang の String などは import なしで使えます。
よくある勘違い
- 7 / 2 は 3.5 になる、と思ってしまう。int どうしの割り算は小数点以下を捨てて 3 です。double の変数に入れても 3.0 で、3.5 にはなりません。
- 文字列の中身を == で比べられる、と思ってしまう。== は「同じオブジェクトか」を比べます。中身を比べるのは equals です。
- i++ と ++i は同じ、と思ってしまう。i++ は今の値を使ってから増やし、++i は増やしてから使います。1行に両方あると結果が変わります。
- switch は一致した case だけが動く、と思ってしまう。break が無いと、一致した所から下の case へそのまま続けて実行されます。
- 配列の添字は 1 から始まる、と思ってしまう。0 から始まるので、要素が3個なら最後の添字は 2 で、length は 3 です。添字に length を使うと実行時に例外です。
- 親クラスの型の変数からでも、子クラスだけのメソッドを呼べる、と思ってしまう。コンパイラは変数の型で調べるので、キャストするまでは呼べません。
- メソッドに渡した int を中で変えたら、呼び出し元も変わる、と思ってしまう。渡されるのは値のコピーなので変わりません。配列の中身は、場所のコピーが渡るので変わります。
そもそも Java Bronze とは
Java を初めて学ぶ人が、基本を身につけたことを示す入門の資格。
Java Bronzeは、Oracle が行っている Java の認定資格のうち、いちばん入門にあたるものです。Oracle の公式ページでは、言語未経験者向けの資格とされています。変数・演算子・if や for・クラスとオブジェクトといった、Java の基本の書き方と考え方が範囲です。
Silver や Gold のように Java の特定のバージョン(SE 11・SE 17 など)に結びついた試験ではなく、バージョンに依存しない試験です。そのため、Silver の試験が版の切り替わりで入れ替わっても、Bronze の配信は続きます。
Bronze・Silver・Gold の位置づけ
-
Bronze
入門。基本の文法とオブジェクト指向の入り口。このページが対象です。
-
Silver
Bronze の次。継承・インタフェース・例外処理などを、Java のバージョンに沿って問います。Java Silver を整えるへ。
-
Gold
Silver の上の資格です。このサイトではまだ扱っていません。
どんな場面で役立つか
-
新人研修のゴールとして
Java を使う会社の新人研修で、基本が身についたかを確かめる目安にできます。
-
未経験からの学び直しで
独学だと「どこまでやればよいか」が見えにくいので、試験範囲が学習の道しるべになります。
-
コードを読む力の確認に
「このコードを実行すると何が出るか」を手で追う力は、業務システムの保守でも使います。
-
Silver へ進む土台に
Bronze の範囲は、Silver の範囲の土台にもなっています。
言語そのものの紹介は Java を整える、情報処理の入口の国家資格は ITパスポートを整えるにあります。
あわせて見る
Oracle、Java は Oracle およびその関連会社の商標または登録商標です。このページは Oracle の公式のものではなく、試験の合格を保証するものでもありません。
このツールについて
Java の入門資格 Bronze の試験範囲を、章ごとの練習問題で確かめます。出力当てが中心で、答えは本物の Java で確かめたものです。
Java Bronze(1Z0-818-JPN)の試験範囲7章と、章ごとの出力当て練習問題30問。出力は本物の Java で確かめたもの。受験予定日から受けられる Java 試験も引けます。
主な機能
- 試験の基本(試験番号・形式・65分・60問・合格ライン60%)と Oracle 公式ページへのリンク
- 「いつ・どれを受ける?」早見(受験予定日から Bronze・Silver SE 11/17/25 を判定)
- 試験範囲マップ7章と、章ごとの「ここで覚えること」
- 章ごとの練習問題30問(== と equals・i++・switch の fall-through・オーバーロードなど)
- 章ごとの正答数表示(記録は保存しない)
- よくある勘違い7つ
- 出力は OpenJDK 17 で照合済み・送信ゼロ
よくある質問
Q. Java Bronze の試験はどんな形式ですか?
A. 試験番号は 1Z0-818-JPN、選択問題で、試験時間は65分、問題数は60問、合格ラインは60%です(Oracle の公式ページで2026年11月3日に確認)。条件は変わることがあるので、申し込む前に公式ページで確かめてください。
Q. Java SE 11 や 17 の試験が終わると、Bronze も受けられなくなりますか?
A. いいえ。Bronze は特定の Java のバージョンに依存しない試験で、配信は続きます。配信が終わるのは Silver・Gold の SE 11 と SE 17 の日本語試験です。ページの早見に受験予定日を入れると、その日に受けられる試験が分かります。
Q. 練習問題は実際の試験の問題ですか?
A. いいえ。Oracle は試験の内容の公開を禁じているため、試験の実際の問題は使っていません。出題範囲に沿ってこのサイトで作ったオリジナルの問題です。出力や答えは OpenJDK 17 で実際にコンパイル・実行して確かめています。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。
続けて整える
データの時点:2026年11月3日に確認(Oracle University『Java認定試験の提供予定』(2026/9/7)) 次の更新予定:2026年11月ごろ
この内容は、研修でも扱っています
totonoe.tech を運営する株式会社Koinobori は、法人向けの研修サービス「NOBORIBA®」も運営しています。 ここで手を動かした内容を、講師から教わる形の研修です。このページの道具は無料のまま、登録もいりません。