Java の基本 FAQ_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:34:06
オリジナル
926 人が閲覧しました

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++ と比較して)。
例:

outer :

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 //これはオプションです
{
//例外が発生するかどうかに関係なく、このコードは実行されます
}

33 最終と最終的にはどう違いますか?
答え: 決勝については 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
{
...
}

47 メソッド内のオブジェクトの値を変更しましたが、終了しましたメソッド 後で、このオブジェクトの値が変わっていないことがわかりました。
回答: 受信パラメータを新しいオブジェクトに再割り当てした可能性が非常に高いです。たとえば、次のコードはこのエラーを引き起こします:

public void fun1(A a) //a は外部パラメータを指しています。物体。
{
a = new A(); //a は新しいオブジェクトを指し、外部オブジェクトから切り離されます。 a を出力変数として使用したい場合は、この文を書かないでください。
a.setAttr(attr);//新しいオブジェクトの値が変更され、外部オブジェクトは変更されません。
}


これは基本型でも起こります。例:

public void fun2(int a)
{
a = 10;//このメソッドにのみ影響し、外部変数は変更されません。
}



6. java.util

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508516.html技術記事 Java の基本 FAQ Java の基本 FAQ 3. I/O 第 18 章 dir /p/w などの起動パラメータを Java プログラムに追加するにはどうすればよいですか? 回答: public static void main(String[] args) を覚えていますか?ここの引数は...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート