avaの基礎知識まとめ
独立したオリジナル プログラムでは、公開クラスは 1 つだけ存在できますが、非公開クラスは多数存在する可能性があります。
さらに、Java プログラム内のクラスがパブリックでない場合、Java プログラムのファイル名には任意の名前を付けることができます。
ドキュメントのコメントは 1 つのスラッシュとそれに続く 2 つの星 (/**)、その後に星、その後に 1 つのスラッシュ (*/) で終わります。この方法でコメントされたコンテンツは、プログラムの正式なドキュメントとして解釈され、プログラムの階層とメソッドを説明するために javadoc などのツールによって生成されるドキュメントに含めることができます。
Javaは整数定数のデータ型をint型として扱うため、プログラム内で2147483647を超える定数を使用するとコンパイル時にエラーが発生します。この問題を解決するには、整数の後に大文字を追加します。定数「L」を使用できます。これは、定数がlong型の整数定数であることを意味します。
最大値のコードは MAX_VALUE、最小値は MIN_VALUE です。特定の型の最大値または最小値を取得したい場合は、これらのコードの前に、それらが属するクラスの完全な名前を追加するだけです。
f ページ送り\ バックスラッシュ
b スペース 1 つ戻る' シングルクオート
r return "ダブルクォーテーション
データ型変数はプログラム内で定義されています。別のデータ型を使用して表現したい場合は、Java
が自動的に実行します以下の条件に該当する場合にデータ型変換を行います。
1. 変換前のデータ型と変換後の型に互換性がある
2. 変換後のデータ型の表現範囲が変換前の型より大きい
値の場合変数の表現可能な範囲外がこの変数に割り当てられる場合、この変換は縮小変換と呼ばれます。変換プロセス中にデータの精度が失われる可能性があるため、現時点では Java はこれらのタイプの変換を自動的には実行しません。必須の変換が必要です。
+3; // 正の 3
~a を意味します。 //
Priority 演算子クラスの結合性を意味します。 () 括弧演算子 左から右へ
1 []左から右への演算子
2 !、+ (正符号)、-(負符号) 右から左への単項演算子
2 ~ 右から左へのビット論理演算子
2 ++、 -- 右から左へのインクリメントおよびデクリメント演算子left
3 *、/、% 左から右の算術演算子
4 +、- 左から右の算術演算子
5 <<, > > 左から右のビット左シフト演算子
6 > ;, >=、<、<= 関係演算子は左から右へ
7 ==、!= 関係演算子は左から右へ
8 & (ビット演算子 AND) ビット論理演算子は左から右へ
9 ^ (ビット演算子記号 XOR) 左から右のビット論理演算子
10 | (ビット演算子記号 OR) 左から右のビット論理演算子 右
11 && 左から右の論理演算子
13 ?: 右から左への条件演算子
14 = 右から左への代入演算子
1、占有バイト数が少ない型は、より多くのバイトを占める型に変換されます
2。 . int 型は float 型に変換されます。 4. 式内のオペランドの型が double の場合、他のオペランドの数値も double 型に変換されます。
switch ステートメントで選択できる値は文字または定数のみです。
1. for ループに入るときに、ループの実行を継続するかどうかを確認します。判定条件の値が真(true)
の場合は、ループ本体内のステートメントを実行し続けます。条件値が偽(false)の場合は、ループを抜けて判定します。 3. ループ本体内のステートメントが実行された後、ループ制御変数は、増加または減少の要件に従ってループ制御変数の値を変更し、ステップ 2 に戻り、かどうかを再判断します。ループの実行を続行します。
System.arrayCopy(source,0,dest,0,x): ステートメントの意味は次のとおりです: 添え字 0 から始まるソース配列の x 要素を、ターゲット配列の添え字 0 に対応する位置からコピーします。ターゲットアレイへのアクセスを開始します。
Arrays.sort(配列名)は、配列をソートする操作です
Javaでは、通常のプログラミング言語とは異なり、2次元配列の各行の要素の数を変えることができます。
「匿名オブジェクト」は、その名前が示すように、明示的な宣言のないオブジェクトです。読者は、
を一度だけ使用される、つまり特定のオブジェクト名で参照されないオブジェクトとして単純に理解することもできます。
オブジェクトを比較するには、「==」演算子とequals()メソッドの2つの方法があります。「==」演算子は、2つのオブジェクトのメモリアドレス値が等しいかどうかを比較するために使用されます。 quals() このメソッドは、2 つのオブジェクトの内容が一致しているかどうかを比較するために使用されます。
これは現在のオブジェクトを表し、
いわゆる現在のオブジェクトはクラス内のメソッドまたはプロパティを呼び出すオブジェクトを指します。
特定のコンストラクター メソッドを使用してプログラム内の別のコンストラクター メソッドを呼び出したい場合は、これを使用してそれを実現できます。具体的な
呼び出し形式は次のとおりです:
this() ;
クラス内のすべてのメソッドのうち、最初に呼び出されるのはコンストラクターのみであるため、これを使用したコンストラクターの呼び出しは、コンストラクターの最初の行にのみ配置する必要があり、メソッド本体に含まれていない静的コード ブロックを使用できます。クラスがロードされると、静的コード ブロックが実行されます。静的コード ブロックは、クラス属性を初期化するためによく使用されます。この部分をよりよく理解するには、他の Java ビデオ チュートリアルを参照してください。
コンストラクターはプライベートですが、必ずしもこのクラスがインスタンス化されたオブジェクトを生成できないことを意味するわけではなく、インスタンス化されたオブジェクトが生成される場所が変更された、つまり、インスタンス化されたオブジェクトがこのクラスでのみ生成されることを意味します。
宣言すると、内部クラスはプログラムの構造を破壊するため、開発中に内部クラスを使用することは推奨されないことがよくあります。
static を使用して内部クラスを宣言することもできます。static で宣言された内部クラスは外部クラスになりますが、static で宣言された内部クラスは非静的外部クラス属性にアクセスできません。
内部クラスが public として宣言されている限り、オブジェクトを作成することで外部クラスの外部から内部クラスを呼び出すこともできます。
できる
Java ビデオの最初の部分で述べたように、Java は 3 つの形式のアノテーションをサポートしています。最初の 2 つは // と /*… */ です。
3 番目の方法は、ドキュメント コメントと呼ばれます。 「/**"皮切りに"*/」フラグで終わります。ドキュメント コメントは、
プログラム情報をプログラムに埋め込む機能を提供します。開発者は、javadoc ツールを使用して情報を抽出し、HTML ファイルに変換できます。
サブクラス オブジェクトをインスタンス化するとき、デフォルトでは、最初に親クラスのコンストラクター メソッドを呼び出し、次に
このクラスの対応するコンストラクター メソッドを呼び出します。
super を使用して親クラスのコンストラクターを呼び出す場合は、プログラムの最初の行にのみ配置できます。
抽象クラスでコンストラクターメソッドを宣言した後、
サブクラスで明示的に呼び出す必要があります。
クラスが別のクラスを継承することを明確に示すために extends キーワードを使用しない場合、
このクラスは Object クラスを継承します。デフォルトでは。
インターフェイス内のデータ メンバーは初期化する必要があり、すべてのデータ メンバーは定数です。
2. インターフェース内のすべてのメソッドは抽象として宣言する必要があります。つまり、インターフェースは抽象クラスのような一般メソッドを維持できませんが、すべて「抽象メソッド」でなければなりません。
インターフェイスには、一般的なクラスと同様にデータ メンバーとメソッドがありますが、データ メンバーには初期値を割り当てる必要があり、
この値はもう変更できません
インターフェイスは、Java が多重継承を実装するためのクラスのみのメカニズムです。 1 つの親クラスは継承できますが、クラスが複数の抽象メソッドを継承する必要がある場合、実装は明らかに不可能であるため、インターフェイスの概念が登場しました。クラスは親クラスを 1 つだけ継承できますが、複数のインターフェイスを実装できます。
同様に、インターフェースの拡張 (または継承) もキーワード extends を通じて実装されます。興味深いことに、
インターフェイスは複数のインターフェイスを継承できます
親クラスは、独自のクラスを使用して独自のオブジェクトをインスタンス化します
が、それ自体のサブクラスが誰であるかを知らないため、変換中にエラーが確実に発生します
instanceofを使用して次のことを行うことができますクラスがインターフェイスを実装しているかどうかを判断することも、それを使用してインスタンス オブジェクトがクラスに属しているかどうかを判断することもできます。
前に述べたように、Object はすべてのクラスの親クラスであり、toString() メソッドをオーバーライドする必要があります。
読者が JDK マニュアルを確認すると、Object クラスに平等メソッドがあることがわかります。メソッドが使用されています
オブジェクトが等しいかどうかを比較し、このメソッドをオーバーライドする必要があります
インターフェースにはコンストラクター メソッドがないため、インターフェースを直接インスタンス化することはできません
が、インターフェースのサブクラスを通じて実装できます
オブジェクト多態性の概念に基づいてインスタンス化
例外は、java.lang.Exception クラスと java.lang.Error クラスの 2 つの主要なカテゴリに分類できます。どちらのクラスも java.lang.Throwable クラスから
を継承します。
throws を使用してクラス メソッドで例外をスローする場合、
呼び出される場所で try-catch を使用して例外を明示的にキャッチする必要があります。
jar コマンドは Java で提供される非常に便利なコマンドで、多数のクラス (.class ファイル)
を圧縮し、.jar ファイルとして保存するために使用できます。
class class name extends Thread // Thread クラスからサブクラスを拡張します
{
modifier run(){ // Thread クラスの run() メソッドをオーバーライドします
// スレッドによって処理されるプログラム
}
}
start()で開始できます
Runnableの実装を通じて実装することもできます
Runnableインターフェースにはstart()メソッドがないため、Runnableインターフェースを実装するクラスもスレッドでstart()メソッドを使用する必要があります複数のスレッドを開始するクラス。
Thread クラスは Runnable インターフェースを実装します。これは、Thread クラスが
Runnable インターフェースのサブクラスでもあることを意味します。
クラスが Thread クラスを継承した後は、このクラスのオブジェクトが start() メソッドを何度呼び出しても、実行されるスレッドは 1 つだけになります。
new Thread(t).start();//ここで、 t は Runnable インターフェースを実装するクラスです
複数の連続した呼び出しの後、データを共有する複数のスレッドが生成されます
どのスレッドにも通常 5 つの状態があります。 、作成、準備、実行、ブロック、終了します。
2 つの Thread オブジェクトに同じ名前を付けることができますが、わかりやすくするためにこれは避けてください。
プログラムがスレッドの名前を指定しない場合、システムは自動的にスレッドに名前を割り当てます。
スレッドが開始済みか、まだ開始中かどうかをテストするには、isAlive() メソッドを使用できます。
スレッド オブジェクト
が開始する (start() メソッドを呼び出す) 前に setDaemon(true) メソッドを呼び出す場合、このスレッドはバックグラウンド スレッドになります。
プロセス内でバックグラウンドスレッドのみが実行されている場合、プロセスは終了します。
join() メソッドは、特定のスレッドを強制的に実行する (実行後に次のスレッドを強制的に実行する) ために使用されます。
Thread クラスに sleep(long millis) という名前の静的メソッドが見つかります。 このメソッドは、
Thread sleep で使用されます。 。
スレッドの実行中、別のスレッドは対応する Thread オブジェクトの Interrupt() メソッドを呼び出して
中断することができます。
Thread オブジェクトを使用して isInterrupted() メソッドを呼び出し、各スレッドの割り込みステータスを確認することもできます。
割り込み状態がマークされると、スレッドが割り込み可能なブロッキング (一部の割り込みは割り込みできない)
に達すると、例外をスローして現在の操作を終了し、状態をリセットします。
synchronized(object)
{
同期する必要があるコード;
}
同期モニターは、一意で定数である限り、一般に任意のオブジェクトによって動作できることに注意してください。
通常はこれが推奨されます同時にアクセスできる共有を使用する場合 リソースは同期モニターとして機能します。
コードブロックの同期に加えて、同期が必要な関数の定義の前に synchronized キーワードを追加するだけで関数を同期することもできます。
wait() メソッドは、現在のスレッドを待機させ、シンクロナイザーのロックを解放します。
Notice() メソッドは、シンクロナイザーで待機している単一のスレッドをウェイクアップします。ウェイクアップの選択は任意です。
notifyAll() は待機中のすべてのスレッドを起動します。
サスペンドメソッド、レジュームメソッド、ストップメソッドなど、スレッドのライフサイクルを制御する方法はたくさんあります。
stop はデッドロックの発生を回避できますが、他の欠点もあります。スレッドが共有データセグメントを操作していて、操作が完了する前に「停止」されると、データが不完全になります。
図 9-11 スレッドのライフサイクル
run メソッドでループ条件を制御してスレッドを終了する方法は、読者に推奨
されており、実際に最もよく使用される方法でもあります。
StringBuffer クラスは、内容を変更できる文字列に使用され、他のさまざまなタイプのデータを文字列に追加および挿入でき、文字列内の元の内容を転置することもできます。
実際の開発において、文字列の内容を頻繁に変更する必要がある場合は、StringBufferクラスの実装を検討する必要があります。内容を変更できるため、Stringクラスよりも実行パフォーマンスが高くなります。 。
exit(int status) メソッドを使用して仮想マシンを事前に終了します。例外が発生し、仮想マシンの実行を終了する場合は、パラメータとしてゼロ以外の値を渡します。
CurrentTimeMillis メソッドは、1970 年 1 月 1 日の 0:00:00 から現在までの時間をミリ秒単位で返します。これは、long 型の大きな値です。
Runtime クラスは Java コマンド自体の実行プロセスをカプセル化し、そのメソッドの多くはシステム
のメソッドと重複します。 Runtime インスタンスを直接作成することはできませんが、静的メソッド Runtime.getRuntime を通じて実行中の Runtime オブジェクトへの参照を取得できます。
getInputStream() メソッドは入力ストリームを取得できます。クライアントの Socket オブジェクトの getInputStream()
メソッドによって取得される入力ストリームは、実際にはサーバーから送り返されたデータ ストリームです。 getOutputStream() メソッドは、
出力ストリームを取得します。クライアント Socket オブジェクトの getOutputStream() メソッドによって返される出力ストリームは、
サーバーに送信されるデータ ストリームです。
ソケットには、コネクション指向とコネクションレスという 2 つの主な動作モードがあります。
コネクションレス操作ではデータグラムプロトコルを使用します。データグラムは、この配信に関するすべての情報を含む独立した単位です。
接続指向の操作では TCP プロトコルを使用します。このモードのソケットは、データを送信する前に宛先ソケットとの接続を確立する必要があります。接続が確立されると、ソケットはストリーム インターフェイスを使用できるようになります
上記は Java の基礎知識の簡単な要約です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。