Java の基本 FAQ
Java の基本 FAQ
3. I/O 章
18 dir /p/w などの起動パラメータを Java プログラムに追加するにはどうすればよいですか?
答え: public static void main(String[] args) を覚えていますか?ここの引数は起動パラメータです。
実行時に java package1.class1 -arg1 -arg2 と入力すると、args に 2 つの文字列があり、1 つは arg1 で、もう 1 つは arg2 です。
19 キーボードから int/double/string を入力するにはどうすればよいですか?
答え: Java の I/O 操作は C++ よりも少し複雑です。キーボードから入力したい場合のサンプルコードは以下の通りです:
BufferedReader cin = new BufferedReader( new InputStreamReader( System.in ) )
;
String s = cin.readLine();
このようにして文字列を取得します。数値が必要な場合は次を追加します:
int n = Integer.parseInt( s );
または
double d = Double.parseDouble( s ) ;
20 int/double/string を出力するにはどうすればよいですか?
答え: プログラムの先頭に次のように記述します:
PrintWriter cout = new PrintWriter( System.out );
必要に応じて、次のように記述します:
cout.print(n);
または
cout.println("hello")
などなど。
21 一部の書籍では、入力と出力に System.in と System.out を直接使用していることがわかりました。これはあなたの書籍よりもはるかに単純です。
回答: Java は 2 バイトの Unicode を使用します。 System.in と System.out はシングルバイト ストリームです。中国語などの全角テキストを入出力したい場合は、著者の方法を使用してください。
4. キーワード
25
Javaでマクロを定義するには? 回答: マクロ置換では型の安全性が保証できないため、Java はマクロをサポートしません。定数を定義する必要がある場合は、それをクラスの静的な最終メンバーとして定義できます。 26 と 30 を参照してください。
26 Const は Java では使用できません。 答え: Final キーワードを使用できます。たとえば、final int m = 9 となります。 Final 宣言された変数を再度代入することはできません。また、メソッドまたはクラスを宣言するために使用することもできます。final として宣言されたメソッドまたはクラスは継承できません。なお、constはJavaの拡張用の予約語です。
27 JavaではGotoは使えません。 答え: プロセス指向言語であっても、goto をまったく使用しなくても実行できます。プログラムの流れが適切かどうかを確認してください。マルチレベルのループから素早く抜け出す必要がある場合、Java には機能が強化された Break および continue 機能があります (C++ と比較して)。
例:
while( ... )
{
inner :
for( ... )
{
... 内側を中断; ...
...
}
}
const と同様、goto も Java の拡張用の予約語です。
28 Javaで演算子をオーバーロードすることは可能ですか?
答え: いいえ。文字列の + 記号は、唯一の組み込みのオーバーロード演算子です。インターフェイスとメソッドを定義することで、同様の機能を実現できます。
29 新しいオブジェクトを作成しましたが、削除できません。
回答: Java には、いわゆるガーバージ コレクターと呼ばれる自動メモリ リサイクル メカニズムがあります。ポインタ エラーについて心配する必要はもうありません。
30 main メソッドを public static として宣言する必要がある理由を知りたいです。
回答: public として宣言する目的は、このメソッドを外部から呼び出せるようにするためです。詳細については、オブジェクト指向の第 37 章を参照してください。
静的とは、メンバー変数/メソッドをインスタンスではなくクラスに関連付けることです。クラス A のクラス B の静的メンバーを呼び出すには、オブジェクトを作成せずに、このクラスの静的メンバーを直接使用できます。B.staticMember という記述メソッドを使用できます。クラスの静的メンバー変数は一意であり、クラスのすべてのオブジェクトによって共有されることに注意してください。
31 投げる と 投げる はどう違いますか?
答え: throws は、メソッドがスローする例外を宣言するために使用されます。 Throw は、メソッド本体で例外をスローする実際のアクションです。メソッドで例外をスローしたが、メソッド宣言でそれを宣言しなかった場合、コンパイラはエラーを報告します。 Error および RuntimeException のサブクラスは例外であり、特に宣言する必要がないことに注意してください。
32 アノマリーとは何ですか?
回答: 例外は Ada 言語で初めて導入され、プログラム内で動的にエラーを処理し、回復するために使用されます。メソッド内の基になる例外をインターセプトして処理することも、処理のために上位レベルのモジュールにスローすることもできます。独自の例外をスローして、何か異常なことが発生したことを示すこともできます。一般的なインターセプト処理コードは次のとおりです:
try
{
... //以下は例外が発生する可能性のあるコードです
... //例外がスローされ、実行フローが中断され、インターセプトコードに戻ります。
...
}
catch(Exception1 e) //Exception1がException2のサブクラスであり、特別な処理が必要な場合は、それを最初にランク付けする必要があります
{
//Exception1が発生すると、このセクションによってインターセプトされます
}
catch(Exception2 e)
{
//Exception2が発生した場合、このセクションによってインターセプトされます
}
finally //これはオプションです
{
//例外が発生するかどうかに関係なく、このコードは実行されます
}
答え: 決勝については 26 をご覧ください。 Final は例外メカニズムに使用されます。32 を参照してください。
5. オブジェクト指向の章
34 extends とimplements の違いは何ですか?
回答: Extends はクラスを (単独で) 継承するために使用され、implements はインターフェイスを実装するために使用されます。このインターフェイスは、多重継承の機能を部分的に提供するために導入されました。
インターフェース内でメソッドヘッダーのみを宣言し、メソッド本体は実装クラスに任せます。これらの実装されたクラスのインスタンスは、完全にインターフェイスのインスタンスとして扱うことができます。興味深いのは、インターフェイス間の関係を extends (単一継承) として宣言することもできることです。
35 Javaで多重継承を実装するにはどうすればよいですか?
回答: Java は明示的な多重継承をサポートしていません。 C++ などの明示的な多重継承言語では、サブクラスが祖先の仮想基本クラス コンストラクターを宣言することを強制されるという問題が発生し、オブジェクト指向のカプセル化原則に違反するためです。 Java はインターフェースを提供し、多重継承を部分的に実装するためのキーワードを実装します。 34を参照してください。
36 抽象的とは何ですか?
答え: 抽象として宣言されたメソッドはメソッド本体を与える必要はなく、実装はサブクラスに任せます。また、クラスに抽象メソッドがある場合は、そのクラスも抽象として宣言する必要があります。抽象宣言されたクラスはインスタンス化できませんが、サブクラスで使用するコンストラクターを定義できます。
37 パブリック、プロテクト、プライベートの違いは何ですか?
回答: これらのキーワードは、クラスとメンバーの可視性を宣言するために使用されます。
パブリックメンバーはどのクラスからもアクセスでき、
保護されたメンバーは自分自身とサブクラスに制限され、
プライベートメンバーは自分自身に制限されます。
Java は、一般に package private と呼ばれる 4 番目のタイプのデフォルトの可視性も提供します。 public、protected、または private 修飾子がない場合、メンバーは同じパッケージ内に表示されます。クラスは public またはデフォルトで変更できます。
38 オーバーライドとオーバーロードの違いは何ですか?
答え: オーバーライドは、親クラスとサブクラスの間のメソッドの継承関係を指します。これらのメソッドは同じ名前とパラメーターの型を持ちます。オーバーロードは、同じクラス (サブクラスまたは親クラスで定義できる) 内の異なるメソッド間の関係を指します。これらのメソッドは同じ名前と異なるパラメーターの型を持ちます。
39 メソッドを継承しましたが、親クラスで定義されたメソッドを呼び出したいと考えています。
回答: サブクラス内の親クラスのメソッドを呼び出すには、super.xxx() を使用します。
40 サブクラスのコンストラクター内で親クラスのコンストラクターを呼び出したいのですが、どうすればよいでしょうか?
答え: サブクラス コンストラクターの最初の行で super(...) を呼び出すだけです。
41 同じクラス内に複数のコンストラクターを定義しており、あるコンストラクターを別のコンストラクターから呼び出したいと考えています。
答え: コンストラクターの最初の行で this(...) を呼び出します。
42 コンストラクターを定義しないとどうなりますか?
回答: パラメーターのないコンストラクターを自動的に取得します。
43 パラメーターなしのコンストラクターへの呼び出しが失敗しました。
回答: 少なくとも 1 つのコンストラクターを定義すると、自動的に提供されるパラメーターなしのコンストラクターはなくなります。パラメーターなしのコンストラクターを明示的に定義する必要があります。
44 C++ と同様のデストラクターを定義するにはどうすればよいですか?
回答: void Finalize() メソッドを提供します。このメソッドは、ガーバージ コレクターがオブジェクトをリサイクルするときに呼び出されます。実際、オブジェクトがいつリサイクルされるかを知るのは難しいことに注意してください。著者は、このメソッドを提供する必要性をまったく感じませんでした。
45 親クラスのオブジェクトをサブクラスのオブジェクトに変換したい場合はどうすればよいですか?
回答: 強制的な型変換。
public void meth(A a)
{
B b = (B)a;
}
aが実際にはBのインスタンスではない場合、ClassCastExceptionがスローされます。したがって、a が実際に B のインスタンスであることを確認してください。
46 実際のところ、aがBのインスタンスであるかどうかはわかりませんが、状況に応じて処理できますか?
回答:instanceof 演算子を使用できます。例えば
if( ainstanceof B )
{
B b = (B)a;
}
else
{
...
}
回答: 受信パラメータを新しいオブジェクトに再割り当てした可能性が非常に高いです。たとえば、次のコードはこのエラーを引き起こします:
public void fun1(A a) //a は外部パラメータを指しています。物体。
{
a = new A(); //a は新しいオブジェクトを指し、外部オブジェクトから切り離されます。 a を出力変数として使用したい場合は、この文を書かないでください。
a.setAttr(attr);//新しいオブジェクトの値が変更され、外部オブジェクトは変更されません。
}
これは基本型でも起こります。例:
public void fun2(int a)
{
a = 10;//このメソッドにのみ影響し、外部変数は変更されません。
}
6. java.util

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
