序文
我々はすべて知っているように、プログラマはので、私はそこに、「C ++での21日間の熟達」であるとこの本を「はmysql-は、足にライブラリから削除」、より「高度な」言語としてJavaが後方にすべきではない、ので、すぐに新しい知識を習得する必要があります彼は勉強したい人はすぐに(斜め手)は、Javaを学習するように「ポール・Javaのクラッシュコース」を書きました。
この記事は、おそらく3つの部分に分かれ:
- プログラミングの基礎
- オブジェクト指向の考え方
- データの種類
- 演算子
- プロセス制御
- Java言語の機能
- Javaの高度な機能
テキストそのままこの記事を理解してください、我々だけではない概念的なリファレンスとして、Javaプログラミングを理解し、学びます
この記事では、書評は後に「Javaプログラミングのアイデア」を読んで
オブジェクト指向の考え方
オブジェクト指向とは何ですか
Javaは、設計オブジェクト指向言語の初めからにフォローであるため、オブジェクト指向の機能をたくさん持っている、そして問題は、オブジェクト指向が何を意味するか、ですか?
オブジェクト指向、平均スーパーガールフレンドの顔はしませんが、そのプログラムあなたが操作すべてが「あるとき、オブジェクトのJavaプログラマはレンガを移動している場合は、」Javaはその操作がレンガの手を動かすことであるオブジェクト。レンガは、レンガのオブジェクトは、オブジェクトの杭の杭を回している、という概念でまとめることができ、同じオブジェクトの多くは、このコンセプトは、「あるクラス。」
私たちが考えることができる最初のレンガでは、「レンガのある何かであるという概念(クラス)」:レンガは、土で発射が行われ、壁、フロアマットやテーブルの隅に使用することができ、一定の重量と体積があり、パズルを搬送することができます。四つの小文に分けることができます見つけることができるフレーズの定義を慎重に分析:
- レンガは、土によって発射されます。換言すれば、クラスは、「複数のクラス又は別の、またはから進化継承される一つまたはそれ以上のクラスの組み合わせから継承する(伸びる)と、別の Javaで」、すべてのクラスはObjectから継承し、展開クラスは、クラスが継承し、公式のクラスから拡張することができ、自分のプログラムを書き、他の誰かによって書かれたクラスは、独自のクラスを記述すること。
- レンガ壁、フロアマットやテーブルの隅に使用することができます。すなわち、同じクラスには、さまざまなニーズに応じて処理することができ、さまざまな「形状」を変更し、別のプロパティを追加し、別の場所で異なる役割を果たしています。
- 所定の重量と大きさからタイル。各クラスは、それ自身の性質を有するが、同一の属性について、それらの値は、必ずしも各ブリックの重量と体積と同じではないという意味では異なっていてもよいです。
- レンガは移動パズルすることができます。各クラスは、クラス属性は動的クラスに記載されている関数(またはメソッド)の静的な記述であり、その機能は言うことである持っています。
多くの「レンガ」と同じオブジェクトの組み合わせ、ヒープ一緒に、我々は全体的な機能を実現するために、プログラムこの建物の家を建てることができます。
Javaクラス内でいくつかの機能
Javaクラスには、いくつかの機能を備えています
- 1クラスはレンガだけその土壌から土壌で焼成することができるのと同様に、他のクラスから直接継承できることを意味し、単一継承、→レンガ、だけでなく、他を追加する必要が土壌に加えて、レンガ焼成プロセス直接継承することに加えて、クラスは、クラスに追加することができるような火災など原材料は、この方法は、インターフェース(インターフェース)を介して継承と呼ばれています。
- アクセス制御。クラスのために、あなたは、あなたのクラスの一部が見たい見ることができます。レンガのように、あなただけが、許可されていないJavaの、で、彼はノックしない限り、レンガの表面には、内部には、それを見ることができません見ることができます。あなたが一部異なるキーワードによって制御見せたくない見たいとクラスの一部:
- すべてのオブジェクトの情報公開のために
- プライベートとしか見え自身のコンテンツ
- コンテンツを見ることができ、自分自身と自分の子供や孫のみを保護
- 唯一の親戚(同じパッケージ)をデフォルトあなたは内容を見ることができる
公開のものとオブジェクトがライン上で動作することができ、我々は、彼らが内部でどのように見えるかを気にしない、私達はちょうど私たちが必要なものを気にする必要があります。
- 「などは」ある「です。」何かのように見える場合は、クラスのために、それはものとして見ることができます。火災のターンは、彼がレンガのすべての属性を持っていること、レンガであるように、父、また有能で可能父親の息子のように、息子のように、それはまた、積み重ねすることができます。そして、この方法は、オブジェクトがエネルギー障壁を表示され、彼はレンガのベースアップのようにすることができますことを積み上げています。
- 静的プロパティ。いくつかのプロパティおよびメソッドのクラスは、静的であることができるため、それは静的であり、このクラスのオブジェクトのプロパティとメソッドの説明ではなく、クラスの記述はありません。例えば、操作の数に関する統計レンガ彼は同じの数は適切ではありませんカウントしましょう、しかし、ターンの束のために、レンガのこの山を作るためにすべてのレンガ上で実行することができますが実現可能であるどのように多くのブロックを教えてくれ。
- オブジェクトのライフサイクル管理。Java言語のユーザーは、あなたがそれを必要とするとき、あなたはあなたがJavaの高度な機能は何かを検討すべき、スローごみを使用して終了した後、オブジェクトを作成することができますちょうど新しい、Javaオブジェクトが生まれている方法については、どのように終焉気にしません。
- パッケージレベルを有し、上面(パッケージ)構造のJavaクラスパッケージは、それはラングのJava下パッケージにかかるのjava.lang.Math Mathクラスを意味し、階層はいくつかの層を有することができ、層ごと深さ、その名前が非常に長くなることがあります。使用中のパッケージの特定のクラスの内容は、必要に応じてパッケージ、使用インポートするすべてで、導入するインポートの使用が必要ワイルドカード。などのjava.lang。 。
心配するポイントJavaプログラミングの必要性
どれだけ通常の操作、他の言語の負担が、それは取り除くことができ、このクラスの良いと思うし、そのオブジェクトがどのように設計するかでなければなりません
データの種類
すべてが対象ですが、ほんのわずかな基盤
ユーザーがJavaオブジェクトを必要とするとき、我々がコントロールしていないメモリ内の位置ができ、パイプではないこと。しかし、このオブジェクトは来る方法ですが、考えることが可能です。以下のように、タイルは粘土の焼成で作られて、レンガを積んで建てられた家のようなもので、土壌は、それを構成するものであることを、そうさらに、追求起訴し、最終的にバリオンとレプトンになるために、私たちは非常に薄い追求する必要はありません。 Javaは、我々はすべてのオブジェクトは、オブジェクト「父親」を持っていることを知っているが、我々は先祖を呼び出すためにすべてを必要としない、それはいくつかの子供たちは私たちの共通の、または「基本タイプ」ですがあります。
タイプ | サイズ | ラッパー | 初期値 |
---|---|---|---|
ブーリアン | 正誤 | ブーリアン | 偽 |
CHAR | 16ビット | キャラクター | '\ U0000' |
バイト | 8ビット | バイト | (バイト)0 |
ショート | 16ビット | ショート | (ショート)0 |
int型 | 32ビット | 整数 | 0 |
長いです | 64ビット | 長いです | 0L |
浮く | 32ビット | 浮く | 0.0f |
ダブル | 64ビット | ダブル | 0.0d |
空隙 | 空隙 | 空隙 |
これらのサイズのnビットの基本的なタイプは、-2、その最小値に関連しているN-。1、2の最大N。1- -1、フロート、及び二次標準IEEE754。
基本的なタイプ、ならびに文字列の文字列に加えて、整数共通の倍精度浮動小数点精度のBigIntegerとのBigDecimalのようなベース。
オブジェクトは管理されるべきです
オブジェクト、彼にタイトルを与え、あなたは家族はあなたが同じニックネームを作業できるようにあなたを呼び出すことができます同じように、名前に基づいて、あらゆる種類のものを行うために彼を呼び出すことができます。外線通話ニックネーム、これは、名前で恥ずかしを、もたらすながらしかし、あなたと同じを持っていたときに出て家の、多くの人々があるかもしれません、これは、そう許可されていない、トラブルをもたらすでしょう超えてスコープ、Javaで、このステートメントの範囲からのタイトル(または参照)はブラケットの終わりを過ごすためにどこに命名します。IDEは、ここでの問題を思い出させますので、もちろん、あなたは、問題がないことを気にしない場合。
彼は多くのことを行うために、そのコールを持つオブジェクトは、後で、我々が手配することができたとき、泣いどんなには、限り、あなたは使用することができるよう叫びました。スコープの範囲内のすべてのコールは、この名前で実装することができ、あなたはまた、別の名前でこのオブジェクトをあきらめることができ、この複数の名前が同じオブジェクトを参照し、治療に時間ないときに、これはいくつかをもたらしますあなたは塗装の顔を見ることができますジョン・ドウを呼び出した後、そのようなあなたはジョンのはあなたに描かれた顔のビューを提供するために呼び出す人などの問題は、人々があなたを呼び出します。
同じ型のオブジェクトの束のために、あなたは彼らが住んでロードさコンテナー、私たちが管理し、使用するためにヘルプを使用することができ、Javaは、容器の種類の多様性を提供し、最も基本的な配列が存在し、同じオブジェクトをインストールするには、連続した領域の文字列です。そこに他のそのようなセットがあり、そのようなコンテナをロードすることができ、それは後で詳細に説明することができるマップです。
演算子
文字通り意味理解などの演算子
演算子は優先順位を持って、短絡の機能があります。ときに第1の減算、乗算、除算、その優先順位は、論理演算の動作を継続しないであろう場合直接的な結果短絡が発生することがあります。
そこいくつかの演算子は、次のとおりです。
+。プラス、デジタル蓄積、接続文字列、int型に昇格デジタルの小さいタイプ。
- 。マイナス、デジタルサブトラクション。負の符号。
*。乗算は、番号を掛けます。
/。数値、数値の分割に加えて、整数部分を直接、丸みを帯びていない小数点を切り捨て、結果が与えられます。
%。残り、デジタル分割剰余数。
++インクリメント-デクリメント、オブジェクトは、オブジェクトが第1の出力値の再計算の背後に表示されたときに、出力値に最初の操作の前に表示されます。
>、<、> =、<=。以下より大きく、より等しいか、以下、より大きい。名前が示すとおり。
オブジェクトの基本的なタイプが等しい場合を除きため==等価ため、Javaのために、それは容易関心の対象のみエイリアスが同じオブジェクトを指しているかどうかを決定するために==、ない厄介され特性が等しいです。パッケージの優れた文字列や他の公式のタイプかどうかを判断するには、使用する必要があるequals()
メソッドを、しかし、クラスの独自の定義については、再定義していない場合equals()
の方法をし、裁判官へのオブジェクトへの参照ではなくオブジェクトとして==ます属性決意。
&&、||、!。または論理演算子と、裁判官へのブール値のため、両側&&真がtrueの場合、両側のいずれかに該当真||とき,!ブール論理値が反転しているオブジェクトです。
&、|、^、〜。ビット演算子、二つのオブジェクトに排他的OR演算デジタルビット単位のAND、OR、XOR、および非動作、及び、又は、の種類は、非操作対象です。
<< >>、>>>。シフト演算子、オペランドビット単位にシフトされ、A※※Bは、Bビットに矢印Aの方向にシフトすることです。それが負の場合、>>
=。オブジェクトまたはエイリアスに割り当てられた番号、または他の別名にオブジェクトを追加することによって。
+ =、 - =、* = 、/ =、&=、| =、^ =、>> = >>> =、<< =。比較同様に、※= B※Bを=です。>>> =バイトと短いが、その後、int型の切り捨て処理に変換すると、それは誤った結果を生成することができます。
指数表記:AEB AX10表すBを 1.39x10の代表的なフロート1.39e-43Fとして、-43。
?:。これは、そうでなければ、そのようなA B:?Cのような三項演算子は、論理的な結果Aが真である場合、Bが実行されると言う実行℃です。
直接の定数は、200D、0x200のような直接的数、です。ルールは0Xは16進数を示し、Lは長く、上記は0でオクタル表し、後者はDと二重表す場合、Fはフロートを表すことです。
操作上の問題を起こしやすい演算子使用
型変換
(A)B BはタイプAに強制することができ、それがより大きなタイプに小さい型から変換された場合、問題発生しませんが、それは小さなタイプに大きいからの変換の種類である場合、これは、情報の損失をもたらすでしょう。同様に変換するカスタムクラス。
切り捨てと丸め
あなたが使用する必要、java.lang.Mathに丸めた結果を取得したい場合は浮動小数点数の場合は、プラスチックの強制変換は、端数部分を破棄round()
方法を。
プロセス制御
Javaはオブジェクト指向言語であるが、それはまだ順次実行され、プログラムの実行順序、いくつかの選択枝および環状の操作を行います。
選択
Javaはのif-elseブランチおよびスイッチの選択を使用することができます。
もし、そうでありません
以下のような形
if(A){
B
}else{
C
}
それは、条件Aが真であると判定された場合、Bが実行され、そうでない場合、Cを実行します
スイッチ
以下のような形
switch(A){
case 1: B;
case 2: C;break;
case 3: D;break;
case 4: E;break;
···
}
決意条件Aが1の場合、すなわち、Bが実行され、判定条件2は、次に、ブロックCを中断するために実行された場合に決意条件3は、次に、ブロックDを遮断するために実行された場合、次に、コードブロックCの実行を中断し、等。
循環
3つの形式がループがあります、しばらくやる-ながらのために。
同時に
以下のような形
while(A){
B
}
对判断条件A进行判断,当判断条件为A时,多次执行B代码。
一方を行います
以下のような形
do{
B
}while(A)
Bコードと決意条件Aの決意を実行するために、それは条件Aが真であるときに決定され、ループBをコードブレースヘッドを実行します。
ために
以下のような形
for(int i=0,j=0;i<100;i++,j++){
B
}
まず、第一の;
オブジェクトを初期化することが一般的ループ制御の実装の前部、複数のオブジェクトができ,
、その後、区別され;
た状態が最終的に、実行されるコードブロックの下に該当する場合、制御条件との間のループが決定されます;
第3のセクションは、循環操作対象の増分を行います。例では、0に初期化され、i及びjの最初であり、及びBコードを実行し、真の場合、私は私の最終的な実装をインクリメントし、jはインクリメントされ、100未満であるか否かを判断し、真のサイクルに続けば、iが100未満であるか否かを判断しますコードは、最後のコードセグメントBが100回実行されています。
プログラミングする場合、サイクルは、通常のような反復可能オブジェクトの配列で行われます。反復は、フロントからバックに注文することができますが、再び行くことができるということです。この点において、Javaはいくつかの便利な構文は開発を促進提供します。以下のような形
容器 A;
for(int i:A){
B
}
容器Aことは、反復が何度も繰り返し、私は、各サイクルにおける各オブジェクトAを参照し、その後、コードブロックBを実行します オブジェクト100は、コンテナA、100回実行さBを有する場合。
リターン
リターン
関数が戻り値を返す文の終わり。
戻り値が定義され、不一致エラーIDEは互換性がない場合は関数によって決定しました。
普通のJavaの
Javaのプロセス制御にはgoto文はありませんが、休憩を通って、深い循環機能からジャンプを達成するために文を続けています。ループの前にタグによりlabel:
、次いでbreak label
、及びcontinue label
、ループのうち指定された場所又は現在のサイクルに指定された場所の外に。
label1:
while(true){
label2:
while(true){
continue label1;//结束本次循环,跳转到外循环继续循环
break label1://结束外层循环
}
}
嘆きます
Javaの基本文法、他の言語との類似点があり、紙、そこに違いはありますが、プログラミングは常にスキルの実践されているZhongjue、手のラインを来て、コード、本物か、単に書き込みコードを知っています知識は電力に変換することができます。そして、記事を書くと言って悲しいです。