【Java入門】Javaで文字列を扱う3つの方法String、StringBuffer、StringBuilderの違いは何?
勉強ちゃん
いろいろ勉強
Javaの面接を受ける前に、どんな質問をされるか気になりますよね。
「もし事前に質問内容を知っていて、きちんと答えられたら…もっと良い印象が残せるかも!」
そんなあなたのために、Javaエンジニアの面接でよく聞かれる質問7つと、それぞれのわかりやすい回答をまとめました。
これを読めば、面接前に自信がつくこと間違いなし!
番号 | 質問内容 |
---|---|
1 | int とInteger の違いは? |
2 | 文字列の比較は何? |
3 | インタフェースと抽象クラスの違いは? |
4 | オーバーロードとオーバーライドの違いは? |
5 | this とsuper の使い分けは? |
6 | Javaのメモリ管理の仕組みは? |
7 | マルチスレッドとは?どうやって実現? |
int
とInteger
の違いは?int
:プリミティブ型(基本データ型)で、値そのものとして扱います。int num = 10 ;
Integer
:クラス型(ラッパークラス)で、オブジェクトとして扱います。Integer num = new Integer(10);
項目 | int | Integer |
---|---|---|
型 | プリミティブ型 | 参照型(オブジェクト) |
初期値 | 0 | null |
null代入 | × 不可 | ○ 可能 |
メソッド使用 | × | ○ compareTo() など |
Javaでは、文字列の比較には必ずequals()
メソッドを使いましょう。
String str1 = "hello";
String str2 = "hello";
System.out.println(a == b); // メモリ参照を比較 → false
System.out.println(a.equals(b)); // 中身(文字列)を比較 → true
==
は**参照(アドレス)**を比較equals()
は**値(中身)**を比較項目 | インタフェース | 抽象クラス |
---|---|---|
継承 | 多重継承できる | 単一継承のみ |
フィールド | 定数のみ | 変数も定義できる |
メソッド | 抽象メソッドのみ(Java8以降defaultもOK) | 抽象+通常のメソッド |
コンストラクタ | なし | あり |
💡使い分けの目安:
項目 | オーバーロード | オーバーライド |
---|---|---|
説明 | 同じ名前で引数が違うメソッドを複数定義 | 親クラスのメソッドを子クラスで再定義 |
引数 | 違ってOK | 同じである必要がある |
戻り値 | 自由 | 基本的に同じ(サブクラスでもOK) |
アノテーション | 不要 | @Override 推奨 |
this
とsuper
の使い方・違いthis
:現在のクラスのインスタンスを指します(自分自身)。super
:親クラスのメンバーやコンストラクタを参照したいときに使います。例:
class Parent {
void say() { System.out.println("親のこんにちは"); }
}
class Child extends Parent {
void childSay() {
super.say(); // 親クラスのgreet()を呼ぶ
System.out.println("子のこんにちは");
}
void childEvent(){
this. childSay();
}
}
出力結果
親のこんにちは
子のこんにちは
Javaは自動でメモリを管理する「ガベージコレクション(GC)」という仕組みを持っています。
マルチスレッドは複数の処理を同時に行うことができる仕組みです。
class MyThread extends Thread {
public void run() {
System.out.println("スレッド実行中");
}
}
class MyRunnable implements Runnable {
public void run() {
System.out.println("スレッド実行中");
}
}
ExecutorService
を使うのが一般的です。面接でよく聞かれるJavaの質問をまとめると:
✅ int
とInteger
の違いを理解します。
✅ 文字列はequals()
で比較することを理解します。
✅ 抽象クラスとインタフェースの使い分けを理解します。
✅ オーバーロードとオーバーライドの違いを理解します。
✅ this
とsuper
の使い方を理解します。
✅ Javaのメモリ管理(Heap、GC)を理解します。
✅ マルチスレッドの基本と実装方法を理解します。
お役に立てればうれしいです。