Kodrill

データの宣言と使用

Java SE Bronze (1Z0-818-JPN) 試験

Java のデータ型(プリミティブ型、参照型)/変数や定数の宣言と初期化、値の有効範囲/配列(一次元配列)の宣言と作成、使用/コマンドライン引数の利用

問題数
20 問
合格ライン
60%
実行して確認済み
15 問
この分野の要点を読む7 章・約 11 分。実行して確かめたコード例と、試験でよくある引っかけをまとめています

ログインなしで試す

無料の 5 問を、1問ごとに正誤と解説を見ながら解けます。解答は保存されません。

5 問を試す

無料登録して学習を記録する

学習履歴・ダッシュボード・ブックマーク・模試モードが使えます。

★ 残り 15 問はプレミアム会員限定です

無料プランでは先頭 5 問まで解けます。プレミアムなら全問題・苦手問題の復習・広告非表示が使えます。
料金プランを見る

問題と解説を見る (無料)

登録しなくても、次の5問は問題文と解説をそのまま読めます。

データの宣言と使用の要点

内容の確認日: 2026-10-03

この分野では、Java で値を扱うための基本である「型」「変数」「配列」が問われます。どの型にどんな値が入るか、宣言や初期化の書き方が正しいか (コンパイルエラーにならないか) を見分ける問題が中心です。

出題項目は「Java のデータ型 (プリミティブ型、参照型)」「変数や定数の宣言と初期化、値の有効範囲」「配列 (一次元配列) の宣言と作成、使用」「コマンドライン引数の利用」の 4 つです。特に、リテラルの型と配列の書き方は引っかけが多いので、コードで確かめながら覚えましょう。

プリミティブ型と参照型

Java の型は、値そのものを入れるプリミティブ型と、オブジェクトへの参照を入れる参照型に分かれます。プリミティブ型は次の 8 つだけで、それ以外 (String・配列・自分で作ったクラスなど) はすべて参照型です。

・整数: byte (8 ビット)、short (16 ビット)、int (32 ビット)、long (64 ビット) ・浮動小数点数: float (32 ビット)、double (64 ビット) ・文字: char (16 ビット。Unicode の 1 文字) ・真偽値: boolean (true か false のみ)

boolean には true・false 以外の値は入りません。C 言語のように 0 や 1 を真偽値として使うことはできない点に注意してください。参照型の変数には、どのオブジェクトも指していないことを表す null を入れられますが、プリミティブ型の変数には入れられません。

char は文字ですが、中身は文字コードの数値です。そのため計算に使うと int として扱われます。

Main.java
public class Main {    public static void main(String[] args) {        char c = 'A';        System.out.println(c + 1);        System.out.println((char) (c + 1));    }}
ターミナル
java Main
66
B

リテラルの型と書き方

コードに直接書いた値 (リテラル) にも型があります。整数のリテラルは int 型、小数点のあるリテラルは double 型として扱われるのが基本です。long にしたいときは末尾に L、float にしたいときは末尾に F を付けます。

そのため、float f = 3.14; は double の値を float に入れようとしてコンパイルエラーになります。float f = 3.14F; と書く必要があります。

Main.java
public class Main {    public static void main(String[] args) {        float f = 3.14;        System.out.println(f);    }}
ターミナル
javac Main.java

コンパイルエラー (3 行目): 3.14 は double 型のリテラルで、float 型の変数にはそのまま代入できない

整数は 10 進数のほか、先頭に 0b を付けると 2 進数、0 を付けると 8 進数、0x を付けると 16 進数として書けます。桁の区切りとして数字の間に _ (アンダースコア) を入れることもできます。先頭の 0 だけで 8 進数になる点は見落としやすいので注意しましょう。

Main.java
public class Main {    public static void main(String[] args) {        System.out.println(0b101);        System.out.println(010);        System.out.println(0x1F);        System.out.println(1_000_000);    }}
ターミナル
java Main
5
8
31
1000000

_ は数字と数字の間にしか書けません。_100 (先頭)、100_ (末尾)、3._14 (小数点の隣) はいずれも誤りです。

変数・定数の宣言と初期化

メソッドの中で宣言した変数 (ローカル変数) は、値を代入する前に読み出すとコンパイルエラーになります。ローカル変数には既定値がないためです。

Main.java
public class Main {    public static void main(String[] args) {        int count;        System.out.println(count);    }}
ターミナル
javac Main.java

コンパイルエラー (4 行目): 変数 count が初期化されていない可能性がある

一方、クラスに宣言したフィールドには既定値があり、数値型は 0、boolean は false、char は '\u0000'、参照型は null で自動的に初期化されます。ローカル変数とフィールドで扱いが違うことを押さえておきましょう。

final を付けた変数は定数になり、一度値を入れたら変更できません。再代入しようとするとコンパイルエラーです。定数の名前は MAX_SIZE のように大文字とアンダースコアで書くのが慣習です。

Java SE 10 からは、ローカル変数の宣言で型の代わりに var と書けます。型は右辺の値から決まり (var value = 100; なら int)、その後は普通の変数と同じく型が固定されます。右辺がない var x; や var x = null; は型を決められないのでコンパイルエラーです。また、var を使えるのはローカル変数だけで、フィールドやメソッドの引数には使えません。

変数の有効範囲 (スコープ)

変数が使えるのは、宣言した { } のブロックの中だけです。if や for のブロックの中で宣言した変数は、ブロックを出ると使えません。

Main.java
public class Main {    public static void main(String[] args) {        if (args.length == 0) {            String message = "引数なし";        }        System.out.println(message);    }}
ターミナル
javac Main.java

コンパイルエラー (6 行目): message は if のブロックの中でしか使えない

また、同じメソッドの中で、有効範囲が重なる同じ名前のローカル変数を 2 回宣言することはできません。外側のブロックの変数と同じ名前を、内側のブロックで宣言するのもコンパイルエラーです。

一次元配列の宣言・作成・使用

配列は、同じ型の値をまとめて扱う参照型です。宣言は int[] scores; が一般的ですが、int scores[]; のように変数名の後ろに [] を書くこともできます。宣言しただけでは配列は作られず、new で要素数を指定して作ります。

new で作った配列の要素は、フィールドと同じ既定値 (数値は 0、boolean は false、参照型は null) で初期化されます。要素数は length で取得できます。length はメソッドではないので () を付けません (文字列の長さを返す String の length() とは違います)。

Main.java
public class Main {    public static void main(String[] args) {        int[] numbers = new int[3];        String[] names = new String[2];        System.out.println(numbers.length);        System.out.println(numbers[0]);        System.out.println(names[1]);    }}
ターミナル
java Main
3
0
null

作ると同時に値を入れるときは、int[] a = {1, 2, 3}; または int[] a = new int[]{1, 2, 3}; と書きます。new int[3]{1, 2, 3} のように要素数と初期値を両方書くとコンパイルエラーです。宣言側に要素数を書く int[3] a; も誤りです。

Main.java
public class Main {    public static void main(String[] args) {        int[] a = new int[3]{1, 2, 3};        System.out.println(a.length);    }}
ターミナル
javac Main.java

コンパイルエラー (3 行目): 初期値を書くときは要素数を指定できない

添字は 0 から始まり、最後の要素は length - 1 です。範囲外の添字を使うと、コンパイルは通りますが実行時に ArrayIndexOutOfBoundsException が発生します。

Main.java
public class Main {    public static void main(String[] args) {        int[] a = {10, 20, 30};        System.out.println(a[a.length - 1]);        System.out.println(a[3]);    }}
ターミナル
java Main
30

実行時に例外が発生: ArrayIndexOutOfBoundsException

コマンドライン引数の利用

java Main 10 20 のように渡したコマンドライン引数は、main メソッドの String[] args に入ります。数字を渡しても、受け取る値は文字列です。そのまま + でつなぐと文字列の連結になるので、数値として計算したいときは Integer.parseInt で int に変換します。

Main.java
public class Main {    public static void main(String[] args) {        System.out.println(args[0] + args[1]);        int sum = Integer.parseInt(args[0]) + Integer.parseInt(args[1]);        System.out.println(sum);    }}
ターミナル
java Main 10 20
1020
30

試験でよくある引っかけ

  • float や long のリテラルの接尾辞

    float f = 3.14; はコンパイルエラーです (3.14F と書く)。long n = 3000000000; も int の範囲を超えるのでエラーになり、3000000000L と書きます。

  • 先頭が 0 の整数

    010 は 10 ではなく 8 進数の 8 です。

  • 初期化していないローカル変数

    フィールドは既定値で初期化されますが、ローカル変数は代入する前に読むとコンパイルエラーです。

  • 配列の要素数と初期値を両方書く

    new int[3]{1, 2, 3} はコンパイルエラーです。new int[]{1, 2, 3} か {1, 2, 3} と書きます。

  • 配列の length に () を付ける

    配列の要素数は a.length です。a.length() はコンパイルエラーです (String の長さは length())。

  • コマンドライン引数は文字列

    args[0] + args[1] は文字列の連結です。数値として足すには Integer.parseInt で変換します。

問題で確認する

この分野の問題を、解説つきで読めます (登録不要)。

出典・参考

コード例は、試験の対象バージョンで実際にコンパイル・実行して結果を確認しています。