# Java インターン向けの基本的な面接の質問をいくつか示します: (関連する面接の質問に関する推奨事項:
Java の面接の質問と回答)
1. Java とは正確には何ですか?Java はオブジェクト指向プログラミング言語です。1995 年に SUN (Stanford University Network) によって開発され、2010 年に ORACLE に買収されました。
2. Java は非常に人気があります。 . その特徴は何ですか?Java はクロスプラットフォーム言語です (一度コンパイルすればどこでも実行できます)。
例: Java は、Windows プラットフォーム上で hello.java ファイルを書き込み、それを hello.class ファイルにコンパイルし、対応する Java 仮想マシンをさまざまなオペレーティング システムにインストールします (Java コンパイルを実行するには、すべてのシステム プラットフォームに JVM が必要です)
Java の 3 つの基本的な技術アーキテクチャは次のとおりです: JavaSE、JavaEE、JavaMEJavaSE:は JavaEE および JavaME の基礎であり、非常にフラットです。
JavaEE: 主に WEB アプリケーション システムの開発に適した開発者に適したプラットフォームです。
JavaME: 携帯電話上の APP などの小型電子消費者製品の開発。言語(エレベーター、掃除ロボット)
(1) Javaでは大文字と小文字が区別され、対応するHelloとhelloが異なります(2) すべての Java クラスでは、クラスの最初の文字を大文字にする必要があり、クラス名が複数の単語で構成されている場合は、各単語の最初の文字を大文字にする必要があります。例: MyFirstJava
(3) Java メソッド名の最初の文字は小文字にし、複数の単語で構成される場合は、後続の単語の最初の文字を大文字にする必要があります。例: findByName
(4). ソース ファイルはクラス名と一致している必要があります
Java には 8 つの基本的なデータ型がありますデータ型: byte、short、int、long、float、double、char、boolean (6 つの数値型: 4 つの整数型 (byte、short、int、long)、2 つの浮動小数点型 (float、double))
byte
: データ型は、2 の補数で表される 8 ビットの符号付き整数です。大きな配列のスペースを節約するために使用され、バイト変数が占有するスペースは int 型のわずか 4 分の 1 です。対応するパッケージング クラス: Byte、value (27- 27-1)short
: データ型は 16 ビット、バイナリの補数です。整数です。コードで表されます。 short データ型は、バイトと同様にスペースを節約することもできます。 short 変数のサイズは、int 型変数の半分です。対応梱包クラス:ショート。値 (215- 215-1)int
: データ型は 32 ビット、符号付きで、2 の補数整数で表されます。一般的な整数変数のデフォルトは int 型です。値 (231- 231-1)long
: データ型は 64 ビット、符号付きで、2 の補数整数で表されます。このデータ型は主に、大きな整数を比較する必要があるシステムで使用されます。値 (263-263-1)float
: データ型は単精度 32 ビット浮動小数点数です。 float は、大きな浮動小数点配列を格納するときにメモリ領域を節約できます。デフォルト値は 0.0f です。浮動小数点数は、通貨などの正確な値を表すために使用できません。double
: データ型は倍精度の 64 ビット浮動小数点数です。浮動小数点数のデフォルトのタイプは double です。また、double 型は通貨などの正確な値を表すこともできません。デフォルト値は 0.0d です。char
: 型は単一の 16 ビット Unicode 文字です。 char データ型には任意の文字を格納できます。ただし、格納できるのは 1 文字のみです。boolean
: このデータ型は 1 桁の情報を表し、値は true と false の 2 つだけです。このタイプは、true/false の状況を記録するためのフラグとしてのみ使用され、デフォルト値は false です。
アクセス権修飾子には次のものがあります: public、protected、default (デフォルトでは書き込まれません)、privatepublic: 最大のアクセス権、外部インターフェイスに使用されます
protected: A Thing に渡されるサブクラスを保護するために使用されますサブクラスによって継承されます
デフォルト: このパッケージへのアクセス用に設計されています
プライベート: アクセス権はクラスの内部に限定されており、外部クラスからはアクセスできません
7。プログラムを実行するにはどうすればよいですか?
すべての Java プログラムは、public static viod main(String []args){} メソッドによって実行されます。
8. Java でよく言及されるオブジェクトとは何ですか?
オブジェクトは、状態と動作を備えたクラスのインスタンスです。
たとえば: 犬はオブジェクトであり、そのステータスには色、名前、品種が含まれ、行動には尻尾を振る、吠える、食べるなどが含まれます。
ソフトウェア オブジェクトにも状態と動作があります。ソフトウェアのオブジェクトは属性であり、動作はメソッドを通じて反映されます
9. クラスとは何ですか?
クラスは、オブジェクトのクラスの動作とステータスを記述するテンプレートです。クラスは複数のメソッドを持つことができます
10. クラス内でメソッドを構築するにはどうすればよいですか?
オブジェクトを作成するときは、少なくとも 1 つのコンストラクターを呼び出す必要があります。コンストラクターの名前はクラスと同じである必要があります。クラスには複数のコンストラクターを含めることができます。
11. オブジェクトを作成するにはどうすればよいですか?
オブジェクトはクラスに基づいて作成されます。 Java では、キーワード new を使用して新しいオブジェクトを作成します。オブジェクトを作成するには、次の 3 つの手順が必要です。
宣言: オブジェクトの名前とオブジェクトのタイプを含めて、オブジェクトを宣言します。
インスタンス化: キーワード new を使用してオブジェクトを作成します。
初期化: new を使用してオブジェクトを作成する場合、オブジェクトを初期化するためにコンストラクター メソッドが呼び出されます
# #12. ソースファイル 宣言に宣言ルールはありますか?
(1) ソース ファイルにはパブリック クラスを 1 つだけ含めることができます
(2) 複数の非パブリック クラスを含めることができます
(3) ソース ファイルの名前は、ソース ファイルと同じ名前にする必要がありますクラス
(4) ソース ファイルがパッケージ内で定義されている場合、インポート パッケージはソース ファイルの最初の行にある必要があります。
(5) ソースファイルに import 文がある場合は、package 文とクラスの間に定義します。package 文がない場合は、import 文をソースファイルの先頭に記述します。
( 6)、Import ステートメントと package ステートメント ソース ファイルで定義されているすべてのクラスに有効です。同じソース ファイル内で、異なるクラスに対して異なるパッケージ宣言を定義することはできません
13. 変数とは何ですか?
変数は値を保存するためにメモリに適用されます。つまり、変数を作成するときに、メモリ内のスペースを申請する必要があります。メモリ管理システムは、変数の型に応じて領域を割り当てます。割り当てられた領域は、その型のデータを格納するためにのみ使用できます。
14. 変数を定義する機能は何ですか?
異なる型を定義することで、さまざまな型の数値 (整数、小数、文字など) を格納するために使用できます
15. さまざまな型を変換できますか?
下位から上位:
byte、short、char——>int——>long——>float——>double
は自動的に変換できます。
(1). ブール型は型変換できない
(2) オブジェクト型は関係のないクラスのオブジェクトに変換できない
(3) 容量の大きい型は容量の大きい型に変換できる容量が小さいため、値の型をキャスト (型) する必要があります。変換処理によりオーバーフローや精度の低下が発生する可能性があります。
(4) 自動型変換では、変換前のデータ型の桁数が変換後のデータ型の桁数より小さいことを満たしている必要があります。
(5). 浮動小数点から整数への変換は、丸めの代わりに小数部分を切り捨てることによって直接得られます。
例: (int)23.7 == 23、(int)-23.7 == -23
16. Java 演算子とは何ですか?
(·1) 算術演算子: 数学の演算子と同様、主に - * \ % -- (a は最初に元の基底に 1 を加算してから演算を実行し、a– は最初に演算してから 1 を減算します)
(2) 論理演算子: 主に && ||!
(3) 代入演算子:主に代入の役割を果たし、よく使われるのは = = -=
(4) 条件演算子:三項演算子とも呼ばれます。この演算子には 3 つのオペランドがあり、ブール式の値を評価する必要があります。この演算子の主な目的は、変数
にどの値を割り当てるかを決定することです。例: int a = (20==40)? 30 : 50;
17。 Javaのメインループ構造はい?
Java には 3 つの主要なループ構造があります: while ループ、do...while ループ、for ループ
(1) while は最も基本的なループであり、その構造は次のとおりです:
while (ブール式){
//ループの内容
}
ブール式が true である限り、ループは継続します。
(2) do...while ループは while ループとよく似ていますが、異なる点は、do...while ループが少なくとも 1 回実行されることです。
do{
//ループ内容
}while (ブール式)
(3). forループの実行回数は実行前に決定されます
for(初期化) ;ブール式; update){
//コードステートメント
}
18. ループ構造に関するキーワードはありますか?
主な内容: Break と continue;
Break: 主にループ ステートメントまたは switch ステートメントで使用され、ステートメント ブロック全体から飛び出すことができます。break は現在のループから飛び出て、次のステートメントの実行を継続します。ループ。
continue: 任意のループ制御構造に適用でき、その機能はプログラムがループの次の反復に即座にジャンプできるようにすることです。 for ループ内で continue ステートメントにより、プログラムは直ちに update ステートメントにジャンプします。
while および do...while ループでは、直ちにブール式の判定文にジャンプします。
19. Number クラスとは何ですか?
組み込みデータ型がオブジェクトとして使用される場合、コンパイラは組み込み型をラッパー クラスにボックス化します。 Number クラスは java.lang パッケージに属します。すべてのラッパー クラス (Integer、Long、Byte、Double、Float、Short) は、抽象クラス Number のサブクラスです。
20. Java の Math クラスはどのようなものですか?
基本的な指数、オブジェクト、平方根、三角関数などの基本的な数学演算を実行するためのプロパティとメソッドが含まれています。数学メソッドはすべて静的形式で定義されます。 Math クラスを介して main 関数内で直接呼び出すことができます。
21. 数学における床、円形、天井の違いは何ですか?
ceil: ガイダンス パラメーター以上の最小の整数を返します (例: 四捨五入の代わりに Math.ceil(23.2) ==24)
Floor: 以下の最大の整数を返します(例: 丸めの代わりに Math.ceil(23.7) ==23)
round: 丸めを意味します。アルゴリズムは Math.round(x 0.5)、つまり元の数値に 0.5 を加算します。そして切り捨てます。したがって、Math.round(11.4) は 11 に等しく、Math.round(11.5) は 12 に等しく、Math.round(-11.5) は -11 に等しくなります。
22. Character クラスとは何ですか? このクラスのメソッドは何ですか?
Character: Java 言語によって提供される、組み込みの基本データ型 char のラッパー クラスです。
Character の主なメソッドは次のとおりです: isLetter() - 文字かどうか、toString - 文字列の長さを返します (文字列の長さは 1 のみ)、isUpperCase() - 大文字かどうか、isLowerCase() —小文字かどうか。
23. バックスラッシュ (\) が前に付いた文字で表されるエスケープ文字は何ですか?
一般的に使用されるエスケープ文字は次のとおりです: \t (テキストのこの位置にタブ キーを挿入します)
\d (テキストのこの位置に戻るキーを挿入します)
\n (テキストのこの位置にバック キーを挿入します) (本文のこの位置にタブキー) 改行を挿入)
\r (本文のこの位置に改行を挿入)
24. JavaのStringクラスの注意点について?
文字列は Java のオブジェクトであり、Java は文字列を作成および操作するための String クラスを提供します。 String クラスは変更できません。String オブジェクトが作成されると、その値は変更できません。文字列を変更する必要がある場合は、StringBuffer クラスまたは StringBuilder クラスを使用する必要があります。
25. length() メソッド、length 属性、size() メソッドの違いは何ですか?
length() メソッドは文字列用です。文字列の長さが必要な場合は、その length() メソッドを使用する必要があります。
length() 属性は Java の配列用です。配列の長さが必要な場合は、その length 属性を使用できます。Java の
size() はジェネリック コレクション用です。このジェネリックに含まれる要素の数を確認したい場合は、このメソッドを呼び出して確認してください。
26. 文字列の接続方法にはどのようなものがありますか?
2 つのタイプがあります:
(1)、String 1.concat (String 2)
(2)。より一般的に使用されるのは、次のような ' ' 操作を使用して文字列を連結することです。 " Hello" "Word" "!";
27. Java の StringBuffer クラスと StringBuilder クラスの違いは何ですか?
StringBuilder クラスは Java 5 で提案されました。StringBuilder クラスと StringBuffer の最大の違いは、StringBuilder メソッドがスレッド セーフではない (同期的にアクセスできない) ことです。StringBuilder は StringBuffer よりも速度に優れているため、ほとんどの場合、 StringBuilder を使用する場合。ただし、アプリケーションが線形安全性を必要とする場合は、StringBuffer クラスを使用する必要があります。
28. StringBuffer はオブジェクトの変更をどのように実装しますか?
String Buffer には主に、接続を完了する append() メソッド、追加を完了する insert() メソッド、反転を完了する reverse() メソッド、置換を完了する replace() メソッドがあります。
例: buf.append("hi");
buf.insert(0,"Hello"); //最初のコンテンツの前に追加
buf.insert(buf.length,'Hello ' ); //最後にデータを挿入
String str = buf.reverse().toString(); //内容を反転して文字列に変換
buf.replace(6,11,"yes ” ); //word の内容を置き換えます
29. 配列をパラメータとしてメソッドに渡すことはできますか?
はい
30. 現在時刻を取得して時刻をカスタマイズするにはどうすればよいですか?
現在時刻を出力します: Data data = new Date(); data は現在の時刻です。
日付と時刻の形式を設定します。SimpleDateFormat
SimpleDateFormat sc = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.printf(sc.形式 (変換時間))
31. Java はどのようにスリープするのですか?
Sleep() は、現在のスレッドを停滞状態 (現在のプロセスをブロック) にし、CPU の使用を放棄します。その目的は、現在のスレッドがスレッドによって取得された CPU リソースを占有するのを防ぐことです。単独で実行し、他のスレッドが実行できるよう Opportunity に一定の時間を残します。プログラムを数ミリ秒間スリープ状態にすることができます。 Tread.sleep(1000*3) //3 秒間スリープします
32. 年、月、日、日、分などの日付形式の特定の部分を設定する方法そして二番目は?
は、Calender クラスを使用することです。 Calender クラスは、実際に使用される特定のサブクラスのオブジェクトを実装する抽象クラスです。オブジェクトの作成プロセスはプログラマにとって透過的であり、getInstance メソッドを使用して作成するだけで済みます。
#33. 使用するクラスやメソッドはありますか?
java.util.regex パッケージには主に次の 3 つのクラスが含まれています:
Pattern クラス: Pattern オブジェクトは正規表現のコンパイルされた表現です。Pattern クラスにはパブリック コンストラクターがありません。 Pattern オブジェクトを作成するには、まずその public static コンパイル済みメソッドを呼び出す必要があります。このメソッドは Pattern オブジェクトを返します。
Matcher クラス: Matcher オブジェクトは、入力文字列をコンパイルして照合するエンジンです。
PatternSyntaxExeption: PatternSyntaxExeption は、正規表現パターンの構文エラーを表す非必須の例外クラスです。
34. コンストラクターとメソッドの間の関係は何ですか?
コンストラクター メソッドの概念: オブジェクトを作成するとき、システムは自動的にコンストラクター メソッドを呼び出します。カスタム コンストラクターがない場合、システムはデフォルトのコンストラクターを呼び出します。コンストラクターはオーバーロードできますが、書き換えることはできません。コンストラクターが異なれば、名前は同じですが、パラメーター リストが異なります。パラメーター リストは、識別の基礎および基準であり、人の名前と同様であり、ID カードは同じであっても、ID カードが異なる場合があります。
コンストラクターをカスタマイズすると、システムは、渡されたパラメーターのタイプと量に基づいて、コンストラクターを自動的に照合してオブジェクトを初期化します。
35. Scanner クラスとは何ですか? Scanner オブジェクトの作成方法
java.util.Scanner は java5 の新機能です。ユーザーからの入力を取得できます。
Scanner sc = new Scanner();
36. 入力文字列を取得するための Scanner クラスの next() メソッドと nextLine() メソッドの違いは何ですか?
next():
(1). 入力は有効な文字が読み取られた後にのみ完了する必要があります;
(2) 入力用の有効な文字の間に空白がある場合、入力は次のようになります。自動的に削除;
(3) 有効な文字を入力した場合のみ、後で入力したスペースを区切り文字または終端文字として使用できます;
(4) Next() はスペースを含む文字列を取得できません;
nextLine ( ):
(1)、終了文字として Enter を使用します。つまり、復帰の前にすべての文字を入力します。
(2)、空白を取得できます。
37、 Java 3 例外の種類は何ですか?
チェック時例外: 最も一般的なチェック例外は、プログラマが予見できないユーザー エラーや問題によって引き起こされる例外です。たとえば、存在しないファイルを開こうとすると例外が発生しますが、コンパイル時にこれらの例外を単純に無視することはできません。
実行時例外: 実行時例外は、プログラマが回避できる例外です。チェック例外とは対照的に、実行時例外はコンパイル時に無視できます。
エラー: エラーは例外ではありませんが、プログラマーの制御が及ばない問題です。通常、エラーはコード内では無視されます。たとえば、スタックがオーバーフローすると、コンパイル時に確認できないエラーが発生します。
Java のすべての例外タイプは、組み込みクラス java.lang.Throwable クラスのサブクラスです。つまり、Throwable は例外クラス階層の最上位に位置します。図に示すように、Throwable クラスの下には Exception と Error という 2 つの例外ブランチがあります。
38. 例外とエラーの違いは何ですか?
すべての例外は Throwable クラスを継承します。これは、すべての例外がオブジェクトであることを意味します。
一般に、例外は 2 つの部分に分類できます。
(1) エラー: プログラムでは処理できないエラーを指し、アプリケーションの実行中に発生する重大なエラーを示します。例えば、jvm の実行中にソケットのプログラミング時にポートが占有されている場合に発生する OutOfMemoryError や、プログラムでは処理できないその他のエラー
(2) 例外: 例外は、実行時例外とコンパイル例外に分けられます。 2 つの主要な例外クラス サブクラス: IOException クラスと RuntimeException クラス
39. 例外のキャッチとは何ですか?
try および catch キーワードを使用して例外をキャッチし、例外が発生する可能性がある場所に try/catch コード ブロックを配置します。 try/catch ブロック内のコードは保護されたコードになります。
40. throws と throw キーワードの違いは何ですか?
メソッドがチェック例外をキャッチしない場合、メソッドは throws キーワードを使用して宣言する必要があります。 throws キーワードはメソッド シグネチャの最後に配置されます。また、 throw を使用して、最新のインスタンス化またはキャッチされたばかりの例外をスローすることもできます。
複数の例外をスローするメソッドをコンマで区切って宣言できます。
41. Java で例外をカスタマイズするにはどうすればよいですか?
独自の例外クラスを作成できます:
(1) すべての例外は Throwable クラスのサブクラスである必要があります;
(2) チェック時例外を作成する場合は、次のものが必要です。 to継承 Exception ;
(3) 実行時例外を記述する必要がある場合は、RuntimeException() 例外
42 を継承する必要があります。相続の特徴は何ですか?
継承とは、サブクラスが親クラスの特性と動作を継承し、サブクラスのオブジェクト (インスタンス) が親クラスのインスタンス フィールドとメソッドを持つか、サブクラスが親クラスのメソッドを継承することです。 , そのため、サブクラスは親クラスの動作と同じ特性を持ちます。
機能:
(1). サブクラスは親クラスの非プライベート属性とメソッドを持ちます;
(2) サブクラスは独自の属性とメソッドを持つことができます。 ;
(3) サブクラスは親クラスのメソッドを実装する独自の方法を持つことができます;
(4) Java の継承は単一継承のみですが、多重継承も可能です。サブクラスは親クラス A のみを継承できます。多重継承は次のとおりです。A は B を継承し、B は C を継承します。したがって、関係によれば、クラス C はクラス B の親クラスであり、B はクラス A の親クラスです。これは機能です。 Java 継承の c との違い。
43. 継承のキーワードは何でしょうか?
継承は、extends と Implements の 2 つのキーワードを使用して実現できます。さらに、すべてのクラスは java.lang.Object を継承します。クラスに継承されたキーワードがない場合、デフォルトで Object クラスを継承します (このクラスは java.lang パッケージ内にあるため、パッケージのインポートは必要ありません)。
super キーワード: super キーワードは、親クラスのメンバーにアクセスするために使用でき、現在のオブジェクトによって継承された親クラスを参照するために使用されます。
このキーワード: それ自体への参照を指します。
final キーワード: クラスを宣言すると、そのクラスを継承できないクラス、つまり最終クラスとして定義したり、サブクラスによってオーバーライドできないメソッドの変更に使用したりできます。
44. 親クラスのコンストラクターの特徴は何ですか?
サブクラスは、親クラスのコンストラクター (コンストラクターおよびコンストラクター (パラメーター付き)) を継承できません。ただし、親クラスのコンストラクターにパラメーターがある場合は、サブクラスのコンストラクターで明示的に宣言する必要があります。親クラスのコンストラクターは、supper キーワードと適切なパラメーター リストを通じて呼び出されます。
親クラスに引数のないコンストラクターがある場合は、それをコンストラクターのコンストラクターで使用します。 subclass supper が親クラスを呼び出す必要はありません。super キーワードが使用されていない場合、システムは自動的に親クラスのパラメーターなしのコンストラクターを呼び出します。
45. オーバーライドとは何ですか、オーバーロードとは何ですか、またそれらの違いは何ですか?
Rewrite: サブクラスは、にアクセスできる親クラスのメソッドの実装処理を書き換えて書き込みます。戻り値やパラメータは変更できません。つまり、シェルは変更できず、コアは変更されません。オーバーライドの利点は、サブクラスが必要に応じて独自の動作をカスタマイズできることです。つまり、サブクラスは必要に応じて親クラスのメソッドを実装できます。オーバーライド メソッドは、チェック例外や、オーバーライド メソッド宣言よりも広範囲の例外をスローできません。
オーバーロード: オーバーロードはクラス内で行われ、メソッド名は同じですが、パラメーターが異なり、戻り値の型は同じである場合もあれば異なる場合もあります。オーバーロードされた各メソッド (またはコンストラクター) には、パラメーターの型の一意のリストが必要です。最も一般的なのはコンストラクターのオーバーロードです。
相違点: メソッドの書き換えとオーバーロードは、Java ポリモーフィズムの異なる表現です。書き換えは、親クラスとサブクラス間のポリモーフィズムの表現です。オーバーロードは、状態の特定の表現であるポリモーフィズムとして理解できます。
(1) メソッドのオーバーロードとは、同じ名前でパラメータが異なる、またはパラメータの数が同じで型や順序が異なる複数のメソッドを定義し、メソッドのオーバーロードとなるクラスです。
(2) メソッドのオーバーライドとは、サブクラス内の親クラスのメソッドと同じ名前で、パラメータの数と型が同じで、戻り値も同じになるメソッドのことを書き換えといいます
(3) 、メソッドのオーバーロードはクラスの多態性の表現であり、メソッドのオーバーライドはサブクラスと親クラスの多態性の表現です。
46. 抽象クラスとは何ですか? 抽象クラスとメソッドを定義するにはどうすればよいですか?
抽象クラス: 抽象クラスがオブジェクトをインスタンス化できないことを除いて、クラスの他の関数はまだ存在しており、メンバ変数、メンバ メソッド、およびコンストラクタへのアクセス メソッドは通常のクラスとは異なります。抽象クラスはオブジェクトをインスタンス化できないため、抽象クラスを使用する前に継承する必要があります。
親クラスにはサブクラスのコレクションの共通メソッドが含まれていますが、親クラス自体が抽象クラスであるため、これらのメソッドは使用できません。 Java では、抽象クラスは継承関係を表します。クラスは 1 つの抽象クラスのみを継承できますが、クラスは複数のインターフェイスを実装できます。
抽象クラスの定義: 抽象クラスを使用して、Java 言語で抽象クラスを定義します。
抽象メソッドを定義する: 特別なメンバー メソッドを含むクラスを設計する場合で、メソッドの具体的な実装がそのサブクラスによって決定される場合は、親クラスでメソッドを宣言できます。方法。 Abstract キーワードは、抽象メソッドの宣言にも使用されます。抽象メソッドにはメソッド名のみが含まれ、メソッド本体は含まれません (抽象メソッドは定義されておらず、メソッド名の直後には中括弧の代わりにセミコロンが続きます)。クラスに抽象メソッドがある場合、それは抽象クラスである必要があります
47. 抽象メソッドを宣言するとどのような結果が生じますか?
(1) クラスに抽象メソッドが含まれる場合、そのクラスは抽象クラスである必要があります。
(2) サブクラスは親クラスの抽象メソッドをオーバーライドするか、それ自体を抽象クラスとして宣言する必要があります。
(推奨チュートリアル:java コース)
48. カプセル化とは何ですか?またその利点は何ですか? Java はどのようにカプセル化されますか?
カプセル化: 抽象関数インターフェイスの実装の詳細をパッケージ化して非表示にする方法を指します。カプセル化は、外部クラスによって定義されたコードによってクラスのコードとデータがランダムにアクセスされるのを防ぐ保護バリアと考えることができます。
利点:
(1) 適切なカプセル化により結合を軽減できる;
(2) クラス内の構造を自由に変更できる;
(3) メンバーを変更できるより正確な制御のため;
(4), 情報、実装の詳細を非表示にする;
Encapsulate:
(1), 属性へのアクセスを制限するために属性の可視性を変更します (通常はprivate);
(2) 各値属性の外部インターフェイスへのパブリック メソッド アクセスを提供します。つまり、私有地へのアクセスのためです。 (通常、これらのメソッドは、開発中のエンティティ クラスなど、ゲッター メソッドおよびセッター メソッドと呼ばれます)
49. インターフェイスとクラスの類似点と相違点は何ですか?
同じ:
(1)、インターフェイスには複数のメソッドを含めることができます;
(2)、インターフェイス ファイルは .java で終わるファイルに保存されます
(3)、インターフェイスバイトコード ファイルは、.class で終わるファイルに保存されます
相違点:
(1) インターフェイスはオブジェクトをインスタンス化できません (抽象クラスと同じ)
(2) インターフェイスには構築メソッドがありません;
(3) すべてインターフェイス内のメソッドは抽象メソッドである必要があります;
(4) インターフェイスにはメンバー変数を含めることはできません;
(5) インターフェイスは継承できません (クラスによって実装されます);
( 6). インターフェイスは複数のメソッドをサポートします継承;
50. 抽象クラスとインターフェイスの違いは何ですか?
(1) 抽象クラスのメソッドはメソッド本体を持つことができます。つまり、抽象クラスはメソッドの特定の機能を実現できますが、インターフェイスのメソッドは実現できません。
(2). 抽象クラスのメンバー変数はさまざまな型にすることができますが、インターフェイスのメンバー変数は public static Final 型のみにすることができます;
(3) インターフェイスには静的コード ブロックと静的メソッド (メソッドは変更されています) を含めることはできません静的)、抽象クラスは静的コード ブロックと静的メソッドを持つことができます
(4). クラスは 1 つの抽象クラスのみを継承でき、クラスは複数のインターフェイスを実装できます。
インターフェイスは抽象的です。インターフェイスを宣言するときに、abstract キーワードを使用する必要はありません。インターフェイス内のすべてのメソッドも暗黙的に抽象であるため、宣言時に抽象を追加する必要はありません。インターフェイス内のメソッド インターフェイスには、インターフェイス内のメソッドを実装するインターフェイスを実装するクラスがあります。
Java を初めて学ぶ学生にとって、Java の基礎は非常に重要であり、必ず問われることになります。これらの基本をしっかりマスターできれば、面接に合格する可能性は非常に低いでしょう。一緒にJavaの基礎を復習しましょう!
1、Java到底是什么东西?
Java是一款面向对象的编程语言,是SUN(斯坦福大学网络公司)1995年推出的,在2010年被ORACLE收购
2、Java这么热门它有什么特点呢?
Java是跨平台性的语言(一处编译,到处执行)。
例如:Java在Windows平台中编写hello.java文件—>编译成hello.class文件;在不同的操作系统中安装对应的Java虚拟机(所有的系统平台必须有JVM才可以运行Java编译的文件),就可以直接运行
3、Java的三种技术架构
Java三种基本技术架构分别是:JavaSE、JavaEE、JavaME
JavaSE:是JavaEE与JavaME的基础,是非常平面话的
JavaEE:适合开发者的平台主要针对WEB应用系统的开发
JavaME:开发小型的电子消费品;比如:手机上的APP;机器上的语言(电梯、扫地机器人)
4、在编写Java程序时的注意点
(1)、Java是大小写敏感的,对应的Hello和hello是不同的
(2)、Java对于所有的类来说,类的首字母应该大写、若类名有多个单词组成,则每个单词首字母都应该大写。如:MyFirstJava
(3)、Java所有的方法名首字母都应该小写,如有多个单词组成,则后面的单词首字母要大写。如:findByName
(4)、源文件必须与类名一致
5、Java有那几个基本数据类型
Java有八种基本数据类型:byte、short、int、long、float、double、char、boolean(六种数字类型:四个整型(byte、short、int、long),两个浮点型(float、double))
byte:数据类型是8位、有符号的,以二进制补码表示的整数。用于大型数组中节约空间,用为byte变量占用的空间只有int类型的四分之一。对应的包装类:Byte,取值(27- 27-1)
short:数据类型是16位、以二进制补码表示的整数。short数据类型也可以像byte那样节约空间。一个short变量是int型变量的二分之一。对应的包装类:Short。取值(215- 215-1)
int:数据类型是32位、有符号的,以二进制补码表示的整数。一般的整型变量默认为int类型。取值(231- 231-1)
long:数据类型是64位,有符号的,以二进制补码表示的整数。这种数据类型主要使用在需要比较大整数的系统上。取值(263- 263-1)
float:数据类型是单精度、32位的浮点数。float在存储大型浮点数组的时候可以节约内存空间。默认值是0.0f。浮点数不能用来表示精确的值,如货币。
double:数据类型是双精度、64位的浮点数。浮点数的默认类型位double类型。double类型同样不能表示精确的值,如货币。默认值是0.0d。
char:类型是一个单一的16位Unicode字符。char数据类型可以存储任何字符。但只能存储一个字符
boolean:数据类型表示一位数字信息,只有两个取值:true和false。这种类型只作为一种标志来记录true\false情况,默认值是false。
6、访问权限修饰符分别是什么?
访问权限修饰符有:public、protected、default(默认不写)、private
public:最大访问权,用于对外的接口
protected:用于保护子类传递给子类一种继承的东西
default:是针对与本包的访问而设计的
private:访问权限仅限于类的内部,不能被外层的类访问
7、怎样才能运行一个程序?
所有的Java程序都是由public static viod main(String []args){}方法开始执行。
8. Java でよく言及されるオブジェクトとは何ですか?
オブジェクトは、状態と動作を備えたクラスのインスタンスです。
たとえば: 犬はオブジェクトであり、そのステータスには色、名前、品種が含まれ、行動には尻尾を振る、吠える、食べるなどが含まれます。
ソフトウェア オブジェクトにも状態と動作があります。ソフトウェアのオブジェクトは属性であり、動作はメソッドを通じて反映されます
9. クラスとは何ですか?
クラスは、オブジェクトのクラスの動作とステータスを記述するテンプレートです。クラスは複数のメソッドを持つことができます
10. クラス内でメソッドを構築するにはどうすればよいですか?
オブジェクトを作成するときは、少なくとも 1 つのコンストラクターを呼び出す必要があります。コンストラクターの名前はクラスと同じである必要があります。クラスには複数のコンストラクターを含めることができます。
11. オブジェクトを作成するにはどうすればよいですか?
オブジェクトはクラスに基づいて作成されます。 Java では、キーワード new を使用して新しいオブジェクトを作成します。オブジェクトを作成するには、次の 3 つの手順が必要です。
宣言: オブジェクトの名前とオブジェクトのタイプを含めて、オブジェクトを宣言します。
インスタンス化: キーワード new を使用してオブジェクトを作成します。
初期化: new を使用してオブジェクトを作成する場合、オブジェクトを初期化するためにコンストラクター メソッドが呼び出されます
# #12. ソースファイル 宣言に宣言ルールはありますか?
(1) ソース ファイルにはパブリック クラスを 1 つだけ含めることができます
(2) 複数の非パブリック クラスを含めることができます
(3) ソース ファイルの名前は、ソース ファイルと同じ名前にする必要がありますクラス
(4) ソース ファイルがパッケージ内で定義されている場合、インポート パッケージはソース ファイルの最初の行にある必要があります。
(5) ソースファイルに import 文がある場合は、package 文とクラスの間に定義します。package 文がない場合は、import 文をソースファイルの先頭に記述します。
( 6)、Import ステートメントと package ステートメント ソース ファイルで定義されているすべてのクラスに有効です。同じソース ファイル内で、異なるクラスに対して異なるパッケージ宣言を定義することはできません
13. 変数とは何ですか?
変数は値を保存するためにメモリに適用されます。つまり、変数を作成するときに、メモリ内のスペースを申請する必要があります。メモリ管理システムは、変数の型に応じて領域を割り当てます。割り当てられた領域は、その型のデータを格納するためにのみ使用できます。
14. 変数を定義する機能は何ですか?
異なる型を定義することで、さまざまな型の数値 (整数、小数、文字など) を格納するために使用できます
15. さまざまな型を変換できますか?
下位から上位:
byte、short、char——>int——>long——>float——>double
は自動的に変換できます。
(1). ブール型は型変換できない
(2) オブジェクト型は関係のないクラスのオブジェクトに変換できない
(3) 容量の大きい型は容量の大きい型に変換できる容量が小さいため、値の型をキャスト (型) する必要があります。変換処理によりオーバーフローや精度の低下が発生する可能性があります。
(4) 自動型変換では、変換前のデータ型の桁数が変換後のデータ型の桁数より小さいことを満たしている必要があります。
(5). 浮動小数点から整数への変換は、丸めの代わりに小数部分を切り捨てることによって直接得られます。
例: (int)23.7 == 23、(int)-23.7 == -23
16. Java 演算子とは何ですか?
(·1) 算術演算子: 数学の演算子と同様、主に - * \ % -- (a は最初に元の基底に 1 を加算してから演算を実行し、a– は最初に演算してから 1 を減算します)
(2) 論理演算子: 主に && ||!
(3) 代入演算子:主に代入の役割を果たし、よく使われるのは = = -=
(4) 条件演算子:三項演算子とも呼ばれます。この演算子には 3 つのオペランドがあり、ブール式の値を評価する必要があります。この演算子の主な目的は、変数
にどの値を割り当てるかを決定することです。例: int a = (20==40)? 30 : 50;
17。 Javaのメインループ構造はい?
Java には 3 つの主要なループ構造があります: while ループ、do...while ループ、for ループ
(1) while は最も基本的なループであり、その構造は次のとおりです:
while (ブール式){
//ループの内容
}
ブール式が true である限り、ループは継続します。
(2) do...while ループは while ループとよく似ていますが、異なる点は、do...while ループが少なくとも 1 回実行されることです。
do{
//ループ内容
}while (ブール式)
(3). forループの実行回数は実行前に決定されます
for(初期化) ;ブール式; update){
//コードステートメント
}
18. ループ構造に関するキーワードはありますか?
主な内容: Break と continue;
Break: 主にループ ステートメントまたは switch ステートメントで使用され、ステートメント ブロック全体から飛び出すことができます。break は現在のループから飛び出て、次のステートメントの実行を継続します。ループ。
continue: 任意のループ制御構造に適用でき、その機能はプログラムがループの次の反復に即座にジャンプできるようにすることです。 for ループ内で continue ステートメントにより、プログラムは直ちに update ステートメントにジャンプします。
while および do...while ループでは、直ちにブール式の判定文にジャンプします。
19. Number クラスとは何ですか?
組み込みデータ型がオブジェクトとして使用される場合、コンパイラは組み込み型をラッパー クラスにボックス化します。 Number クラスは java.lang パッケージに属します。すべてのラッパー クラス (Integer、Long、Byte、Double、Float、Short) は、抽象クラス Number のサブクラスです。
20. Java の Math クラスはどのようなものですか?
基本的な指数、オブジェクト、平方根、三角関数などの基本的な数学演算を実行するためのプロパティとメソッドが含まれています。数学メソッドはすべて静的形式で定義されます。 Math クラスを介して main 関数内で直接呼び出すことができます。
21. 数学における床、円形、天井の違いは何ですか?
ceil: ガイダンス パラメーター以上の最小の整数を返します (例: 四捨五入の代わりに Math.ceil(23.2) ==24)
Floor: 以下の最大の整数を返します(例: 丸めの代わりに Math.ceil(23.7) ==23)
round: 丸めを意味します。アルゴリズムは Math.round(x 0.5)、つまり元の数値に 0.5 を加算します。そして切り捨てます。したがって、Math.round(11.4) は 11 に等しく、Math.round(11.5) は 12 に等しく、Math.round(-11.5) は -11 に等しくなります。
22. Character クラスとは何ですか? このクラスのメソッドは何ですか?
Character: Java 言語によって提供される、組み込みの基本データ型 char のラッパー クラスです。
Character の主なメソッドは次のとおりです: isLetter() - 文字かどうか、toString - 文字列の長さを返します (文字列の長さは 1 のみ)、isUpperCase() - 大文字かどうか、isLowerCase() —小文字かどうか。
23. バックスラッシュ (\) が前に付いた文字で表されるエスケープ文字は何ですか?
一般的に使用されるエスケープ文字は次のとおりです: \t (テキストのこの位置にタブ キーを挿入します)
\d (テキストのこの位置に戻るキーを挿入します)
\n (テキストのこの位置にバック キーを挿入します) (本文のこの位置にタブキー) 改行を挿入)
\r (本文のこの位置に改行を挿入)
24. JavaのStringクラスの注意点について?
文字列は Java のオブジェクトであり、Java は文字列を作成および操作するための String クラスを提供します。 String クラスは変更できません。String オブジェクトが作成されると、その値は変更できません。文字列を変更する必要がある場合は、StringBuffer クラスまたは StringBuilder クラスを使用する必要があります。
25. length() メソッド、length 属性、size() メソッドの違いは何ですか?
length() メソッドは文字列用です。文字列の長さが必要な場合は、その length() メソッドを使用する必要があります。
length() 属性は Java の配列用です。配列の長さが必要な場合は、その length 属性を使用できます。Java の
size() はジェネリック コレクション用です。このジェネリックに含まれる要素の数を確認したい場合は、このメソッドを呼び出して確認してください。
26. 文字列の接続方法にはどのようなものがありますか?
2 つのタイプがあります:
(1)、String 1.concat (String 2)
(2)。より一般的に使用されるのは、次のような ' ' 操作を使用して文字列を連結することです。 " Hello" "Word" "!";
27. Java の StringBuffer クラスと StringBuilder クラスの違いは何ですか?
StringBuilder クラスは Java 5 で提案されました。StringBuilder クラスと StringBuffer の最大の違いは、StringBuilder メソッドがスレッド セーフではない (同期的にアクセスできない) ことです。StringBuilder は StringBuffer よりも速度に優れているため、ほとんどの場合、 StringBuilder を使用する場合。ただし、アプリケーションが線形安全性を必要とする場合は、StringBuffer クラスを使用する必要があります。
28. StringBuffer はオブジェクトの変更をどのように実装しますか?
String Buffer には主に、接続を完了する append() メソッド、追加を完了する insert() メソッド、反転を完了する reverse() メソッド、置換を完了する replace() メソッドがあります。
例: buf.append("hi");
buf.insert(0,"Hello"); //最初のコンテンツの前に追加
buf.insert(buf.length,'Hello ' ); //最後にデータを挿入
String str = buf.reverse().toString(); //内容を反転して文字列に変換
buf.replace(6,11,"yes ” ); //word の内容を置き換えます
29. 配列をパラメータとしてメソッドに渡すことはできますか?
はい
30. 現在時刻を取得して時刻をカスタマイズするにはどうすればよいですか?
現在時刻を出力します: Data data = new Date(); data は現在の時刻です。
日付と時刻の形式を設定します。SimpleDateFormat
SimpleDateFormat sc = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.printf(sc.形式 (変換時間))
31. Java はどのようにスリープするのですか?
Sleep() は、現在のスレッドを停滞状態 (現在のプロセスをブロック) にし、CPU の使用を放棄します。その目的は、現在のスレッドがスレッドによって取得された CPU リソースを占有するのを防ぐことです。単独で実行し、他のスレッドが実行できるよう Opportunity に一定の時間を残します。プログラムを数ミリ秒間スリープ状態にすることができます。 Tread.sleep(1000*3) //3 秒間スリープします
32. 年、月、日、日、分などの日付形式の特定の部分を設定する方法そして二番目は?
は、Calender クラスを使用することです。 Calender クラスは、実際に使用される特定のサブクラスのオブジェクトを実装する抽象クラスです。オブジェクトの作成プロセスはプログラマにとって透過的であり、getInstance メソッドを使用して作成するだけで済みます。
#33. 使用するクラスやメソッドはありますか?
java.util.regex パッケージには主に次の 3 つのクラスが含まれています:
Pattern クラス: Pattern オブジェクトは正規表現のコンパイルされた表現です。Pattern クラスにはパブリック コンストラクターがありません。 Pattern オブジェクトを作成するには、まずその public static コンパイル済みメソッドを呼び出す必要があります。このメソッドは Pattern オブジェクトを返します。
Matcher クラス: Matcher オブジェクトは、入力文字列をコンパイルして照合するエンジンです。
PatternSyntaxExeption: PatternSyntaxExeption は、正規表現パターンの構文エラーを表す非必須の例外クラスです。
34. コンストラクターとメソッドの間の関係は何ですか?
コンストラクター メソッドの概念: オブジェクトを作成するとき、システムは自動的にコンストラクター メソッドを呼び出します。カスタム コンストラクターがない場合、システムはデフォルトのコンストラクターを呼び出します。コンストラクターはオーバーロードできますが、書き換えることはできません。コンストラクターが異なれば、名前は同じですが、パラメーター リストが異なります。パラメーター リストは、識別の基礎および基準であり、人の名前と同様であり、ID カードは同じであっても、ID カードが異なる場合があります。
コンストラクターをカスタマイズすると、システムは、渡されたパラメーターのタイプと量に基づいて、コンストラクターを自動的に照合してオブジェクトを初期化します。
35. Scanner クラスとは何ですか? Scanner オブジェクトの作成方法
java.util.Scanner は java5 の新機能です。ユーザーからの入力を取得できます。
Scanner sc = new Scanner();
36. 入力文字列を取得するための Scanner クラスの next() メソッドと nextLine() メソッドの違いは何ですか?
next():
(1). 入力は有効な文字が読み取られた後にのみ完了する必要があります;
(2) 入力用の有効な文字の間に空白がある場合、入力は次のようになります。自動的に削除;
(3) 有効な文字を入力した場合のみ、後で入力したスペースを区切り文字または終端文字として使用できます;
(4) Next() はスペースを含む文字列を取得できません;
nextLine ( ):
(1)、終了文字として Enter を使用します。つまり、復帰の前にすべての文字を入力します。
(2)、空白を取得できます。
37、 Java 3 例外の種類は何ですか?
チェック時例外: 最も一般的なチェック例外は、プログラマが予見できないユーザー エラーや問題によって引き起こされる例外です。たとえば、存在しないファイルを開こうとすると例外が発生しますが、コンパイル時にこれらの例外を単純に無視することはできません。
実行時例外: 実行時例外は、プログラマが回避できる例外です。チェック例外とは対照的に、実行時例外はコンパイル時に無視できます。
エラー: エラーは例外ではありませんが、プログラマーの制御が及ばない問題です。通常、エラーはコード内では無視されます。たとえば、スタックがオーバーフローすると、コンパイル時に確認できないエラーが発生します。
Java のすべての例外タイプは、組み込みクラス java.lang.Throwable クラスのサブクラスです。つまり、Throwable は例外クラス階層の最上位に位置します。図に示すように、Throwable クラスの下には Exception と Error という 2 つの例外ブランチがあります。
38. 例外とエラーの違いは何ですか?
すべての例外は Throwable クラスを継承します。これは、すべての例外がオブジェクトであることを意味します。
一般に、例外は 2 つの部分に分類できます。
(1) エラー: プログラムでは処理できないエラーを指し、アプリケーションの実行中に発生する重大なエラーを示します。例えば、jvm の実行中にソケットのプログラミング時にポートが占有されている場合に発生する OutOfMemoryError や、プログラムでは処理できないその他のエラー
(2) 例外: 例外は、実行時例外とコンパイル例外に分けられます。 2 つの主要な例外クラス サブクラス: IOException クラスと RuntimeException クラス
39. 例外のキャッチとは何ですか?
try および catch キーワードを使用して例外をキャッチし、例外が発生する可能性がある場所に try/catch コード ブロックを配置します。 try/catch ブロック内のコードは保護されたコードになります。
40. throws と throw キーワードの違いは何ですか?
メソッドがチェック例外をキャッチしない場合、メソッドは throws キーワードを使用して宣言する必要があります。 throws キーワードはメソッド シグネチャの最後に配置されます。また、 throw を使用して、最新のインスタンス化またはキャッチされたばかりの例外をスローすることもできます。
複数の例外をスローするメソッドをコンマで区切って宣言できます。
41. Java で例外をカスタマイズするにはどうすればよいですか?
独自の例外クラスを作成できます:
(1) すべての例外は Throwable クラスのサブクラスである必要があります;
(2) チェック時例外を作成する場合は、次のものが必要です。 to継承 Exception ;
(3) 実行時例外を記述する必要がある場合は、RuntimeException() 例外
42 を継承する必要があります。相続の特徴は何ですか?
継承とは、サブクラスが親クラスの特性と動作を継承し、サブクラスのオブジェクト (インスタンス) が親クラスのインスタンス フィールドとメソッドを持つか、サブクラスが親クラスのメソッドを継承することです。 , そのため、サブクラスは親クラスの動作と同じ特性を持ちます。
機能:
(1). サブクラスは親クラスの非プライベート属性とメソッドを持ちます;
(2) サブクラスは独自の属性とメソッドを持つことができます。 ;
(3) サブクラスは親クラスのメソッドを実装する独自の方法を持つことができます;
(4) Java の継承は単一継承のみですが、多重継承も可能です。サブクラスは親クラス A のみを継承できます。多重継承は次のとおりです。A は B を継承し、B は C を継承します。したがって、関係によれば、クラス C はクラス B の親クラスであり、B はクラス A の親クラスです。これは機能です。 Java 継承の c との違い。
43. 継承のキーワードは何でしょうか?
継承は、extends と Implements の 2 つのキーワードを使用して実現できます。さらに、すべてのクラスは java.lang.Object を継承します。クラスに継承されたキーワードがない場合、デフォルトで Object クラスを継承します (このクラスは java.lang パッケージ内にあるため、パッケージのインポートは必要ありません)。
super キーワード: super キーワードは、親クラスのメンバーにアクセスするために使用でき、現在のオブジェクトによって継承された親クラスを参照するために使用されます。
このキーワード: それ自体への参照を指します。
final キーワード: クラスを宣言すると、そのクラスを継承できないクラス、つまり最終クラスとして定義したり、サブクラスによってオーバーライドできないメソッドの変更に使用したりできます。
44. 親クラスのコンストラクターの特徴は何ですか?
サブクラスは、親クラスのコンストラクター (コンストラクターおよびコンストラクター (パラメーター付き)) を継承できません。ただし、親クラスのコンストラクターにパラメーターがある場合は、サブクラスのコンストラクターで明示的に宣言する必要があります。親クラスのコンストラクターは、supper キーワードと適切なパラメーター リストを通じて呼び出されます。
親クラスに引数のないコンストラクターがある場合は、それをコンストラクターのコンストラクターで使用します。 subclass supper が親クラスを呼び出す必要はありません。super キーワードが使用されていない場合、システムは自動的に親クラスのパラメーターなしのコンストラクターを呼び出します。
45. オーバーライドとは何ですか、オーバーロードとは何ですか、またそれらの違いは何ですか?
Rewrite: サブクラスは、にアクセスできる親クラスのメソッドの実装処理を書き換えて書き込みます。戻り値やパラメータは変更できません。つまり、シェルは変更できず、コアは変更されません。オーバーライドの利点は、サブクラスが必要に応じて独自の動作をカスタマイズできることです。つまり、サブクラスは必要に応じて親クラスのメソッドを実装できます。オーバーライド メソッドは、チェック例外や、オーバーライド メソッド宣言よりも広範囲の例外をスローできません。
オーバーロード: オーバーロードはクラス内で行われ、メソッド名は同じですが、パラメーターが異なり、戻り値の型は同じである場合もあれば異なる場合もあります。オーバーロードされた各メソッド (またはコンストラクター) には、パラメーターの型の一意のリストが必要です。最も一般的なのはコンストラクターのオーバーロードです。
相違点: メソッドの書き換えとオーバーロードは、Java ポリモーフィズムの異なる表現です。書き換えは、親クラスとサブクラス間のポリモーフィズムの表現です。オーバーロードは、状態の特定の表現であるポリモーフィズムとして理解できます。
(1) メソッドのオーバーロードとは、同じ名前でパラメータが異なる、またはパラメータの数が同じで型や順序が異なる複数のメソッドを定義し、メソッドのオーバーロードとなるクラスです。
(2) メソッドのオーバーライドとは、サブクラス内の親クラスのメソッドと同じ名前で、パラメータの数と型が同じで、戻り値も同じになるメソッドのことを書き換えといいます
(3) 、メソッドのオーバーロードはクラスの多態性の表現であり、メソッドのオーバーライドはサブクラスと親クラスの多態性の表現です。
46、什么是抽象类,如何定义抽象类与方法?
抽象类:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量,成员方法和构造方法的访问方式和普通类不一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用:
親クラスには子クラスのコレクションに共通のメソッドが含まれていますが、親クラス自体が抽象クラスであるため、これらのメソッドは使用できません。 Java では、抽象クラスは継承関係を表します。クラスは 1 つの抽象クラスのみを継承できますが、クラスは複数のインターフェイスを実装できます。
抽象クラスの定義: 抽象クラスを使用して、Java 言語で抽象クラスを定義します。
抽象メソッドを定義する: 特別なメンバー メソッドを含むクラスを設計する場合で、メソッドの具体的な実装がそのサブクラスによって決定される場合は、親クラスでメソッドを宣言できます。方法。 Abstract キーワードは、抽象メソッドの宣言にも使用されます。抽象メソッドにはメソッド名のみが含まれ、メソッド本体は含まれません (抽象メソッドは定義されておらず、メソッド名の直後には中括弧の代わりにセミコロンが続きます)。クラスに抽象メソッドがある場合、それは抽象クラスである必要があります
47. 抽象メソッドを宣言するとどのような結果が生じますか?
(1) クラスに抽象メソッドが含まれる場合、そのクラスは抽象クラスである必要があります。
(2) サブクラスは親クラスの抽象メソッドをオーバーライドするか、それ自体を抽象クラスとして宣言する必要があります。
48. カプセル化とは何ですか?また、その利点は何ですか? Java はどのようにカプセル化されますか?
カプセル化: 抽象関数インターフェイスの実装の詳細をパッケージ化して非表示にする方法を指します。カプセル化は、外部クラスによって定義されたコードによってクラスのコードとデータがランダムにアクセスされるのを防ぐ保護バリアと考えることができます。
利点:
(1) 適切なカプセル化により結合を軽減できる;
(2) クラス内の構造を自由に変更できる;
(3) メンバーを変更できるより正確に制御するため;
(4)、情報と実装の詳細を非表示にする;
カプセル化:
(1) 属性の可視性を変更して、属性へのアクセスを制限します (通常はプライベートに制限されます) );
(2) 各値属性の外部インターフェイスへのパブリック メソッド アクセスを提供します。つまり、私有地へのアクセスのためです。 (通常、これらのメソッドは、開発中のエンティティ クラスなど、ゲッター メソッドおよびセッター メソッドと呼ばれます)
49. インターフェイスとクラスの類似点と相違点は何ですか?
同じ:
(1)、インターフェイスには複数のメソッドを含めることができます;
(2)、インターフェイス ファイルは .java で終わるファイルに保存されます
(3)、インターフェイスバイトコード ファイルは、.class で終わるファイルに保存されます
相違点:
(1) インターフェイスはオブジェクトをインスタンス化できません (抽象クラスと同じ)
(2) インターフェイスには構築メソッドがありません;
(3) すべてインターフェイス内のメソッドは抽象メソッドである必要があります;
(4) インターフェイスにはメンバー変数を含めることはできません;
(5) インターフェイスは継承できません (クラスによって実装されます);
( 6). インターフェイスは複数のメソッドをサポートします継承;
50. 抽象クラスとインターフェイスの違いは何ですか?
(1) 抽象クラスのメソッドはメソッド本体を持つことができます。つまり、抽象クラスはメソッドの特定の機能を実装できますが、インターフェイスのメソッドは実装できません。
(2). 抽象クラスのメンバー変数はさまざまな型にすることができますが、インターフェイスのメンバー変数は public static Final 型のみにすることができます;
(3) インターフェイスには静的コード ブロックと静的メソッド (メソッドは変更されています) を含めることはできません静的)、抽象クラスは静的コード ブロックと静的メソッドを持つことができます
(4). クラスは 1 つの抽象クラスのみを継承でき、クラスは複数のインターフェイスを実装できます。
インターフェイスは抽象的です。インターフェイスを宣言するときに、abstract キーワードを使用する必要はありません。インターフェイス内の各メソッドも暗黙的に抽象であるため、宣言時に抽象を追加する必要はありません。インターフェイス内のメソッド インターフェイスには、インターフェイス内のメソッドを実装するためのインターフェイスを実装するクラスがあります。
関連する推奨事項:Java の使用を開始する
以上がJavaインターンの面接の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。