オラクルのJavaプログラマ資格取得のために、勉強を開始した。特にアクセス修飾子が頭に入っていないので、書いて覚える、見て覚えるを実践するために以下にまとめてみた。
- 宣言
プログラムはパッケージ宣言、インポート宣言、クラス・インタフェースの定義の順で書く。どれかが欠けててもコンパイル自体はできる(クラスがないとコンパイルしてもファイルはできないが)。
パッケージとは、クラス・インタフェースをグループにまとめることである。ファイル中にpackage a;と宣言し、myclassというクラスを用意すると、a.myclassという完全修飾名が得られる。package宣言は1ファイルにつき、1つだけ許されている。
- 識別子
使える識別子は先頭が$、_、英字のみ。キーワード(publicとか)やリテラル(ソース内の値の表現0x10などの数値表現)は識別子として利用できない。
- 基本データ型
Javaの基本データ型は符号付き(C言語でいうとunsignedが"つかない"もの)である。基本データ型はboolean、byte(-128~127)、char、short、int、long、float、doubleがある。charのみ数値と見れば、符号なし整数とみなすことができる。
- 修飾子
修飾子は矛盾しない場合は、いくつつけても良い。何につけるかによって、使えるものや意味が異なる。
クラス修飾子は4種類ある。
クラス修飾子 意味 public どこからでもアクセス可能 abstract 抽象クラス(定義が不完全) final サブクラスを持てないクラス strictfp IEEE754の仕様に沿った浮動小数点の計算を行う フィールド(クラスが持つ変数)の修飾子は4種類ある。
フィールド修飾子 意味 final 値をいったん定義すると変更できない static クラスに付随する変数にする(複数のインスタンスで共有) transient シリアライズのときに保存しない。シリアライズというのは、メモリ上のバイトデータを読み書きできるよう変換するすること。 volatile コンパイラの最適化を行わない インタフェースは2種類の修飾子が利用できる。
インタフェース修飾子 意味 public abstract メソッド(クラス内の関数)の修飾子は5種類ある。
メソッド修飾子 意味 abstract 抽象メソッド(定義のないメソッド) final サブクラスで変更不可のメソッド static クラスに付随するメソッドにする(インスタンスに付随させない) synchronized 実行前にロックを取得する native プラットフォーム依存のコードで定義が書かれる。nativeと書かれたメソッドは、Java以外の言語で実装され、コンパイルされていることを示している。 コンストラクタの修飾子は3種類(何もつけないデフォルトの状態を含めると4種類)
コンストラクタ修飾子 意味 public どこからでもアクセスできる protected 同じパッケージ内のすべてからと、他のパッケージでも、そのクラスのサブクラスからのアクセスを許可する private そのクラスの内部からのみアクセスできる デフォルト(何もつけない) 同じパッケージ内からのアクセスを許可する - 静的インポート宣言
静的インポート宣言は、staticなフィールドの修飾部分を省略するために用いられる。例えば、
import static java.lang.Math.PI; import static java.lang.System.out;
とすれば、プログラム中でPI、outのように省略して書くことができる。import static java.lang.Math.*;
とすれば、Mathクラスのすべてのメソッドを省略して用いることができるが、修飾部分を除いて同じ名前のものがあるとコンパイルエラーになってしまうことには注意。 - アプレット
アプレットとは、ブラウザ内で実行されるプログラムである。ブラウザ内のJava仮想マシンがjava.applet.Appletのサブクラスのインスタンスを生成し、実行する。
0 件のコメント:
コメントを投稿