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

Javaの基本構文。 言語の主な操作。 条件付きifステートメント

Eclipseの目的、機能、および利点

Eclipseは拡張可能なIDE(統合開発環境)です。 IDEは、ソフトウェアプロジェクトで作業するために必要な便利に編成されたツールのセットです。

Eclipseは、任意のプログラミング言語でアプリケーションを開発するために使用できるユニバーサルプラットフォームです(たとえば、Pydev()接続をインストールした後にPythonを使用できますが、JavaはEclipseにネイティブです(ちなみに、Eclipseで記述されています) 。

これが条件になります。 これを行うには、例を定義する必要があります。 最後に、つまり、ループ中括弧を閉じることにより、コンパイラーはループの最初に戻ります。 これをしていなかったら、私たちはそれを入力しなかっただろう。 ループに入る前に状態をチェックするので、これは問題ありません! それは非常に簡単です:ループ付き!

注意、応答変数をにリセットする必要があります。 これが私たちのプログラム全体です。 このコードを確認できます。正しい文字を入力しないと、プログラムが次の図のような質問をすることがわかります。 条件を正しく記述し、一般的にすべてのループ中およびループ内で変数をチェックするように注意してください。 応答変数をリセットせずに前のプログラムを実行してみると、結果が表示されます。 これは「無限ループ」と呼ばれます。 このプログラムを実行すると、天文学的な数の「カッコウ1回!」が表示されます。

Eclipseの最も重要な機能は次のとおりです。

  1. クロスプラットフォーム。 Eclipseは、Windows、Linux、MacOS Xのすべての一般的なプラットフォームで実行されます。さらに重要なことに、その機能はこれらの各プラットフォームで同じです。
  2. 汎用性と拡張性。 Eclipseには、さまざまなサードパーティツールを使用する機能があります。
  3. 開放性と無償性。 Eclipseはオープンソースプロジェクトです(つまり、 ソースコード誰でも利用でき、誰でもこのツールの開発に参加できます)。 Eclipseには、プログラムの改善と機能の拡張に絶えず取り組んでいる活発なコミュニティがあります。

Eclipseワークスペース

Eclipseを起動したときに最初に表示されるのは、ワークスペースを配置する場所を選択できるダイアログボックスです。 ワークスペースは、作業内容が保存されるディレクトリです。

これにより、次の図が得られます。 この構文も使用できます。 ループのループが1つあることに注意してください。この構文では、インクリメント演算子が不等式演算子よりも優先されます。 ループは変数aの値を増やし、これを行った後でのみ条件をチェックします。

確かに、これらの2つのループはいとこではなく姉妹です。 彼らの仕事は2つの部分で同一です。 つまり、条件は時間の後に発生するため、条件のテストフェーズは最後に実行されます。 ただし、忘れないでください。そうしないと、プログラムがコンパイルされません。 これらの2つの要素を除けば、これらのヒンジはまったく同じように機能します。

ワークスペースを選択すると、チュートリアルや例などを表示するための提案とともに、スタートページが画面に表示されます。 ワークベンチを選択すると、ウィンドウが表示されます 作業環境 (ワークベンチ)、そこであなたのさらなる作業が行われます。

ワークスペースの主なコンポーネントは、ビュー、エディター、およびパースペクティブです。

このサイクルは、その状態ですべての属性を取得し、それに応じて動作するため、少し独特です。 ループの前に変数を宣言し、この変数を初期化し、ループ内でインクリメントします。 これにより、次の図が得られます。

あなたはおそらくその存在に気づいたでしょう。 フィールドを分離する状態で。 それらを忘れないでください。そうしないと、プログラムがコンパイルされません。

ループの値を変更することもできます。つまり、0から10に開始する代わりに、10から0に到達するまで開始します。次の図が得られます。

開始番号、ループを再実行するために満たす必要のある条件、および命令があります。ループの最後から宣言、条件、および命令を蓄積することを妨げるものは何もないことに注意してください。 ループを使用すると、反復的なタスクを実行できます。 ..。 条件と同様に、ループに実行するコードが複数行含まれている場合は、ループの開始と終了を明確に定義するために、ループを中括弧で囲む必要があります。

パフォーマンスワークスペース内の小さなセクションであり、特定のカテゴリのオブジェクト(リソースやパッケージなど)をナビゲートし、エディターを開き、アクティブなエディターのプロパティを表示するために使用されます。 たとえば、ナビゲータービューにはプロジェクトやその他のリソースが表示され、ブックマークビューにはワークベンチ内のすべてのブックマークと、それらのブックマークが関連付けられているファイルの名前が表示されます。 この図は、アウトラインビューがアクティブな状態のワークスペースの右上隅を示しています。

エラー:オブジェクトをバイトのストリームにシリアル化し、結果のストリームの長さを確認することで、オブジェクトのサイズを測定できます。 これが機能しない理由は、シリアル化レイアウトがメモリ内の実際のレイアウトをリモートで反映しているためです。

しかし、すべての最初に、私たちは自分自身に基本的な質問をしなければなりません、目標は何でしたか? この言語は主に焦点を当てています。 このパスワードの下で、永続的なコードは最小化されます。 これらは、あまり多くのコードをフェッチしない固有のクラスメンバーですが、フェッチします。 結局のところ、それらは一般的に使用することができます。 そのようなツールの例はLombokです。 コンパイラの残りの部分は、バイトコード生成段階で実行されます。 しかし、実際には完璧なものはないので、ロンボクもそうです。 言語の概念をさらに進めると、いわゆるプログラマーの悪夢に直面します。

ビューに加えられた変更はすぐに保存されます。

別のタイプのWorkbenchビジュアルコンポーネント- 編集者、一部のリソース(プログラムコードなど)を表示および編集するために使用されます。 リソースを選択すると、適切なエディターが表示されます。 たとえば、[ファイル]-> [ファイルを開く...]コマンドを使用して(拡張子が.txtの)テキストドキュメントを開くと、組み込みのプレーンテキストエディタが表示されます。 このエディターで何かを入力すると、ファイル名が書き込まれているタブにアスタリスクが表示されます。 これは、エディターに未保存の変更が含まれていることを意味します。 Ctrl + Sを押すか、[ファイル]-> [保存]コマンドを選択すると、保存されます。

ここで、実際には、Javanは「オプションがあります」と言います。 毎回nullチェックを行うよりも必ずしも使いやすいとは限りませんが、行の長さが急速に長くなるため、残念ながらコードの可読性が低下します。 耐久性と相互運用性。 ..。 マーケティングのプロがたくさんいるので、短所とそれが実際にどのように機能するかについて見ていきましょう。

新しい構文は、複雑な感情を呼び起こします。 プールで初めてコードを見ると、少し不快に感じました。 構文は、最初は少なくとも少し後戻りしたことを思い出させる奇妙なものでした。 宣言の場合、メソッドは明確に読み取ることができます。 いわゆるを使用すると問題が発生します。 チェックされた例外を処理する機能が同様に制御不能であることを隠すことはできません。これにより、コードの可読性が大幅に向上します。

[ウィンドウ]-> [ビューの表示]コマンドを使用してワークスペースウィンドウに追加できる便利なビューが多数あります。 ただし、一度に1つずつ追加するのではなく、パースペクティブを切り替える方が便利です。 投影(また 視点)タスクを実行するために特別に調整されたビューとエディターのコレクションです。 Eclipseで起動すると、Javaパースペクティブが開き、プログラムを実際に作成するように構成されます。 デバッグプロジェクションは、プログラムのデバッグによく使用されます。 [ウィンドウ]-> [パースペクティブを開く]コマンドを使用して、投影を切り替えることができます。 現在のプロジェクションの名前は、作業環境の右上隅に表示されます(図を参照)。

宣言されたクラスとデフォルト変数はpublicでfinalです。 可視性の問題は、最後のモディファイアがモディファイアで開いているときに、適切なモディファイアで上書きできます。 条件付きステートメントは、特定のコード(特定の条件が満たされた場合にのみ実行するコード)を実行するための条件を指定できるプロジェクトです。 一般的な形式条件文は次のようになります。

条件式では、代替コード、つまり条件が真でない場合に実行されるコードを指定することもできます。 たとえば、 この問題の正の数であるかどうかに関係なく、次の方法が表示されます。 上記の方法をまったく異なる方法で実装しても、同じ効果が得られることに注意してください。

最初のJavaプログラム

プログラミングを開始する前に、Eclipseがプログラムに関連するすべてのリソースを格納するプロジェクトを作成する必要があります。

プロジェクトを作成するには、コマンド[ファイル]-> [新規]-> [プロジェクト]を実行します。 表示されるウィンドウで、「Javaプロジェクト」を選択し、「次へ」をクリックします。 プロジェクトの名前を入力します。 プロジェクト名のフォルダがワークスペースとして指定したディレクトリに作成されることに注意してください(もちろん、このウィンドウで設定を変更する場合を除きます。これは初めてではありません)。 [完了]ボタンをクリックします。

当然、最初の形式。 書面で簡潔であるだけでなく、平均して比較が少ないため、潜在的に高速です。 この場合、条件付きコードを含む中括弧は省略できます。 この講義から、特定のプログラミング言語の例を使用してオブジェクトプログラミングの研究を開始します。 これらすべての特質は、オブジェクト指向メカニズムを実証するためのツールとしての言語の選択を正当化します。 ただし、これが唯一の選択肢ではないことを強調しておく必要があります。

多くの可能性があり、各講義の作成者は選択をしなければなりません。 講師にとって、基本的な事実を見落とさないことが重要です。選択されたプログラミング言語は、オブジェクト指向プログラミングの例を示すための単なるツールです。 言語の選択は、必要ではありますが、二次的なものです。 これは、言語の定義と標準ライブラリの説明に関係します。 もちろん、講義の文脈でそれらすべてについて説明するわけではありませんが、複雑で複雑なクラス階層の例を研究します。

これで、プロジェクトがワークスペースの左側にあるPackageExplorerビューに表示されます。 名前をクリックするといつでも削除できます 右クリックマウスを押して[削除]を選択します。 その後、Eclipseは、プロジェクトファイルを含むフォルダーを同時に破棄するかどうかを尋ねます(必要に応じて、フォルダーを破棄することもできます)。

プロジェクトを削除していない場合は、コンテキストメニューコマンドを使用してプロジェクトにファイルとフォルダーを追加できます。 新規->ファイルおよび新規->フォルダそれぞれ。 プロジェクトが大きい場合は、ネストされたフォルダー構造が必要です。 しかし、Javaプロジェクトの場合、状況は少し異なります。 重要なのは、Javaプログラムのフラグメントがグループ化されているということです。 パッケージパッケージごとに個別のフォルダが作成されます。 パッケージは、[新規]-> [パッケージ]コマンドで作成されます。 また、パッケージの名前を考え出す必要があります。 その結果、この名前の新しいフォルダーがプロジェクトフォルダーに作成されます。 確認してもいい。

グラフィックを作成するには ユーザーインターフェイスたとえば、コレクション、ストリーム、クラスを取り上げます。 これらの説明が終わったら、始めましょう! 他の設計上の仮定は、プログラムの移植性に関するものでした。 効果は同じになります。 オブジェクト指向言語では、クラスで定義された関数はメソッドと呼ばれます。 クラス定義はクラスワードで始まり、その後に追加のアクセス修飾子が続きます。 パッケージについて説明します。 このメソッド名はランダムではありません。 メソッドパラメータは、ほとんどのプログラミング言語で非常に強力です。

ナビゲータービューを使用すると、プロジェクトリソースを参照する方が簡単な場合があります。 [ウィンドウ]-> [ビューの表示]コマンドで開きます。 プロジェクトディレクトリとパッケージディレクトリに加えて、Eclipseが.classpathと.projectの2つの補助ファイルを作成したことがわかります。 これらはエディターで簡単に開くことができますが、現在は特に関心がありません。

Javaプログラムは、常に1つ以上で構成されます クラス..。 で[新規]-> [クラス]コマンドを使用してクラスを作成できます。 コンテキストメニューナビゲータービュー(またはパッケージエクスプローラーは関係ありません)。 クラスを作成するときは、クラスが属するパッケージを選択し(作成したばかりのパッケージを選択します)、クラスの名前を考え出す必要があります。 クラス名は大文字で始めるのが一般的です。 この適切な形式のルールに従わない場合、Eclipseは警告を発行しますが、悪いことは何も起こりません。

個々のパラメーター宣言のシーケンスが与えられ、個々の宣言は区切り文字で区切られます。 各宣言は、パラメーターの名前とタイプを指定します。 メソッドタイプの前に追加の指定子があります。 静的キーワードは、それがクラスメソッドであることを意味します。 このクラスのオブジェクトのコピーを必要としない呼び出し。 前述のように、クラスはタイプに対応し、クラスの値-そのタイプのインスタンスはオブジェクトです。 通常、オブジェクトのメソッドを呼び出しますが、クラスのメソッドを呼び出すこともできます。

これは、オブジェクトを作成していないプログラムでは特に重要です。 このクラスは、標準の入出力に関連する基本的な操作とオブジェクト、およびプログラムが実行されるオペレーティングシステムを収集しました。 コンポーネントは属性またはメソッドにすることができます。 後者の場合、括弧で囲まれたパラメーターのリストを提供します。 もちろん、属性の属性やメソッドの結果を、たとえば書くことでさらに参照することもできます。

ここでは、[クラスでどのメソッドを作成しますか?]の下のチェックボックスをオンにすると便利です。 反対のオプション public static void main(String args)..。 その結果、main()メソッド(関数)がクラス本体に生成されます。 Javaでは、プログラムのクラスの少なくとも1つにそのようなヘッダーを持つメソッドが必要です。 プログラムの開始時に実行されるのは彼です。

クラスの属性とメソッドを記述するときに同じ構文が使用されます。 1行のコメントは、2つのスラッシュで始まり、行の終わりまで続きます。 もちろん、複数行のコメントは1行に完全に収まる可能性があり、1行にそのようなコメントが複数ある場合もあります。

複数行コメントはネストできません。 ここでは詳細については説明しません。興味のある読者を言語レポートに送ります。 最も重要な語彙要素を要約してみましょう。 国の文字で書かれた識別子の使用の正当性の問題、すなわち 英語ではなく、多くの論争を引き起こします。 このテキストの著者は、たとえば国際チームでの作業に関する他の議論を評価し、Javaで解決することで、オオカミ、ヤギ、キャベツの問題を、ボートまたはボート。

アクションの結果として、クラスの名前と拡張子が.javaのファイルがpackageフォルダーに作成されます。 Eclipseは、このファイルの内容を表示するコードエディターを開きます。 次のようになります(もちろん、パッケージ名とクラス名は異なる場合があります)。

パッケージmainPack; public class MyClass(/ ** * @param args * / public static void main(String args)())

自動生成されたコメントの代わりに、関数の本体を構成するコマンドを記述できます。 // TODO自動生成されたメソッドスタブ..。 古典的な「Hello、world!」行を画面に出力するコマンドを1つだけ記述します。

これは、すべての変数、属性、またはパラメーターが宣言された型を持っていることを意味します。 コンパイラーは、プログラム内のすべての式の型を列挙し、すべての演算子とメソッドがそれらの宣言、つまり適切な型の引数に従って使用されていることを確認します。 プライマリタイプ、参照タイプ。 ..。 プライマリタイプは、単純な値を含む8つのタイプのグループです。

リンクタイプは次のカテゴリに分類されます。 クラスのタイプ、インターフェースのタイプ、配列のタイプ。 ..。 参照型はオブジェクト参照またはnullです。 名前がないため、このタイプの変数を宣言することもできません。 この値は任意の参照型に割り当てることができるため、null値は各参照型の値と考えることができ、型の存在について心配する必要はありません。 変数は、宣言されたタイプの単一値のコンテナーと呼ばれます。

System.out.println( "Hello、world!");

プログラムを実行することは残っています。 これを行うには、[実行]-> [ファイル名を指定して実行]コマンドを実行し、重要な起動設定を含むダイアログボックスを表示します。 このウィンドウの左側で、[Javaアプリケーション]を選択します( Javaアプリケーション)。 少し考えた後、Eclipseはmain()メソッドを含むクラスを見つけ、そこからプログラムを開始することを提案します(ウィンドウの右側の[メイン]タブに、プロジェクトとクラスの名前が表示されます)。 これに加えて、プログラマーの注意を引くためにさらにいくつかのタブが提供されています。 たとえば、2番目の引数(引数)では、パラメータを入力することが提案されています コマンドライン(プログラムがパラメーターを使用してコマンドラインから呼び出されるように設計されている場合)。 私たちの単純なプログラムでは、他に何も指定する必要はありません。 [実行]ボタンをクリックするだけです。

変数には7つのタイプがあります。 クラス変数、コピー変数、ローカル変数、配列要素、メソッドパラメーター、コンストラクターパラメーター、例外処理パラメーター。 各変数を宣言する必要があります。 各変数は、変数宣言で宣言された型に関連付けられています。 この型は、変数の操作をチェックするためにコンパイラーによって使用されます。 プログラムがその型と一致しない変数を使用していることをコンパイラーが検出した場合、そのプログラムは無効として拒否されます。

その結果、プログラム内の多くのエラーの多くは、コンパイル段階ですでに検出されています。 もちろん、コンパイラは論理エラーを検出できません。 パラメータについては、この要件の維持は明らかです。 他の4種類の変数の場合、これはより困難です。

プログラムの作業の結果として、データはいわゆるコンソールに出力されます。 V オペレーティング・システム MSDOSコンソールはモニター画面全体でした。 Eclipseはコンソールビューを開きます。ここには(すべてが正しく行われている場合)「Hello、world!」という行が表示されます。 私たちのプログラムの出力です。

ここで、プログラムを再実行するには(たとえば、プログラムに変更を加えることにした場合、または教師に表示する必要がある場合)、より簡単な方法を実行できます-コマンド[実行]-> [最後に起動したファイルを実行]を実行します(前のアプリケーションを再度)またはCtrl + F11を押します。

Java構文の基本

定義

オペランドは、演算に関係する値です。

メソッド(関数)は、独自の名前を持つプログラムの一部です。 この名前は、プログラムのコマンドとして使用できます(このようなコマンドはメソッド呼び出しと呼ばれます)。 メソッドが呼び出されると、そのメソッドを構成するコマンドが実行されます。 操作と同様のメソッドは、結果値を返すことができます。

式は、特定の順序で実行される一連の操作とメソッド呼び出し(括弧を考慮した操作の優先順位による)であり、計算中に特定の値を提供します。

変数は、プログラムが特定のタイプのデータを格納できるコンピュータメモリの名前付き領域です( 変数値)そして変数名を使用してこのデータにアクセスします。

プログラムとアルゴリズムの概念(繰り返し)

任意の予定 コンピュータープログラム-入力データの出力データへの変換。 プログラムアルゴリズムは、入力データを出力データに変換する方法を決定します。


入力データは、さまざまなソースから取得できます。 教育プロジェクトでは、これらのデータは、プログラムの実行中にキーボードとマウスを使用して入力されることがほとんどです。 実際のプログラムでは、ファイル、データベース、ネットワークから、さまざまなセンサーから直接取得することもできます。

出力データ(プログラムの作業の結果)は、ほとんどの場合画面に表示されますが、ファイルまたはデータベースに保存してネットワークに送信することもできます。 組み込みプログラムは、プログラムが関連付けられているデバイスに何らかのアクションを実行させる出力として、特別なエスケープシーケンスを生成します。

プログラムの作成を開始するには、すぐに理解する必要があります。

  1. このプログラムは何のためにあるのですか(一般的には何をしますか)?
  2. このプログラムにはどのような入力データがありますか(そしてそれはどこから来ていますか)?
  3. このプログラムの出力(およびそれを送信する場所)は何ですか?
  4. 入力を出力(アルゴリズム)にどのように変換する必要がありますか? これはプログラマーの考えの中で最も難しい部分ですが、前の3つの質問に対する答えはありませんが、それを開始することは意味がありません。

簡単なプログラムを作成するときは、次のことを行う必要があります。

  1. 入力を取得します。
  2. 入力データを出力に変換するためのアルゴリズムを実装します。
  3. プログラムの作業結果を出力します(出力データ):表示したり、ネットワーク経由で送信したりします。

複雑なソフトウェアプロジェクトを扱う場合は、プログラムの要件の詳細な分析(顧客との多くのコミュニケーションが必要になる場合があります)を実行し、設計を実行する必要があります(プログラムがどの部分で構成されるかを決定するために、これらの部分がどのように相互作用するか、プログラムの構造と動作のさまざまな側面を図などの形式で表示します。 ただし、いずれの場合も、入力データと出力データを理解せず、アルゴリズムの本質を一般的に理解せずにプログラミングを開始します。 無意味..。 そして、入力データと出力データを知らなくても、少なくともアルゴリズムの本質について一般的に考えてください。 無理だよ.

したがって、常に入力と出力を定義することから演習を開始してください。 この問題で何か問題がある場合は、先生に連絡してください。

トピックに関する文献:

基本的なアルゴリズムの構築(繰り返し)

注意! トレーニングのこの段階では、このトピックについての知識がすでにあるはずです。それらがなく、繰り返しの材料が理解できないか不十分である場合、あなたは仕事に対処することはできません! このトピックに関する文献を参照することが急務です。

したがって、アルゴリズムは、入力データを出力データに変換する一連のアクションです。

アルゴリズムは、主に3つの方法で記述できます。

アルゴリズムの個々のステップ(記述方法に関係なく)は、絶対にすべてのプログラミング言語で実装されている3つの標準構造を使用して相互にリンクされています。

    順次実行。 手順は次々に実行されます。

    分岐。 特定の条件の達成に応じて(検討対象の例では、x> y?)、プログラムの1つまたは別のブランチが実行されます。

    サイクル。 プログラムの一連のステップは数回実行されます。 実際、ループは分岐に基づいています(ループを終了するための条件がチェックされます)が、この条件が満たされない場合、制御はループの先頭に移されます(すでに完了したステップに戻ります)。

問題を考えてみましょう。10未満のすべての偶数を表示します。この問題では、順次ステップに基づくアルゴリズムとループを使用するアルゴリズムを使用できます。 両方のオプションの図を図に示します。

最初の図はより明確に見えますが、5つの数字ではなく100を表示する必要がある場合、図(およびこのアルゴリズムに対応するプログラム)は20倍に増加し、2番目のアルゴリズムに対応するプログラムではのみ1つの場所が変更されます。10が100に変更されます。そのため、繰り返しアクションはサイクルの形で設計されていますが、多くの場合、省略できます。

覚えておいてください:アルゴリズムは、3つの名前付き構成のみから構築する必要があります!

トピックに関する文献:

1.コンピュータサイエンスの学校の教科書。

Java構文の基本の基本

  1. Java言語は、大文字と小文字を区別します。つまり、すべての関数とキーワードの名前は、例と参考書に記載されているとおりに正確に記述する必要があります。
  2. Java言語のすべてのコマンド(演算子)は、セミコロンで終了する必要があります。
  3. Javaプログラムは、1つ以上で構成されます クラス..。 絶対に、プログラムの機能部分全体(つまり、プログラムの機能)を次の場所に配置する必要があります メソッド特定のクラス。 (オブジェクト指向プログラミングの概念としてのクラスとメソッドについては、レッスン3で説明します。クラス構文についても説明します。最初の演習では、Eclipseがデフォルトで生成するクラスを使用します。)
  4. クラスはパッケージにグループ化されます。
  5. 少なくとも1つのクラスには、検討した例とまったく同じmain()メソッドが必要です。 (最初は、このメソッドの正しいスペルを理解したり覚えたりする必要はありません。必要なチェックボックスをオンにすると、Eclipseがすべてを生成します。)このメソッドが最初に実行されます。

最も単純なケースでは、プログラムは1つの(またはまったくない)パッケージ、パッケージ内の1つのクラス、およびクラス内の1つのmain()メソッドで構成できます。 プログラムコマンドは行の間に書き込まれます

public static void main(String args)(

メソッド本体の終わりを示す閉じ中括弧)。 最も単純な演習を実行するときは、このアプローチに従う必要があります。

コメント(1)

コメントは、プログラマーがコードの理解度を向上させるために使用する説明ラベルです。 プログラムをコンパイルするとき、コメントは無視されるので、コメントに何でも書くことができます。 主なことは、この碑文が解説であり、プログラムコマンドとして解釈されるべきではないことを示すことです。 Javaでは、これは次のいずれかの方法で行われます。

  1. // 2つのスラッシュが挿入されます。 これから、行の終わりまで、好きなように書くことができます-Javaはそれをコメントとして扱います。
  2. コメントの最初に文字/ *が配置され、最後に-* /が配置されます。 この場合、コメントは任意の数の行にまたがることができます。
  3. ハイライト ドキュメントへのコメントマーカー/ **と* /の間に配置されます。 それらの使用については後で説明します。

リテラル書き込みルール

リテラルを書くさまざまな形式について

Javaの整数(整数リテラル)は、通常の方法で10進形式(12345、+ 4、-11)で記述できます。

さらに、整数は、ゼロ(0777、-056)から始まる8進数形式と、ゼロおよびラテン文字x(0xFFFF、0x14、0xA1BC)から始まる16進数形式で書き込むことができます。

有効なリテラルは10進表記で記述され、整数部分は小数点から分離されます。

実数を書くことができます 浮動小数点、例:5.4e19、17E-11、-123e +4。 文字eの前にある数字の部分は仮数と呼ばれ、文字eの後に続く部分は順序と呼ばれます。 表記は次のことを意味します。10を次数の累乗にして、仮数を掛ける必要があります。 0.000000001よりも1e-9を書く方が実際に便利な場合があります。

単一の文字は、「a」、「D」、「@」などのアポストロフィで記述されます。

特別なエスケープシーケンスを使用して記述されたいくつかの特別な制御文字があります。 最も一般的なものを表に示します。

エスケープシーケンスもアポストロフィで囲まれています。

表の最初の行は、このコードを8進数システムで記述することにより、そのコード(0から255までの10進エンコード)を使用して任意の文字を指定できることを示しています。 たとえば、CP1251エンコーディングの文字「g」はエスケープシーケンス「\ 346」で記述されます。

必要に応じて、任意の文字のコードを指定できます Unicodeエンコーディング-円記号とラテン文字uの後-4つの16進文字。 たとえば、「\ u0055」は文字Uです。

文字列は引用符で囲まれています。 開始引用符と終了引用符は同じコード行にある必要があります。

文字列の場合、連結操作+が定義されています。これにより、複数の文字列を1つにまとめることができます(相互に「帰属」させる)。

文字列定数が長すぎて、1行で書き込むときにプログラムコードで認識されにくい場合は、文字列連結操作を使用してそれらを連結し、複数行で書き込むことができます。 例えば:

「これは書き留められた非常に長い文字列定数です」 + 「2行のソース」

制御文字とコードは、文字列内に次のようにまったく同じ方法で記述されます。 バックスラッシュ(ただし、アポストロフィはありません)。

ブールリテラルはtrueとfalseです。

識別子

良いスタイルのルールについて

プログラミングするときは、オブジェクトに名前を付けるための識別子を常に考え出す必要があります。

識別子は、文字、数字、アンダースコア_、ドル記号$で構成できます(後者は推奨されません。Javaは独自のニーズに使用します)。 識別子を数字で始めることはできません。 Javaキーワード(またはリテラル 真/偽ヌル).

上記のように、 Java言語は、単純な文字と小文字を区別します..。 これは、myAge、myage、およびMyAgeが完全に異なるオブジェクトの名前であることを意味します。 注意:レジスタエラーは非常に一般的なケースです!

クラス名は大文字で始まります。名前が複数の単語で構成されている場合、各単語は大文字で始まります。 例:MyClass、Book。

メソッド名と変数名は小文字(小文字)で始まります。 名前に複数の単語が含まれている場合、次の各単語は大文字で始まります。 たとえば、myVar、x、y、newBigCounter。

定数名は完全に書かれています 大文字; 名前に複数の単語が含まれている場合は、それらの間にアンダースコアが配置されます。 たとえば、PI、COUNT_OF_MONTHS。

これらのガイドラインを使用することには多くの利点があります。 それらの1つは、標準を使用するときに大文字と小文字を配置する方法を正確に知っているということです Javaライブラリ、その開発者は推奨事項を順守しました。

データ型

Javaデータ型について

int型は、Javaで整数を格納するために最も一般的に使用されます。

一般に、Java言語には、byte、short、int、longの4つの整数型があります。 それらは、変数に割り当てられるメモリの量が異なり、したがって、この変数に格納できる値の範囲が異なります。 最も一般的に使用されるint型は、メモリ内で4バイトを占有し、-2147483648から2147483647までの数値を格納するのに適しています。バイト型は、メモリの消費が最も少なく、小さい数値(-128から127)での作業に適しています。 短いタイプと長いタイプは、それぞれ2バイトと8バイトです。

ダブルタイプは実数に適しています。

実数(実数)(または浮動小数点数)は、floatとdoubleの2つのタイプで表されます。 float型は4バイトのメモリを使用し、非常に大きい数または非常に小さい数を処理する場合、高度な精度を提供しません。 小数部分が必要な場合に使用することをお勧めしますが、高精度は必要ありません(たとえば、メートル単位で距離を測定するが、センチメートルとミリメートルを考慮したり、コペイカ銀貨を考慮してルーブル単位で価格を測定したりする場合)。 より正確な計算が必要な場合は、double型の値で操作することをお勧めします(たとえば、そのような変数は角度の正弦の値を格納できます)。

5.3、8.0、2e-3などの有効なリテラルは、Javaによってdoubleと見なされます。 プログラムでフロートとして使用する場合は、文字fで終わる必要があります:5.3f、8.0f、2e-3f。

char型は、単一文字を格納するために使用されます。 Javaはそれを一種の整数型と見なします(各文字は独自のUnicodeコードで指定されるため)。したがって、すべての整数演算はcharに適用されます。

ブール値(trueまたはfalseのいずれか)はブール型で表されます。

したがって、Javaは8つの単純な型を定義し、その機能は次のように示されます。 テーブル:

変数の宣言

Javaでは(他の多くの言語と同様に)、使用する前に説明する必要があります。 変数を説明することは、変数に名前を付け、その型を定義することです。

変数を宣言するときは、最初に型が示され(単純な型のいずれか、クラスまたはインターフェースの名前)、次に変数の名前が示されます。 変数が必要な場合 初期化(初期値を割り当てる)、初期値は名前の後に等号で指定されます。 同じタイプのさらにいくつかの変数は、コンマで区切って宣言できます。

変数宣言の例:

int x; //整数変数xを宣言しますダブルa、b; // 2つの実変数aとbの宣言 char letter = "Z"; //初期値「Z」で初期化された文字変数文字を宣言しますブールb1 = true、b2、b3 = false; // 3つのブール変数を宣言します。最初の変数はtrueになり、最後の変数はfalseになります

基本的な言語操作

変数と参加することができます(そこから、複雑なものを構築することができます)。 最も簡単な操作を考えてみましょう Java言語.

数学演算

比較演算の結果はブール値です:trueまたはfalse

論理演算

Java操作について

&&および|| 2番目の値が必ずしも計算されないという点で異なります。 たとえば、&&は最初のオペランドの値を評価し、それがfalseの場合、すぐにfalseを返しますが、|| 最初のオペランドがtrueであることがわかった場合、すぐにtrueを返します。 Javaにも同様の操作があります&と| 、演算を実行する前に、両方のオペランドの値を評価します。

シフト操作

(第1オペランドのビット表現を処理します)

ビット演算

(オペランドのビット表現を処理します)

手術?:

操作?:三元、つまり、3つのオペランドがあります。 最初のオペランドは条件、ブール式です。 2番目と3番目のオペランドは、他のタイプの式です。 この演算は次のように機能します。条件がtrueの場合、結果として2番目のオペランドを返し、falseの場合、3番目のオペランドを返します。

たとえば、式(5> 3)? 7 + 1:2 * 2の値は8になりますが、式(5 == 3)? 7 + 1:2 * 2-値4。この表記はあまり説明的ではありませんが、プログラマーはコードを短縮するためによく使用します。 したがって、一連のコマンドの代わりに:

if(x> 0)y = 45 + a * 2; //ステートメントについて以下で説明する場合それ以外の場合、y = 45-b * 3;

あなたは書ける:

Y = 45 +((x> 0)?A * 2:-b * 3);

代入演算子

変数が記述された後、プログラムでそれを操作できます。 特に、適切なタイプの値を割り当てることができます。 その後、将来、この変数を任意の式で使用すると、この現在の値が自動的に置き換えられます。

値は、割り当てを使用して変数に関連付けられます。 Javaでは、単純な等号で記述されています。

変数=式;

変数は常に代入演算子の左側に指定されます。 右側は、タイプごとに変数と一致する必要があります。 単純な場合もあります(たとえば、数字や記号)。

X = 7; //変数xには値7が割り当てられます手紙= "Q"; //文字は「Q」に設定されます

一般に、式は計算できるものです(たとえば、数学演算の結果や何らかのメソッドによって返される結果)。

A = 7.5 + 2.4; //計算の結果として変数aに9.9が割り当てられます

リテラルに加えて、他の変数が式に参加できます。 それらの現在の値がそれらの代わりになります。 コマンドの結果として:

B = a + 1;

変数bは10.9に設定されます。

したがって、代入演算子は次のように機能します。 まず、右側の式の値が計算され、その結果が左側で指定された変数に割り当てられます。 次の状況でも可能です。

X = x + 4;

このコマンドは、整数変数xの現在の値を4ずつインクリメントします。

また、次のコマンドは正しく記述されておらず、機能しません。

5 = x + 7; //左側に変数があるはずです x + 3 = 14; //左側に変数が1つだけあるはずです x = 4.5; //変数xは整数値のみを取ることができます

Eclipseは、プログラムを実行する前に、コードエディターの余白に警告記号を配置することにより、これらの行にエラーを表示しようとします。 あなたは彼がそれをどのように行うかを見ることができます。

型キャストについて

あるタイプの変数に別のタイプの値が割り当てられると、それが使用されます タイプのキャスト(変換)..。 数値型(byte、short、int、long、float、double、char)の場合、変更される変数の型が別の型の値に「対応」できる場合、自動的に発生します。

たとえば、int型の変数にbyte型の値が割り当てられている場合、byte型からint型への変換が自動的に行われます。 同様に、float型はdouble型などにキャストできます。

精度の低い型(バイトなど)の変数を精度の高い型(intなど)の値に割り当てようとすると、コンパイラーはエラーメッセージを生成します。

型キャストには、 キャスト演算子-型変換を実行する式の前に、変換が実行される型とともに括弧が括弧内に配置されます。 高精度の整数型を低精度の整数型にキャストする場合、キャストが実行される型の許容範囲でモジュロ除算を実行できます。また、double式をfloat式にキャストする場合、式の精度は次のようになります。削減されます。

long j =(long)1.0; //キャスト演算子を使用してlong、j = 1 char ch =(char)1001; //キャスト演算子を使用してchar、ch = "d"バイトb2 =(バイト)(100); // intからbyteへのキャスト演算子を使用します、b2 = 100バイトb3 =(バイト)(100 * 2); //注意! モジュロ除算が発生します、b3 = -56

型の不一致エラーは、有効なリテラルでよく発生します。 たとえば、割り当てa = 7.5 +2.4を実行することはできません。 変数aがfloat型の場合、リテラル7.5および2.4はdouble型と見なされるためです。 エラーを回避するには、型キャストを使用する必要があります。

A =(フロート)(7.5 + 2.4);

または、リテラルもフロートであることを示します。

A = 7.5f + 2.4f; //これも有効なコマンドです

ほとんどすべての二項演算には、独自の種類の代入演算子があります。 たとえば、加算+演算の場合、単項代入演算子+ =があります。これは、オペランドの値を指定された量だけインクリメントします。

X + = 8; // x = x + 8と同じ(xは8ずつ増加します)

他の操作についても同様です:演算子* =、-=、/ =、%=、&= ^ =など。

X * = 3; // x = x * 3と同じ(xは3倍に増加) b1 ^ = b2; // b1 = b1 ^ b2と同じ

演習1

2つの整数変数を宣言し、それらに任意の値を割り当てます。 それらの合計と積を印刷します。

促す: Eclipseで作成済みのプロジェクトを貼り付けることで使用できます 必要なコマンド「Hello、world!」という行を出力するコマンドの後。 またはそれの代わりに。

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

インクリメント演算子とデクリメント演算子について

インクリメントおよびデクリメント演算子++および-オペランドの値を1つインクリメントおよびデクリメントします。 x ++コマンドを使用する方がはるかに便利です。 コマンドの代わりにx = x + 1;

インクリメント演算子とデクリメント演算子も値を返します。 これは、コマンドを実行することが合法であることを意味します

Y = 7 * x ++;

その結果、変数xは1増加し、変数yはxの古い値の7倍の値を取ります。 次のコマンドを実行することもできます。

Y = 7 * ++ x;

その結果、変数xは1増加し、変数yはxの新しい値の7倍の値を取ります。

条件付きifステートメント

条件演算子を書く最も簡単な形式は次のとおりです。

if(条件)コマンド

括弧で囲まれた条件はブール式です。 trueまたはfalseにすることができます。 条件が真の場合、コマンドが実行されます。それ以外の場合、何も起こりません。 例えば:

if(x //変数xの値が17未満の場合、xを17に割り当てます

条件がfalseの場合に他のコマンドを実行する必要がある場合は、ifステートメントの拡張形式を使用します。

if(条件)command1 else command2

elseif構文について

上記の例では、条件が次の場合、変数xを5に割り当てることができます。 xは実行されません(なぜそれが必要なのか、別の質問)。

if(x else x = 5;

複数の相互に排他的な条件を使用する必要がある場合、それらは次のように記述できます。

if(condition1)command1 else if(condition2)command2 else if(condition3)command3 ... else commandN

演習2

2つの整数変数を宣言し、それらに任意の値を割り当てます。 ifステートメントを使用して、それらの最大値を見つけて出力します。

促す:アルゴリズムの基本的な構成を繰り返しながら、最大値を見つけるためのアルゴリズムを検討しました。

複合コマンド

中括弧()を使用して、複数のJava言語コマンドを1つの複合コマンドに組み合わせることができます。 たとえば、次のように書くことができます。

(a = 12;文字= "D";)

複合コマンドは、通常のコマンドがどこにあっても使用できます。 たとえば、ifステートメントで、条件が満たされたときに複数のアクションを実行する必要がある場合:

if(x "S";)else(x = 5;)

カーリーブレース構造は、 コマンドのブロック中括弧は ブロック境界.

この例で使用されている表記法(ブロックの境界が別々の行に配置され、ブロックの内容がその境界からインデントされて書き込まれている場合)はオプションであることに注意してください。 これは、プログラムを理解しやすくし、Javaプログラムでよく使用される中括弧で混乱しないようにするための単なるスタイルルールです。

スイッチ選択ステートメントについて

Switchselectionステートメント

多くの場合、実行するコマンドの選択は、変数(または式)の値によって異なります。 たとえば、ユーザーは操作記号の入力を求められ、入力された文字によっては、加算、減算などの結果を表示する必要があります。 または、間違った文字が入力された場合は、エラーメッセージが表示されます。 この場合、次の表記のスイッチ選択ステートメントを使用すると便利です。

switch(式)(ケース値1:コマンドシーケンス1ブレーク、ケース値2:コマンドシーケンス2ブレーク、...デフォルト:デフォルトのコマンドシーケンス)

Value1、value2など。 定数または定数のみを含む式です。 後の括弧内の式 キーワードスイッチには変数を含めることができます。 この式が評価され、結果がcaseキーワードの後の値の1つと照合されます。 そのような一致が見つかった場合、コロンと最も近いブレークコマンドの間にあるコマンドのシーケンス全体が実行されます。 一致するものが見つからない場合は、defaultキーワードに続くデフォルトのコマンドシーケンスが実行されます。 例えば:

char oper; //操作記号、ユーザーが選択します ... //この時点でユーザーがサインを選択したと仮定しましょう switch(oper)(case "+":System.out.println(a + b); break; case "-":System.out.println(a --b); break; case "*":System.out。 println(a * b); break;デフォルト:System.out.println( 「無効なトランザクションサイン」); }

デフォルトのセクションは省略できます。 この場合、一致するものが見つからない場合、コマンドは実行されません。

whileループステートメント

whileループの形式は次のとおりです。

while(条件)コマンド

括弧で囲まれた条件(ブール式)がtrueの場合、コマンドが実行されます- ループ本体(単純なコマンドまたは中括弧で囲まれた一連のコマンドの場合があります)。その後、プログラムはこのステートメントの実行に戻り、条件がfalseになるまでこれを繰り返します。

したがって、プログラムが無限ループに入ったりハングしたりしないように、ループ本体は終了オプションを提供する必要があります。つまり、ループ本体のコマンドは、条件に含まれる変数に何らかの影響を与える必要があります。

たとえば、次のコードスニペットは、2から10までの偶数を出力します。

int x = 2; while(x<= 10){ System.out.println(x); x += 2; }

事後条件付きのwhileループについて

whileループを作成する別の方法があります。

コマンドを実行するwhile(条件)

このオプションを使用する場合、コマンドが最初に実行され、次に条件がチェックされます。 どちらのオプションも同じように機能しますが、2番目のケースでは、条件が最初にfalseであっても、ループ本体(コマンド)が少なくとも1回実行されます。

演習3

whileループを使用して、1から10までのすべての奇数を出力します。

促す:偶数を出力するためのアルゴリズムを少し変更します。

forループ演算子

forループは通常、コマンド(または一連のコマンド)の実行を何回繰り返す必要があるかが事前にわかっている場合に使用されます。 次の形式になります。

for(initコマンド;条件;ジャンプコマンド)loop-body

サイクルの開始前に、初期化コマンドが実行されます。 次に、ジャンプ条件(ブール式)がチェックされます。 この条件が真の場合、ループの本体を構成するコマンド(または中括弧で囲まれたコマンドのブロック)が実行されます。 次に、ジャンプコマンドが実行され、すべてが最初からやり直されます。 ジャンプ命令は通常、条件の真偽に影響を与える変数を変更し、初期化命令はこの変数の説明です。

通常、forループは次のように使用されます。

for(int i = 1; i<= 10; i++) тело_цикла;

この例では、loop_bodyは正確に10回実行されます。 この場合、各反復で、変数i(ループ変数と呼ばれます)が使用可能になり、1から10までの値を順番に実行します。次のプログラムフラグメントは、2から10までの偶数を出力します( whileループの例):

for(int i = 1; i<= 5; i++) System.out.println(i*2);

演習4

forループを使用して、1から10までのすべての奇数を出力します。

ステートメントを中断して続行する

ループの本体(forまたはwhile)が複数のコマンドで構成されている場合、次の反復でそれらすべてを実行する必要がない状況が発生する可能性があります。 この場合、breakステートメントとcontinueステートメントが役立ちます。

breakステートメントは、終了条件が満たされているかどうかに関係なく、現在のループの実行を終了します。

continueステートメントは、現在のループ反復の実行を終了します。 つまり、この演算子がループの本体で検出された場合、次のコマンドの残りはスキップされ、ループの新しい反復(反復)が開始されます。

結論

最初のレッスンの内容は非常に広範ですが、すべての言語の構造は同じであり、習得する必要があるだけなので、少なくとも1つのプログラミング言語にすでに精通している学生にとっては問題はありません。それらを書くためのルール(構文)。 他のプログラミング言語に精通していない場合は、マニュアルと追加タスクの解決策についてより多くの宿題が必要です。 この場合の最良のオプションは、次のレッスンの前に、文献から推奨される章を読むことです。

追加の文献

1. Vyazovik N.A. Javaプログラミング。 (第1章-4、7、10)

2. Khabibullin I.Sh. Javaセルフチュートリアル2。(第1章)

このチュートリアルでは詳しく説明されていないJavaデータ型とキャストルールに特に注意してください。 プロのプログラマーは、プログラム内で、変数値がその型で許可されている範囲を超える可能性を常に制御する必要があります。 型キャストエラーは、最も一般的で検出が難しいものの1つです。 最初の本の第4章と第7章は、優秀な成績を申請するすべての学生に強くお勧めします。

JSPページには、HTML仕様に準拠する標準構文と、Java ServerPages仕様で定義されているJSP構文の組み合わせ構文があります。 JSP構文は、標準のHTMLタグとJSPタグで構成されるJSPページを作成するためのルールを定義します。 JSPページには、HTMLタグに加えて、次のカテゴリのJSPタグが含まれています。

JSPディレクティブ

指令 JSPへの特定の要求に関するグローバル情報を提供し、翻訳段階で必要な情報を提供します。

指令常に他のすべてのタグの前にJSPページの先頭に配置されるため、 パーサー(パーサー)JSPは、テキストを解析するときに、最初にグローバル命令を強調表示しました。 したがって、JSPエンジン(JSPランタイム)はコードを解析し、JSPからサーブレットを作成します。 指令 JSPコンテナへのメッセージです。 構文 ディレクティブ JSPは次のよ​​うになります。

<%@ директива имяАтрибута="значение" %>タスクの構文 ディレクティブ XMLの場合: 指令複数の属性を持つことができます。 この場合 指令属性ごとに繰り返すことができます。 同時に、カップル "属性名=値"スペースを区切り文字として使用して、1つのディレクティブの下に配置できます。 ディレクティブには次の3つのタイプがあります。

  • ページ(ページ)
  • taglib(タグライブラリ)
  • インクルード(インクルード)

ページディレクティブ

指令 ページトランスレータに影響を与えるJSPページのプロパティを定義します。 ディレクティブ内の属性の順序 ページ重要ではない。 構文に違反したり、認識されない属性が存在したりすると、翻訳エラーが発生します。 ディレクティブの例 ページ次のコードが役立ちます。<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>このディレクティブは、このJSPページがバッファリングを使用しないこと、複数のユーザーが同時にこのJSPページにアクセスできること、および error.jsp.
指令 ページページに関する情報が含まれる場合があります。<%@ page info = "JSP Sample 1" %>可能なディレクティブ属性のリスト ページ表に示されています。
属性名意味 説明
言語 ライン 翻訳されたコードの本体を含む、JSPファイルのスクリプトレット、式、または任意のインクルードファイルで使用される言語を決定します。 デフォルトは「java」です
拡張します ライン 生成されたサーブレットのスーパークラスを指定します。 サーバーがすでにスーパークラスを使用している可能性があるため、この属性は細心の注意を払って使用する必要があります。
輸入 ライン インポートするパッケージの定義。例:
&lt%@ page import = "java.util。*%>
セッション 正しいか間違っているか 意味 NS(デフォルト)は、事前定義された変数を示します セッション(タイプHttpSession)は、既存のセッションにバインドする必要があります。バインドしない場合は、新しいセッションが作成されてバインドされます。 意味 NSセッションが使用されないことを決定し、変数へのアクセスを試みます セッション JSPページをサーブレットに変換するときにエラーが発生します
バッファ なし、またはバッファのサイズ(kB)。 JspWriter出力のバッファサイズを設定します。 デフォルト値はサーバー設定によって異なり、8kBを超えてはなりません。 値が なし出力はオブジェクトに直接送られます
autoFlush 正しいか間違っているか バッファがオーバーフローしたとき、またはエラーが発生したときに、バッファを自動的に空にするかどうかを決定します。 デフォルトは NS
isThreadSafe 正しいか間違っているか 意味 NS(デフォルト)サーブレットの通常の実行モードを指定します。作成者がそのインスタンスの変数へのアクセスを同期していると仮定して、単一のサーブレットインスタンスを使用して複数のリクエストが同時に処理されます。 偽の値は、サーブレットが継承する必要があることを示します SingleThreadModel(シングルスレッドモデル)シーケンシャルリクエストまたはコンカレントリクエストがサーブレットの個別のインスタンスによって処理される場合
情報 ライン メソッドを使用してアクセスされるJSPページに関する情報の文字列を定義します サーブレット.getServletInfo()
errorPage ライン 属性値は、例外の原因となる可能性のあるエラーの場合に表示されるページのURLです。
isErrorPage 正しいか間違っているか このページを使用して他のJSPページのエラーを処理できるかどうかを通知します。 デフォルトは NS
contentType ライン JSPページと応答のエンコーディング、およびJSP応答のMIMEタイプを指定します。 コンテンツタイプのデフォルト値は テキスト/ html、エンコーディング- ISO-8859-1。例えば:
contentType = "text / html; charset = ISO-8859-1"
pageEncoding ライン JSPページの文字エンコードを決定します。 デフォルトは 文字コード属性から contentTypeそこで定義されている場合。 値が 文字コード属性内 contentType未定義、値 pageEncoding等しく設定されている ISO-8859-1

Taglibディレクティブ

指令 taglib特定のJSPページがタグライブラリを使用することを宣言し、URIで一意に識別し、ライブラリの操作に使用できるタグプレフィックスをマップします。 コンテナがタグライブラリを見つけられない場合、致命的な変換エラーが発生します。 指令 taglib構文は次のとおりです。<%@ taglib uri="含まれているタグライブラリのURI"プレフィックス=" プレフィックス名"%>プレフィックス" プレフィックス名「ライブラリを参照するときに使用されます。タグライブラリの使用例 mytags: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . . この例では、タグライブラリにURIがあります "http://www.taglib/mytags"、文字列はプレフィックスとして割り当てられます 税関これは、タグライブラリの要素にアクセスするときにJSPページで使用されます。

ディレクティブを含める

指令 含む JSPページをサーブレットに変換するときにテキストまたはコードを挿入できます。 ディレクティブ構文 含むこのように見えます:<%@ include file="含めるページの相対URI"%>ディレクティブ 含む 1つの属性があります- ファイル..。 指定されたリソースのテキストがJSPファイルに含まれます。 このディレクティブを使用して、すべてのJSPページに標準の著作権ヘッダーを配置できます。<%@ include file="copyright.html" %>JSPコンテナはインクルードファイルにアクセスします。 インクルードファイルが変更された場合、コンテナはJSPページを再コンパイルできます。 指令 含む JSPページなどのリソースを静的オブジェクトとして扱います。 指定されたURIは通常、リンクが配置されているページのJSPを基準にして解釈されますが、他の相対URIと同様に、接頭辞を付けることで、WEBサーバーのホームディレクトリに対する対象のリソースの位置をシステムに伝えることができます。 「/」文字を含むURI。 インクルードファイルのコンテンツはプレーンJSPテキストとして扱われるため、静的HTML、スクリプト要素、ディレクティブ、アクションなどの要素を含めることができます。 多くのサイトでは、すべてのページで小さなナビゲーションバーを使用しています。 HTMLフレームの使用には問題があるため、このタスクは、ページの上または左半分に小さなテーブルを配置することで解決されることがよくあります。このテーブルのHTMLコードは、サイトのページごとに何度も繰り返されます。 指令 含む-これは、この問題を解決するための最も自然な方法であり、開発者をHTMLを個別のファイルにコピーするという悪夢から救います。 指令以来 含むページの翻訳中にファイルが含まれ、ナビゲーションバーに変更を加えた後、それを使用してすべてのJSPページを再翻訳する必要があります。 添付ファイルが頻繁に変更される場合は、アクションを使用できます jsp:含めるこれは、JSPページにアクセスするときにファイルを接続します。

JSP宣言

宣言(宣言)スクリプト言語で変数とメソッドを定義することを目的としています。これらは後でJSPページで使用されます。 構文 宣言このように見えます:<%! код Java %> 広告は宣言ブロックにあり、JSPページの式ブロックで呼び出されます。 宣言ブロックのコードは通常Javaで記述されていますが、アプリケーションサーバーは他のスクリプトの構文を使用できます。 広告 JavaBeansコンポーネントのプロパティから取得した動的データを操作するときに、機能を追加するために使用されることがあります。 の例 広告表に示されています。 発表関数の値を計算するための以下のコードのように、複数の行を含めることができます 事実(int n)、nが2未満でnの場合、これは1に等しくなります。 nの正の値で;<%! public static int fact (int n) { if (n 広告標準出力への出力を生成しません アウト..。 で宣言された変数とメソッド 発表初期化され、スクリプトレットやその他のユーザーが利用できるようになります 広告 JSPページが初期化されたとき。

JSPスクリプトレット

スクリプトレットディレクティブで定義されたスクリプト言語で記述されたさまざまなコードを含める 言語..。 コードスニペットは、言語の構文構造に準拠している必要があります スクリプトレットつまり、通常はJava言語の構文です。 スクリプトレット次の構文があります。<% текст скриптлета %>同等の構文 スクリプトレット XMLの場合: スクリプトレットテキスト
本文中の場合 スクリプトレット文字のシーケンス%>は、タグとしてではなく、文字の組み合わせとして正確に使用する必要があります-終了記号 スクリプトレット、シーケンス%>の代わりに、次の文字の組み合わせ%\>を使用します。
JSP仕様は、単純でわかりやすい例を提供します スクリプトレットこれにより、JSPページのコンテンツが1日を通して動的に変更されます。<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>おはようございます<% } else { %>こんにちは<% } %>内部のコードは注意する必要があります スクリプトレット記述どおりに挿入され、すべての静的HTMLテキスト(テンプレートテキスト)が前後に挿入されます スクリプトレット演算子を使用して変換 印刷..。 これは、スクリプトレットに完成したJavaチャンクを含める必要がなく、開いたチャンクを残しておくと、外部の静的HTMLに影響を与える可能性があることを意味します。 スクリプトレット. スクリプト式と同じ自動定義変数にアクセスできます。 したがって、たとえば、ページに情報を表示する必要がある場合は、変数を使用する必要があります アウト. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

JSP式

表現 JSPページでは、宣言で指定されたスクリプト言語で記述された実行可能な式です。 言語(通常はJava)。 結果 必要なタイプのJSP 、標準出力に送信 アウト現在のオブジェクトを使用する JspWriter..。 結果が キャストできません 、翻訳段階で問題が検出された場合に翻訳エラーが発生するか、例外がスローされます ClassCastExceptionリクエストの実行中に不整合が検出された場合。 表現次の構文があります。&lt%=式テキスト%>の代替構文 XMLを使用する場合のJSP: 式テキスト実行順序 JSPページで左から右へ。 もしも 表現複数のランタイム属性に表示され、そのタグで左から右に実行されます。 表現特定のスクリプト(通常はJava)の完全な式である必要があります。 式は、HTTPプロトコルの実行中に実行されます。 式の値は文字列に変換され、JSPファイルの適切な位置に含まれます。 通常、JSPページ宣言ブロックで定義された、またはJSPからアクセス可能なJavaBeansから派生した変数とメソッドの文字列表現を計算して表示するために使用されます。 次のコード このページのリクエストの日付と時刻を表示するのに役立ちます。現在の時刻:&lt%= new java.util.Date()%>簡略化するため 使用できる事前定義された変数がいくつかあります。 最も一般的に使用される変数は次のとおりです。
  • リクエスト、HttpServletRequest;
  • 応答、HttpServletResponse;
  • セッション、HttpSession- リクエストに関連付けられている場合。
  • アウト、PrintWriter- クライアントにデータを送信するためのJspWriterタイプのバッファバージョン。