オブジェクト指向の特徴とは何ですか?
いわゆるカプセル化とは、客観的なものをカプセル化することです。抽象オブジェクト クラスと呼ばれ、そのクラスでは、信頼できるクラスまたはオブジェクトのみが独自のデータとメソッドを操作できるようにし、信頼できないクラスまたはオブジェクトからは情報を隠すことができます。カプセル化はオブジェクト指向の特徴の 1 つであり、オブジェクトとクラスの概念の主な特徴です。 (推奨される学習: Java の一般的な面接の質問 )
継承とは、サブクラスが親クラスの属性とメソッドを取得することを意味します。たとえば、犬が動物の一種である場合、その動物の特性を受け継いでいる、または犬はその動物のサブクラスであるとも言えます。
ポリモーフィズムとは、メソッドの名前は 1 つだけですが、多くの形式を持つことができることを意味します。つまり、プログラム内で同じ名前の複数のメソッドを定義できます。これは、「1 つのインターフェイス、複数のメソッド」と表現されます。 "。メソッド パラメーターと型参照を渡すことができます。
5 つの原則: 単一責任の原則 SRP オープンおよびクローズの原則 OCP 置換の原則 LSP 依存関係の原則 DIP インターフェイス分離の原則 ISP
メンバー変数とローカル変数 違い
#* A: クラス内の位置の違い# * メンバー変数: クラス内のメソッドの外
* ローカル変数: メソッド定義またはメソッド宣言内
* B: メモリ内の別の場所* メンバー変数: ヒープ メモリ内 (メンバー変数)オブジェクトに属し、オブジェクトはヒープ メモリに置かれます)
* ローカル変数: スタック メモリ内 (ローカル変数はメソッドに属し、メソッドはスタック メモリにプッシュされます)
* C: 異なるライフサイクル* メンバー変数: オブジェクトの作成時に存在し、オブジェクトの消滅時に消滅します
# * ローカル変数: メソッドの呼び出し時に存在し、メソッドの呼び出し時に消滅します##* D: 異なる初期化値
* メンバー変数: デフォルトの初期化値があります * ローカル変数: デフォルトの初期化値はありません。定義する必要があります。割り当てられ、使用できるようになります。
#静的変数とメンバー変数の違い
* 静的変数はクラス変数とも呼ばれ、メンバー変数はオブジェクト変数とも呼ばれます# #* A: 所有権の違い
* 静的変数はクラスに属するため、クラス変数とも呼ばれます
* メンバー変数はオブジェクトに属するため、インスタンス変数とも呼ばれます (オブジェクト変数)
* B: メモリ内の別の場所* 静的変数はメソッド領域の静的領域に格納されます
*メンバ変数はヒープメモリに格納されます
* C:メモリ出現時間が異なります※静的変数はクラスロードと同時にロードされ、クラス終了とともに消滅します消える
* メンバー変数はオブジェクトの後に続きます。オブジェクトの作成時に存在し、オブジェクトが消えると消えます。
* D: 異なる呼び出し* 静的変数はクラス名またはオブジェクトを通じて呼び出すことができます
* メンバー変数はオブジェクト名を通じてのみ呼び出すことができます
これとスーパー # の違いと応用## A: this と super は何の略ですか
* this: 現在のオブジェクトの参照を表します。誰が私に電話をかけても、私はその人の代理になります
* super: 現在のオブジェクトの親クラスの参照を表します* B: this と super の使用の違い
* a: 呼び出し元のメンバー変数 * this. メンバ変数はこのクラスまたは親クラスのメンバ変数を呼び出します メンバ変数* super. メンバ変数は親クラスのメンバ変数を呼び出します
* b: コンストラクタ メソッドを呼び出します * this(...) はこのクラスのコンストラクタ メソッドを呼び出します * super(...) は親クラス ## のコンストラクタ メソッドを呼び出します# * c: メンバ メソッドを呼び出します
* this. メンバ メソッドはこのクラスのメンバ メソッドを呼び出しますが、親クラスのメソッドを呼び出すこともできます
*super.メンバーメソッドは親クラスのメンバーメソッドを呼び出します
ソートの方法は何ですか?ソート方法を列挙してください: 挿入ソート (直接挿入ソート、ヒル ソート)、交換ソート (バブル ソート、クイック ソート)、選択ソート (直接選択ソート、ヒープ ソート)、マージ ソート、分布ソート(ボックスソート、基数ソート)
クイックソートの疑似コード。
String、StringBuffer、StringBuilder の違い。
String の長さは不変です;
StringBuffer の長さは可変です。文字列内のコンテンツを頻繁に操作する場合、特にコンテンツが変更されている場合, StringBuffer を使用します。最終的に String が必要な場合は、StringBuffer の toString() メソッドを使用します。スレッド セーフ。StringBuilder は JDK 5 から開始され、単一スレッドで使用するための同等のメソッドを StringBuffer クラスに追加します。 StringBuilder クラスはすべて同じ操作をサポートしますが、同期を実行しないため高速であるため、通常は StringBuilder クラスを優先して使用する必要があります。
オーバーロードとオーバーライドの違い。オーバーロードされたメソッドは戻り値の型を変更できますか?
回答: メソッドのオーバーライド オーバーライドとオーバーロード オーバーロードは、Java 多態性の異なる表現です。
オーバーライドは親クラスとサブクラス間の多態性の現れであり、オーバーロードはクラス内の多態性の現れです。サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメータを持つ場合、そのメソッドはオーバーライドされていると言います。
サブクラスのオブジェクトがこのメソッドを使用すると、サブクラスの定義が呼び出されるため、親クラスの定義が「シールド」されているようです。クラス内に同じ名前の複数のメソッドが定義されており、それらのメソッドのパラメーターの数または型が異なる場合、それをメソッドのオーバーロードと呼びます。オーバーロードされたメソッドは戻り値の型を変更できます。
final とfinally の違いは何ですか?
答え: Final: 修飾子 (キーワード); クラスが Final と宣言されている場合、それはそれを意味します。派生した新しいサブクラスは親クラスとして継承できないため、クラスをabstractとfinalの両方で宣言することはできません。変数またはメソッドをfinalとして宣言すると、使用中に変更されないことが保証されます。finalとして宣言された変数には、次の場合に初期値を与える必要があります。宣言されており、後続の参照でのみ読み取ることができ、変更することはできません。また、final として宣言されたメソッドは使用のみが可能で、オーバーロードすることはできません。
finally: 例外処理中にクリーンアップ操作を実行するためのfinally ブロックを提供します。例外がスローされた場合、一致する catch 句が実行され、その後、制御がfinally ブロック (存在する場合) に入ります。
いくつかの一般的な動作異常。
java.lang.nullpointerException (null ポインタ例外)
java.lang.classnotfoundException (指定されたクラスが存在しません)
java.lang.arithmeticException (数学的演算例外)
java.lang.arrayindexoutofboundsException (配列添字の境界外例外)
IOException (入力および出力例外)
配列演算に関する 2 つの一般的な問題は範囲外で空のポインタです。
* A:Case のデモンストレーション
* a:ArrayIndexOutOfBoundsException: 配列インデックスが範囲外の例外です。
* 理由: 非-存在するインデックス。
* b: NullPointerException: Null ポインター例外
* 理由: 配列はヒープ メモリを指していません。また、要素にアクセスするために配列名も使用します。
* int[] arr = {1,2,3}; * arr = null; * System.out.println(arr[0]);
JAVA 言語は例外をどのように処理しますか?キーワード throws、throw、try、catch、finally は何を意味しますか? try ブロックで例外をスローできますか?
回答: Java はオブジェクト指向メソッドを通じて例外を処理し、さまざまな例外を分類し、優れたインターフェイスを提供します。
Java では、各例外はオブジェクトであり、Throwable クラスまたは他のサブクラスのインスタンスです。メソッド内で例外が発生すると、例外オブジェクトがスローされます。このオブジェクトには例外情報が含まれており、このオブジェクトを呼び出すメソッドは例外をキャッチして処理できます。
Java の例外処理は、try、catch、throw、throws、finally の 5 つのキーワードによって実装されます。一般に、try はプログラムの実行に使用されます。例外が発生すると、システムは例外をスローします。このとき、そのタイプによって例外をキャッチすることも、最終的にはデフォルトのハンドラによってキャッチすることもできます。
すべての「例外」を防ぐプログラムを指定するには、try を使用します。 try プログラムの直後に、キャッチする「例外」の種類を指定するための catch 句を含める必要があります。
throw ステートメントは、明示的に「例外」をスローするために使用されます。
throws は、メンバー関数がスローする可能性のあるさまざまな「例外」を示すために使用されます。
最終的には、どのような「例外」が発生しても、コードの一部が確実に実行されるようにします。
メンバー関数呼び出しの外側に try ステートメントを記述し、メンバー関数内に別の try ステートメントを記述して他のコードを保護することができます。 try ステートメントが検出されると、すべての try ステートメントが完了するまで「例外」フレームがスタックに置かれます。
次のレベルの try ステートメントが特定の「例外」を処理しない場合、スタックは、この「例外」を処理する try ステートメントが見つかるまで拡張されます。
サーバーは、ユーザーが送信したフォーム データを受信するときに、サーブレットの doGet() メソッドまたは doPost() メソッドを呼び出しますか?
回答: HTML の