リテラルと配列に関する問題
リテラルに関する問題
以下の問題をご用意しました:
次のうち、Javaでの正しいリテラルの形式はどれですか?
A)”42″
B)42
C)’4′
D)42.0
正解は、、、、、
全部正しい!
Javaにおけるリテラルは、文字列、整数、文字、浮動小数点数など、さまざまな形式を取ります。提供された選択肢は、それぞれ文字列リテラル、整数リテラル、文字リテラル、浮動小数点数リテラルを表しています。すべてがJavaで有効なリテラルの形式です。
「==」と「変数名.equals(XX)」の問題01
次のコードを見て、下記で出力される結果を答えてください。
public class Main {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
System.out.println(str1 == str3);
System.out.println(str1.equals(str3));
}
}
System.out.println(str1 == str2);
結果「true」
同じ文字列リテラル "hello"
を参照しているため、true
です。
System.out.println(str1.equals(str2));
結果「true」
文字列の内容が同じであるため、true
です。
System.out.println(str1 == str3);
結果「false」
str3
は新しい文字列オブジェクトを作成しているため、参照が異なります。したがって、false
です。
System.out.println(str1.equals(str3));
結果「true」
文字列の内容が同じであるため、true
です。
「==」と「変数名.equals(XX)」の問題02
次のコードを見て、下記で出力される結果を答えてください。
public class Main {
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
String s3 = s2.intern();
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s1 == s3);
}
}
System.out.println(s1 == s2);
結果「false」
s1 と s2 は異なるオブジェクトを参照しており、== 演算子は参照先のオブジェクトが同じかどうかを比較するため、false を返します。
System.out.println(s1.equals(s2));
結果「true」
equals() メソッドは文字列の内容を比較するため、s1.equals(s2) は true を返します。
System.out.println(s1 == s3);
結果「true」
s3 は s2 のインターンメソッドを呼び出しているため、s1 == s3 は true を返します。
配列に関する問題01
次のJavaプログラムを見て、コンパイルエラーが発生する理由を選択肢から選んでください。
public class Main {
public static void main(String[] args) {
int[] numbers;
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
System.out.println(numbers[1]);
}
}
選択肢:
- A) 配列のサイズが指定されていないため、コンパイルエラーが発生する。
- B) 配列が初期化されていないため、コンパイルエラーが発生する。
- C) 配列のインデックスが範囲外のため、コンパイルエラーが発生する。
- D) 配列の各要素に値が代入されていないため、コンパイルエラーが発生する。
正解は、、、、、
B) 配列が初期化されていないため、コンパイルエラーが発生する。
配列が宣言されただけで初期化されていないため、コンパイルエラーが発生します。
配列に関する問題02
以下のコードを実行した場合、どのような出力が得られるか選んでください。
public class ArrayExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
System.out.println("合計: " + sum);
}
}
選択肢:
- A)合計: 10
- B)合計: 11
- C)合計: 12
- D)合計: 15
正解は、、、、
D)合計: 15
与えられたコードは、配列 numbers
の要素を合計しています。 numbers
の要素は [1, 2, 3, 4, 5]
であり、これらの合計は 1 + 2 + 3 + 4 + 5 = 15
です。したがって、出力は 合計: 15
となります。
どうだったでしょうか?JavaSilverの問題では、見落としがちな部分をわざと欠落させて出題する傾向があるようなので、ここで基本がわかったとしても、コードの記述が正しいか、常に確認しながら読み解くようにしましょう。
コメント