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 //これはオプションです
{
//例外が発生するかどうかに関係なく、このコードは実行されます
}
public void meth(A a)
{
B b = (B)a;
}
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;//このメソッドにのみ影響し、外部変数は変更されません。
}