コンピューター ウィンドウズ インターネット

Javaの構文。 条件付き構造。 -インターフェースのデフォルトメソッド

Javaマシンの起動時にmain()メソッドが呼び出されるクラスの名前と必ず一致する必要があります。

  • オブジェクト-継承元のクラス 全て配列や文字列を含むJavaのオブジェクト()。
  • アクセス指定子は、メンバーごとに個別です(宣言の前に指定されます)。
  • すべてのクラスメンバーは、デフォルトでスコープに対して開かれています パッケージ..。 デフォルトのスコープは、プライベートとプロテクトのクロスです。を参照してください。
  • 各* .javaファイルには次のものを含めることができます 唯一パブリックとして宣言され、外部からアクセスできるクラス。
  • クラスの定義と宣言は常に1つのファイルにあり、プロトタイプをヘッダーに入れることはできません。
  • ポインタがありません。
  • すべてのクラス変数は、実際にはオブジェクトへの参照であり、オブジェクト自体ではありません。 使用するための初期化は、newを介して行う必要があります<конструктор-класса>(...) .
  • 前のポイントに基づいて、あるオブジェクト変数を別のオブジェクト変数に割り当てると、リンクのみが変更され、オブジェクトはコピーされません。
  • 関数内の変数は、次の場合に値によって渡されます。 エレメンタリータイプ(int、byte、longなど...)、またはオブジェクトの場合は参照による。
  • クラスのパブリック静的メンバーには、ドット演算子を使用してアクセスします。 、::ではなく、私の意見では、外部の混乱を招きます。
  • デストラクタはありませんが、finalize()はあります。
  • Finalize()をC ++デストラクタと混同しないでください。 finalize()が呼び出されます ガベージコレクションのみ、これは、オブジェクトがスコープ外になり、このオブジェクトへの参照が少なくとも1つないこととは関係ありません。
  • 現在のRuntimeオブジェクトでRuntime.gc()メソッドを呼び出すか、静的System.gc()メソッドを呼び出すことで、ガベージコレクションを強制できます。 実行された実験から判断すると、メモリの解放は 仮想マシン JavaとOSに割り当てられたメモリは、マシンが終了するまで戻りません。
  • Javaスタイルのコーディングでは、関数はコードを返す代わりに例外をスローします。 全身エラーまたは仮想マシンのロジックのエラー。 したがって、多くの関数は、例外を処理するtry(...)catch(...)(...)ブロック内で実行する必要があります。または、それらを呼び出すメソッドは、スローによってスローされる例外のリストを明示的に示す必要があります。それらによって処理されないこれらの関数は、呼び出しスタックの上のメソッドによって処理されます。
  • 例外はとに分けられます。
  • try(...)ブロックは、finally(...)ブロックで終了することもできます。これは、前のtry(...)ブロックでの例外の有無に関係なく実行されます。 これを使用すると、コードブロックの実行結果に関係なく、必要なアクションを実行できます。たとえば、割り当てられているすべてのリソースを自動的に解放できます。
  • charは、C / C ++のようなシングルバイト型ではなく、サポートする1​​6ビット型です。 ユニコード文字列。
  • boolは、Javaではbooleanとして知られています。
  • 条件付き構成受け入れる それだけブール型の変数または式。 これは、コードが次のようになっていることを意味します。
    int a; ...変数に対するアクションa ...; もし) (...)
    観点からは真実ではありません Java構文コンパイルされません。
  • 定数はconstではなくfinalとして宣言されます。
  • すべての配列はオブジェクトです。
  • 文字列定数(「任意の文字列定数」など)でさえオブジェクトです。
  • 文字列(Stringクラス)の場合、1つの演算子のみが定義されます-+、連結。
  • 文字列の比較は、Stringクラスのbool equals()メソッドを介して行われます(例:s1.equals(s2))。
  • Stringオブジェクトの内容は一定であり、文字列の1つの要素を変更することを意味するものではありません。これは、パフォーマンス上の理由から行われます。 このような操作が必要な場合は、StringBufferクラスを使用できます。
  • 初期化されていない文字列を空でない文字列と連結すると、次のようになります。 null +空でない文字列、たとえばs + = "| string"; 「null | string」と等しくなります
  • 配列には、パブリックメンバーの可変長があります。 文字列にはありません代わりに、length()メソッドを使用します。
  • Java サポートしていません多重継承。 その機能の一部は「インターフェース」を介して実行されます。 インターフェイスは、単一のクラス内の複数のインターフェイスの複数の「継承」実装をサポートし、一般に、多くの(インターフェイス)から多くの(クラス)の関係、およびその逆をサポートします。
  • インターフェイスを使用すると、これらのインターフェイスを実装するクラスのオブジェクトを参照できるリンクを作成できます。 確かに、参照インターフェイスを介してアクセスするときに適切な方法を動的に検索するには、多くのオーバーヘッドが必要になるため、望ましくありません。
  • 列挙の代わりに、メソッド宣言のないインターフェイスを使用できます。 この場合、インターフェイスが定義されたときにすべてのインターフェイス変数を初期化する必要があり、それらの値は自動的に一定になります。 その後、実装を介して、定義されたクラスに「接続」できます。
  • また、JDK5以降は 外部的に古典的な列挙型-列挙型。 実際、これは名前付き定数のリストだけでなく、スーパークラスEnumから継承された特別なクラスです。 列挙の各要素は、このクラスのオブジェクトです。 列挙オブジェクトの数値は、序数の組み込み関数を使用して取得できます。
  • カスタム 演算子のオーバーロード C ++、Javaでおなじみ サポートされていません.
  • 「プリミティブ型」(int、float、charなど)を使用するオブジェクト環境で作業するために、Javaは オートボックス/オートボックスラッパー型(整数、浮動小数点、文字など)に変換します。 実際、これは、プリミティブ型とオブジェクトメソッドの機能を実装するいくつかの組み込みクラスの演算子オーバーロードの実装です。
  • super-サブクラスからスーパークラスのコンストラクターを呼び出すか、サブクラスの非表示メンバーのスーパークラスのメンバーにアクセスできるようにするキーワード。
    • コンストラクターとして使用する場合-スーパー 常に最初にする必要がありますサブクラスのコンストラクターの演算子。
  • 決定するため 概要メソッドでは、abstractキーワードが使用されます。抽象メソッドを含むクラスも、抽象クラスとして定義する必要があります...。
  • finalは、子クラスのメソッドのオーバーライドを禁止します。 finalとして宣言された「short」メソッドの場合、このキーワードは、関数を呼び出す代わりに、サブクラスでC ++のインラインと同じ効果があります。 多分スーパークラスメソッドのバイトコードを呼び出し元のクラスメソッドコードに挿入しました。
  • finalは、finalとして宣言されたクラスからの継承も禁止します。
  • 名前空間 Javaの(名前空間)は次のように実装されます パッケージ(パッケージ)。
  • 接続する パッケージ importを使用し、importstaticを使用することもできます ..(*|)クラスの静的メンバーをインポートします。
  • Javaは、組み込みのThreadクラスとRunableインターフェースを介してスレッドをサポートします。 同期の場合、クラスの説明のメソッドの前に同期指定子を使用するか、同期( )(...)と同期されたコードのブロック ..。 同期されたスレッド間のシグナルの場合、親Objectクラスのメソッドが使用されます:wait()/ notify()/ notifyAll()。
  • 一時的-オブジェクトを保存するとき、たとえば、ディスク/データベースに書き込む前にオブジェクトをシリアル化するときに、オブジェクト/変数の値を「保持」する必要がないことを示す修飾子。 を含む変数をマークすることは論理的です 一意の識別子 Javaプロセスの現在のインスタンスでのみ意味を持つランタイムおよびその他の同様の情報。
  • instanceof -ランタイム操作、戻り値 NSもしも クラスへのリンクがあります 、またはこのクラスへの参照にキャストできます。それ以外の場合。 NS.
  • assert-JavaアサーションはCとほぼ同じ方法で使用されます:assert [:アサーション失敗の説明]、しかし 覚えておく必要がありますそれらはコンパイルされたバイトコードに「埋め込まれ」、 Javaを実行しています-ea。
  • this(...)-クラスのコンストラクター内で使用して、引数のシグニチャーに一致する同じクラスの別のコンストラクターを呼び出すことができます。
  • それ以外の テンプレート使用されています 一般化、非常によく似ています:クラスCLASS_NAME (...)。 一般化では 禁止されています使用する 原生的タイプ ( int、byte、charなど..。)。 パラメータを使用できます クラスのみ.
    さらに、サポートされています 限定タイプ、パラメータクラスのスーパークラスを指定します。 たとえば、「ジェネリッククラス」クラスCLASS_NAMEを宣言します。 一般的な数値クラスNumberの子孫クラスのみが許可されます。
  • System.arraycopy()を使用すると、配列をすばやくコピーできるので便利です。
  • プログラミングとは、プログラミング言語の1つでプログラムのソースコードを書くことです。 沢山あります 異なる言語プログラミング、そのおかげで特定の範囲の問題を解決するあらゆる種類のプログラムが作成されます。 プログラミング言語は、書くための予約語のセットです。 ソースプログラム。 コンピュータシステムは(まだ)人間の言語、さらには人間の論理(特に女性)を理解できないため、すべてのプログラムはプログラミング言語で記述され、その後コンピュータ言語または機械語に変換されます。 プログラムのソースコードをマシンコードに変換するシステムは非常に複雑であり、原則として、12か月以上およ​​び12人以上のプログラマーによって作成されています。 このようなシステムは、統合プログラミング環境またはツールと呼ばれます。

    正規言語のようなプログラミング言語は 違う方法希望する方法でコンピューターと通信します。 プログラミング言語を使用すると、データの操作方法、ユーザーからのデータの収集方法、画面への表示方法などを段階的にコンピューターに指示できます。

    微視的なレベルでは、コンピューターのプロセッサーは、その動作を制御する電気信号をやり取りします。 データの断片は変数として保存されます。変数は基本的にデータを保持するコンテナーです。 したがって、たとえば、変数に数値が含まれる場合は、そのように言う必要があり、文字のように他のものを変数に入れることはできません。 静的に型付けされるということは、プログラムが起動する前にすべての変数がチェックされることも意味します。データ型の宣言を忘れたり、無効な型を宣言したりすると、エラーが表示されます。 「オブジェクト指向」は、オブジェクトの概念に基づいて構築されたオブジェクト指向言語です。 現実の世界では、部屋を見回して、それぞれをオブジェクトとして考えます。 たとえば、今机の上にマグカップがあります。 オブジェクトとして、この名前は「マグ」であり、その色や保持する液体の量などのプロパティがあります。 オブジェクトにメッセージを送信することもできるので、マグカップの場合、「これは空ですか?」と知っておく必要があるかもしれません。 たとえば、Cameraオブジェクトを使用して写真を撮ることができます。

    • 「静的に入力された」。
    • プログラミングの核心は、実際にはデータを操作することです。
    これらの2つの言語の間にはまったく関係がありません。

    プログラミングシステムは、プログラムのソースコードを記述し、それを機械語に変換し、テストし、デバッグするなど、非常に思慮深い視覚環境です。 さらに、コマンドラインを使用して上記のアクションを実行できるプログラムがあります。

    「プログラムはWindowsまたはLinux、Unixで書かれている」という言葉を何度も聞いたことがあるでしょう。 事実、プログラミング言語を機械語に変換するためのプログラミング環境には、コンパイラーとインタープリターの2つのタイプがあります。 プログラムをコンパイルまたは解釈することにより、プログラムがデバイス上でどのように実行され続けるかが決まります。 Java言語で書かれたプログラムは常に解釈に基づいて動作しますが、C / C ++で書かれたプログラムはコンパイルです。 これら2つの方法の違いは何ですか?

    2つの言語は異なる方法で記述され、異なる動作をしますが、どちらも変数、メソッド、演算子、さらにはオブジェクトなどのプログラミング関数を操作できます。 言語自体は、コードをどのように機能させるかを表現するために収集するキーワードと記号のコレクションです。

    コードの各行には、ビルド方法と許可されるものと許可されないものに関する特定のルールがあります。 プログラミング言語は抽象化であることに注意してください。つまり、プログラミング言語は、私たちがより簡単に理解できることでコンピューターがどのように機能するかについての真の基本を抽象化します。 舞台裏では、それは本当にすべてゼロですが、私たちはそれについて心配する必要はありません。 私たちはこれらの抽象的な用語で私たちのアイデアやコマンドを表現することを考えることができ、これらの抽象化はすべてに適用されます 他の種類プログラミング。

    コンパイラは、コンパイル時にソースコードを記述した後、プログラムのすべてのソースコードを一度に読み取り、マシンコードに変換します。 その後、プログラムは全体として存在し、その中でのみ実行できます オペレーティング・システムそれが書かれた場所。 したがって、Windowsで作成されたプログラムは、Linuxでは機能できません。その逆も同様です。 インタプリタは、プログラムが実行されるたびに、プログラムをステップスルーまたは行ごとに実行します。 解釈中に、実行可能コードではなく仮想コードが生成され、その後Java仮想マシンによって実行されます。 したがって、WindowsまたはLinuxのどのプラットフォームでも、システムに仮想Javaマシン(ランタイムシステムとも呼ばれる)があれば、Javaプログラムを同じ方法で実行できます。

    -インターフェースのデフォルトメソッド

    使用して変数に格納するデータのタイプを示すキーワードのいくつかを次に示します。 小数点以下の桁数は変更または変動する可能性があるため、これらの値は技術的に不正確である可能性があることを知っておくことが重要です。 他のプリミティブデータ型には、バイト、ショート、ロングが含まれます。 オブジェクトは、より複雑なプロパティとメソッドを使用できるという点でプリミティブデータ型とは異なりますが、プリミティブデータ型は制限されて単純です。 変数は基本的に、データを格納するために使用されるコンテナーです。

    オブジェクト指向プログラミング

    オブジェクト指向プログラミングはオブジェクトに基づいており、これは私たちの世界にいくぶん似ています。 あなたがあなたの周りを見れば、あなたは間違いなくあなたがそのようなプログラミングのモデルをより明確に理解するのを助ける何かを見つけることができます。 たとえば、私は今、テーブルに座って、モニター、システムユニット、キーボード、マウス、スピーカーなどで構成されるコンピューターでこの章を入力しています。 これらの部品はすべて、コンピューターを構成するオブジェクトです。 これを知っていると、コンピュータ全体の操作のある種の一般化されたモデルを定式化するのは非常に簡単です。 コンピュータのソフトウェアとハ​​ードウェアのプロパティの複雑さを理解していない場合は、システムユニットオブジェクトがMonitorオブジェクトによって示される特定のアクションを実行していると言えます。 次に、Keyboardオブジェクトは、Monitorオブジェクトの操作に影響を与えるSystemunitオブジェクトのアクションを修正または指定することもできます。 提示されたプロセスは、オブジェクト指向プログラミングシステム全体を非常によく特徴付けています。

    基本的な構文規則は次のとおりです

    例を見てみましょう。 番号が付けられた各部分を見てみましょう。 変数宣言の最初の単語はデータ型であり、変数に格納されるデータを示します。 2番目の単語は変数名であり、いくつかの基本的なルールに従って、任意の名前にすることができます。 変数名にスペースやスペースを含めることはできません 特殊文字; 文字、数字、アンダースコアのみを含めることができます。 等号は演算子です。つまり、特定の操作を実行します。 これは代入演算子です。つまり、変数に値を代入するために使用します。 最後に、この行の最後の文字はセミコロンであり、このステートメントを完成させるために使用されます。 ただし、数字で始める必要はありません。 ..。 ここで取り上げた基本的なデータ型のいくつかを使用した変数宣言の他の例は次のとおりです。

    いくつかの強力なものを想像してみてください ソフトウェア数十万行のコードが含まれています。 プログラム全体は1行ずつ、1行ずつ実行され、原則として、後続の各コード行は必ず前のコード行にリンクされます。 オブジェクト指向プログラミングを使用せず、このプログラムコードを変更する必要がある場合、たとえば、一部の要素を改善する必要がある場合は、このプログラムのすべてのソースコードで多くの作業を行う必要があります。

    メソッドは、コードを再利用可能なチャンクに編成するために使用され、時間とエネルギーを大幅に節約します。 メソッドの2番目の単語は、返されるデータ型です。 次の名前はメソッドの名前です。 メソッド名は、変数名とほぼ同じ規則(文字、数字、アンダースコア)に従いますが、数字で始めることはできません。

    名前の直後に、間に何もない2つの括弧が表示されます。 括弧は必要ですが、括弧が空の場合は、メソッドが呼び出されたときにデータや変数を渡していないことを意味します。 括弧の間に1つ以上の変数が含まれている場合、このメソッドを呼び出すときに、対応する値または変数を括弧内に渡す必要があります。

    オブジェクト指向プログラミングははるかに簡単です。コンピュータシステムの例に戻りましょう。 17インチのモニターにもう満足していないとしましょう。 もちろん、特定の資料があれば、20インチモニターと安全に交換できます。 交換工程自体は、ドライバーを交換する必要があり、古いモニターの下からのほこりを拭き取る必要があることを除いて、大きな問題を伴うことはありません。それだけです。 オブジェクト指向プログラミングは、ほぼこの動作原理に基づいており、コードの特定の部分は、簡単に最新化または置換できる同種のオブジェクトのクラスを表すことができます。

    1行目は開いた中括弧で終わり、対応する閉じた中括弧が線上にあります。 このドキュメントはアーカイブされてお​​り、サポートされていません。 プログラミング言語を切り替える際の最も明らかな変更は、構文の変更です。

    各言語の構文はメソッドを異なる方法で表現しますが、機能は同じです。 説明 機能性、パラメータとオブジェクトの戻り値は、いくつかの例外を除いて、すべての言語で有効です。 たとえば、これら3つのスクリプト言語のそれぞれで実装されている2乗関数について考えてみます。

    オブジェクト指向プログラミングは、解決する問題の本質を非常に簡単かつ明確に反映し、最も重要なこととして、プログラム全体を損なうことなく、これらのオブジェクトを新しいオブジェクトに置き換えることで不要なオブジェクトを削除できるようにします。 したがって、プログラム全体のソースコードの全体的な読みやすさがはるかに簡単になります。 同じコードをまったく異なるプログラムで使用できることも重要です。

    インクリメントおよびデクリメント演算子

    スクリプト言語は、プログラミング言語とは異なり、大まかに型付けされていることに注意してください。 つまり、関数を宣言するときに、パラメーターのデータ型や戻り値を指定する必要はありません。 代わりに、変数は自動的に適切なデータ型に変換されます。

    この類似性は表面的なものにすぎません。 ここで、クラス、オブジェクト、メソッド、およびインスタンス変数の意味を簡単に見てみましょう。 例:犬には、色、名前、犬種のほか、尻尾のカール、吠え声、食べ物などの行動の状態があります。 これは、ロジックが書き込まれ、データが処理され、すべてのアクションが実行されるメソッドにあります。 インスタンス変数。 各オブジェクトには、独自のインスタンス変数のセットがあります。 オブジェクトの状態は、これらのインスタンス変数に割り当てられた値によって生成されます。

    • オブジェクト。
    • オブジェクトには状態と動作があります。
    • クラスには多くのメソッドを含めることができます。
    ファイルを保存し、プログラムをコンパイルして実行する方法を見てみましょう。

    クラス

    すべてのJavaプログラムの中核は、オブジェクト指向プログラミングの基礎となるクラスです。 実際、あなたはすでにクラスが何であるかを知っていますが、それについてはまだ知りません。 前のセクションでは、コンピュータ全体の構造を例として、オブジェクトについて説明しました。 コンピュータが組み立てられる各オブジェクトは、それ自体のクラスの代表です。 たとえば、Monitorsクラスは、タイプ、サイズ、および機能に関係なく、すべてのモニターを統合し、テーブル上にある1つの特定のモニターがmonitorsクラスのオブジェクトです。

    次の手順に従ってください-。 コマンドプロンプトウィンドウを開き、クラスを保存したディレクトリに移動します。 クラス名を形成するために複数の単語が使用される場合、最初の単語の各最初の文字は大文字でなければなりません。 すべてのメソッド名は小文字で始める必要があります。

    • メモ帳を開き、上記のようにコードを追加します。
    • コードにエラーがない場合は、 コマンドライン次の行に移動します。
    • クラス名。
    • すべてのクラス名で、最初の文字は大文字にする必要があります。
    • 例:クラス。
    クラス、変数、およびメソッドに使用される名前は、識別子と呼ばれます。

    このアプローチにより、あらゆる種類のプログラミングプロセスのシミュレーションが非常に簡単になり、割り当てられたタスクの解決が容易になります。 たとえば、モニター、システムユニット、キーボード、スピーカーの4つの異なるクラスの4つのオブジェクトがあります。 サウンドファイルを再生するには、キーボードを使用してコマンドを実行します システムユニット、コマンドを与えるまさにそのアクション、あなたはモニター上で視覚的に観察し、その結果、スピーカーはサウンドファイルを再生します。 つまり、オブジェクトは特定のクラスの一部であり、このクラスのすべての手段と機能が含まれています。 問題を解決するために必要な数の同じクラスのオブジェクトが存在する可能性があります。

    すべての識別子は、文字、通貨記号、または下線文字で始まる必要があります。

    • 最初の文字の後、識別子は文字の任意の組み合わせを持つことができます。
    • キーワードを識別子として使用することはできません。
    • 最も重要なのは、識別子で大文字と小文字が区別されることです。
    他の言語と同様に、クラスやメソッドなどを変更できます。 修飾子の使用。 修飾子には2つのカテゴリがあります-。

    もっと検討します 詳細次のセクションの修飾子について。 ローカル変数クラス変数インスタンス変数。 ..。 配列は、同じタイプの複数の変数を格納するオブジェクトです。 ただし、配列自体はヒープ上のオブジェクトです。 次の章では、宣言、ビルド、および初期化の方法について説明します。

    メソッド

    再生例が出たとき サウンドファイル、次に、特定のアクションが実行されたことに基づいて、コマンドまたはメッセージを与えることについて言及されました。 アクションを実行するタスクは、各オブジェクトが持つメソッドを使用して解決されます。 メソッドは、オブジェクトを使用して特定のアクションを実行できるコマンドのセットです。

    インクリメントとデクリメント

    この列挙されたリストの値は、列挙と呼ばれます。 列挙を使用することで、コード内のエラーの数を減らすことができます。 たとえば、フレッシュジュース店のアプリを検討する場合、ガラスのサイズを小、中、大に制限できます。 これにより、小、中、大以外のサイズを誰も注文できないようになります。

    上記の例では、次の出力が得られます。 ノート。 列挙は、独自のものとして、またはクラス内で宣言できます。 メソッド、変数、コンストラクターも列挙内で定義できます。 これらの予約語は、定数や変数、またはその他の識別子名として使用することはできません。 基本的に、新しいクラスを作成する必要があり、必要なコードを含むクラスがすでに存在する場合は、既存のコードから新しいクラスを取得できます。

    各オブジェクトには独自の目的があり、メソッドを使用して特定の範囲の問題を解決するように設計されています。 たとえば、キーを押すことができず、コマンドを発行できる場合、Keyboardオブジェクトはどのようになりますか? Keyboardオブジェクトには、ユーザーが入力デバイスを制御し、必要なコマンドを発行できる特定の数のキーがあります。 このようなコマンドの処理は、メソッドを使用して行われます。

    この概念により、新しいクラスのコードを書き直すことなく、既存のクラスのフィールドとメソッドを再利用できます。 この場合、既存のクラスはスーパークラスと呼ばれ、派生クラスはサブクラスと呼ばれます。 継承の概念に関しては、インターフェースが重要な役割を果たします。 インターフェイスは、受信クラスが使用する必要のあるメソッドを定義します。 ただし、メソッドの実装はサブクラスと完全に一致しています。

    オブジェクト指向プログラミングの概念と原則

    このシリーズのその他のコンテンツにご期待ください。 このチュートリアルから何を期待し、それを最大限に活用する方法を見つけてください。

    • プロンプトが表示されたら、ファイルをハードドライブに保存します。
    • ダウンロードが完了したら、インストーラーを実行します。
    今のところ、デフォルトのパースペクティブとビューに固執します。 開発環境はすぐに使用できます。 構造化プログラミングパラダイムは非常にデータ駆動型です。データ構造があり、プログラム命令がそのデータに作用します。

    たとえば、Escキーを押してアクションをキャンセルし、それによってこのキーに割り当てられたメソッドにコマンドを与えると、プログラムレベルでこの問題が解決されます。 キーボードオブジェクトのメソッドの数についてすぐに疑問が生じますが、異なる実装が存在する可能性があります-各キーのメソッドの定義(一般的には不合理)から、一般的なものを監視する1つのメソッドの作成までキーボードの状態。 つまり、このメソッドは、キーが押されたかどうかを監視し、関係するキーに応じて、何をするかを決定します。

    したがって、各オブジェクトは、さまざまな問題を解決するための一連のメソッドを自由に使用できることがわかります。 また、各オブジェクトは特定のクラスのオブジェクトであるため、クラスには、同じクラスのさまざまなオブジェクトによって使用される一連のメソッドが含まれていることがわかります。 Javaでは、作成するすべてのメソッドは、所有されているか、特定のクラスの一部である必要があります。

    Javaの構文とセマンティクス

    外国語を話したり読んだりするには、その言語のアルファベットと文法を学ぶ必要があります。 プログラミング言語の研究でも同様の条件が見られますが、唯一の違いは、このプロセスがやや簡単であるように思われることです。 ただし、プログラムのソースコードの記述を開始する前に、まず、発生した問題を都合のよい形式で解決する必要があります。

    たとえば、電話を担当する特定のクラスを作成しましょう。このクラスには、この電話のオンとオフの2つのメソッドしかありません。 現在、Java言語の構文がわからないため、Phoneクラスを抽象言語で記述します。

    クラスの電話
    {
    Include()メソッド
    {
    //電話をオンにする操作
    }
    ()メソッドを無効にする
    {
    //電話をオフにする操作
    }
    }

    Phoneクラスは次のようになります。 中括弧は、クラス、メソッド、またはデータのシーケンスの本体の開始と終了をそれぞれ示していることに注意してください。 つまり、括弧はメソッドまたはクラスに属することを示します。 開き括弧には、閉じ括弧が必要です。 混乱しないように、通常はコード内で同じレベルに配置されます。

    それでは、Javaだけで同じクラスを書いてみましょう。

    クラステレフォン
    {
    ()の無効
    {
    // on()メソッドの本体
    }
    ボイドオフ()
    {
    // off()メソッドの本体
    }
    }

    Java言語のclassキーワードはクラスを宣言し、その後にクラス自体の名前が続きます。 私たちの場合、これはTelefonです。 レコードの登録について少しだけ。 ほとんどすべてのプログラミング言語では、名前が作成された場合に名前を記録しておくことが重要です。 Telefonを作成した場合、telefonやTELefoNなどのスペルでは、コンパイル中にエラーが発生します。 最初に書いたので、さらに書く必要があります。

    予約済みまたは キーワードは特定のケースで記述されており、メソッド、クラス、オブジェクトなどに名前を付けて使用することはできません。 コンパイラは単に単語を無視するため、単語間のスペースは重要ではありませんが、コードの可読性にとって重要です。

    Telefonクラスの本体には2つのメソッドがあります。on()-電話をオンにし、off()メソッド-電話をオフにします。 どちらのメソッドにも独自の本体があり、理論的には、両方のメソッドの必要なアクションを説明するある種のソースコードが含まれている必要があります。 今のところ、これらのメソッドがどのように実装されているかは関係ありません。主なものはJava言語の構文です。

    どちらのメソッドにも()に括弧があり、その中にパラメーターを書き込むことができます。たとえば、(int time)またはon(int time、int time1)です。 パラメータの助けを借りて、メソッドと外の世界との間に一種のつながりがあります。 on(int time)メソッドは、時間パラメーターを取ると言われています。 それはなんのためですか? たとえば、スマートフォンの電源を入れたい場合 一定時間..。 次に、時間パラメータの整数値がメソッドの本体に渡され、受信したデータに基づいて電話の電源がオンになります。 括弧が空の場合、メソッドはパラメーターを取りません。

    コメント(1)

    Telefonクラスでは、両方のメソッドの本体に2つのスラッシュの後にエントリがあります://。 このようなエントリは、コンパイラによって無視されるコメントを示しますが、コードを読みやすくするために必要です。 プログラムの作成中にコメントアウトする情報が多ければ多いほど、1年間にこれまで取り組んできたことを思い出さなければならない可能性が高くなります。

    Javaのコメントには、次の3つのタイプがあります。

    //、 /*…*/ と /**…*/

    //演算子を使用して記述されたコメントは、1行に配置する必要があります。

    // 1行
    !!! エラー! 2行目に折り返すことはできません!
    //最初の行
    // 二行目
    // …
    //最後の行

    / *…* /演算子を使用したコメントは、複数行にまたがることができます。 コメントの最初に/ *を入力し、最後にコードのコメントが終了したら、* /演算子を入力します。 最後の種類のコメント/ ** ... * /は、コードを文書化するときに使用され、任意の行数に配置することもできます。

    Javaデータ型

    Javaには、任意の値を設定するためのデータ型が存在します。 Telefonクラスでは、2つのメソッドを作成しました。 どちらのメソッドにもパラメーターはありませんでしたが、timeパラメーターを使用したon(int time)メソッドの例を示すと、メソッドに値を渡すことが言われていました。 この値は、電話の電源がオンになるはずの時間を示しています。 int指定子は、時間値のタイプを定義します。 Java 2MEには6つのデータ型があります。

    バイト-–128から128までの小さな整数値。
    short-–32768〜32767の範囲の短整数値。
    int-–2147483648から2147483647までの任意の整数値が含まれます。
    longは、–922337203685475808から9223372036854775807までの非常に大きな整数値です。
    charはUnicode文字定数です。 範囲 このフォーマット 0から65536、つまり256文字です。 このタイプの文字はすべて一重引用符で囲む必要があります。例:「G」;
    boolean-ブール型。値はfalse-falseとtrue-trueの2つだけです。 このタイプは、少し後でループでよく使用されます。 考え方は非常に単純です。ポケットにお金がある場合、おそらくこれは真実であり、そうでない場合は誤りです。 したがって、お金があればパンやビールを買いに行き(必要に応じて下線を引いて)、お金がなければ家にいます。 つまり、選択に寄与するのはそのような論理値です さらなる行動あなたのプログラム。

    必要な値を宣言するには、次のエントリを使用します。

    Int時間;
    長いBigTime;
    チャーワード;

    セミコロン演算子は、エントリの後に必要であり、行の最後に配置されます。 同じタイプの複数の広告をカンマで区切って組み合わせることができます。

    Mt time、time1、time2;

    それでは、いくつかの値を追加してTelefonクラスを改善しましょう。 on()メソッドとoff()メソッドは不要になりました。特定の問題を実際に解決できる新しいメソッドを追加します。

    クラステレフォン
    {
    // S-表示領域
    // w-表示幅
    // h-表示の高さ
    int w、h、S;
    //表示領域を計算するメソッド
    vord Area()
    {
    S = w * h;
    }
    }

    したがって、3つの変数S、w、およびhがあり、それぞれ、ピクセル単位のディスプレイの面積、幅、および高さを担当します。 Area()メソッドは、電話スクリーンの面積をピクセル単位で計算します。 操作は役に立たないが、非常にわかりやすく、理解しやすい。 Area()メソッドの本体はそれ自体を取得し、S = w * hの形式になります。 この方法では、単に幅に高さを掛けて、変数Sに結果を割り当てるか、保存します。この変数には、表示領域の値が含まれます。 この電話.

    これで、あらゆる種類の操作を実行できるJava言語の演算子に近づきました。 Java言語や他のプログラミング言語の演算子には、独自の目的があります。 したがって、算術演算子、インクリメントおよびデクリメント演算子、論理演算子、および関係演算子があります。 上記の各演算子を見てみましょう。

    算術演算子

    すべての算術演算子は非常に単純で、数学で使用される乗算「*」、除算「/」、加算「+」、および減算「-」の演算子に似ています。 モジュロ演算子「%」があり、演算子が「=」に等しい状況は一見少し混乱します。 プログラミング言語で等しい演算子は、代入演算子と呼ばれます:

    ここでは、変数xに値3を割り当てます。プログラミング言語の演算子「equal」は、2つの連続する演算子「equal」の記述に対応します:「==」。 さまざまな算術演算子でできることの例を見てみましょう。

    Int x、y、z;
    x = 5;
    y = 3;
    z = 0;
    z = x + y;

    この場合、zはxとyの合計の値、つまり8になります。

    変数xの値は5でしたが、このようなレコードの後、前の値は失われ、積z * x(8 * 5)、つまり40が書き込まれます。コードをさらに続行すると、変数は次のようになります。こんな風に見える:

    // x = 40;
    // y = 3;
    // z = 8;

    足し算と引き算の演算子は、数学と同じ目的を持っています。 負の数も同様に関連しています。

    デクリメント「-」およびインクリメント「++」演算子は非常に具体的ですが、非常に単純です。 プログラミングでは、値を1つ増減する必要がある場合がよくあります。 これはループでよく見られます。 インクリメント操作は変数を1つ増やします。

    Int x = 5;
    x ++;
    //ここでxはすでに6です

    デクリメント操作は、変数を1つ減らします。

    Int x = 5;
    NS - ;
    // xは4です

    インクリメントおよびデクリメント操作は、ポストおよびプレフィックスにすることができます。

    Int x = 5;
    int y = 0;
    y = x ++;

    コードの最後の行では、最初に値xがyに割り当てられ、これが値5になり、次に変数xが1つインクリメントされます。 それが判明しました:

    プレフィックスの増分は次のとおりです。

    Int x = 3;
    int y = 0;
    y = ++ x;

    この場合、最初に変数xが1増加し、次にすでに増加した値がyに割り当てられます。

    関係演算子

    関係演算子を使用すると、式の両方の部分が等しいかどうかを確認できます。 等式演算子 "=="があり、演算子は "未満です<» и больше «>"、以下"<=» и больше или равно «>= "、および否定演算子"!= "。
    9 == 10;

    この式は真ではなく、9は10と等しくないため、この式の値は偽です。

    ここでは、逆に、否定演算子は式の不等式を示し、値はtrueになります。 大なり記号、小なり記号、大なり記号、以下の演算子は、数学の対応する演算子に似ています。

    論理演算子

    2つの論理演算子があります。 &&で示されるAND演算子、および2つのスラッシュ「||」で示されるOR演算子。 たとえば、次の式があります。

    A * B && B * C;

    式の両方の部分のみが真である場合、式の値は真であると見なされます。 パーツの1つが間違っていると、式全体の値がfalseになります。
    「&&」演算子とは対照的に、「OR」と呼ばれる無駄ではない「||」演算子があります。

    A * B || B * C;

    式のいずれかの部分がtrueの場合、式全体がtrueと見なされます。 両方の演算子を1つの式に組み合わせることができます。次に例を示します。

    A * B || B * C && C * D || B * A;

    私があなたを導いたこの表現の助けを借りて、それは私には困難に思われますね? 事実、Javaでは、数学と同様に、優先順位またはいわゆる演算子の階層があり、それを利用して、どちらの演算子がより重要であるかが決定されるため、最初にチェックされます。 リストを使用して、Java言語で使用可能なすべての演算子の優先順位を検討してみましょう。

    , ., (),
    !、〜、++、-、+(単項)、-(単項)、新規、
    *, /, %,
    +, –,
    <<, >>, >>>,
    <, <=, >, >=,
    = =, !=,
    &, ^, |,
    &&,
    ||,
    ?:,
    =, +=, –=, *=, /=, %=, |=, ^=, <<=, >>=, >>>=.

    リスト内の演算子の結合性は、左から右、上から下に続きます。 つまり、左と上にあるものはすべてランクが古く、より重要です。