約 2,879,331 件
https://w.atwiki.jp/ce00582/pages/1127.html
import java.awt.*; class dsge extends Frame { public static void main(String[] args) { new dsge(); } dsge() { super("JAVA DSGE 33 労働供給非弾力的"); setSize(500, 500); setLayout(new BorderLayout()); MyCanvas mc1 = new MyCanvas(); add(mc1, BorderLayout.CENTER); show(); } } class MyCanvas extends Canvas { public void paint(Graphics g) { int b; int x1; int x2; int n; double data[]=new double[101]; g.drawLine(50, 450, 450,450); g.drawLine(50, 450, 50,50); data=grape(); for (n=1;n 100;n++){ x1=(int)(450-400*data[n]); x2=(int)(450-400*data[n+1]); g.drawLine(50+4*n, x1, 50+4*(n+1),x2); } } static double[] grape(){ double a; double beta; double ks; double h; double k[]=new double[101]; double cx[]=new double[101]; double cp[]=new double[101]; double cons[]=new double[101]; double k1; double n1; int n2; int n3; int n; double c1; double r1; double ep; int t; int x1; int x2; int time; double minc; double maxc; a=0.33; beta=0.95; ks=Math.pow((1 / beta - 1) / a , 1 / (a - 1)); h=2*ks/100; for (n=1;n 101;n++){ k[n]=n*h; cx[n]=Math.pow(k[n],a); } t=0; while(t 100){ for (n=10;n 91;n++){ k1=k[n]+Math.pow(k[n],a)-cx[n]; n1=k1/h; n2=(int)n1; n3=n2+1; c1=cx[n2]+(n1-n2)*(cx[n3]-cx[n2]); r1=a*Math.pow(k1,a-1); cp[n]=c1/(beta*(1+r1)); } ep=0; for (n=10;n 91;n++){ ep=ep+Math.pow(cx[n]-cp[n],2); } for (n=10;n 91;n++){ cx[n]=cp[n]; } if (ep 0.0001){ t=1000; } t=t+1; } k1=k[45]; for (time=1;time 101;time++){ n1=k1/h; n2=(int)n1; n3=n2+1; cons[time]=cx[n2]+(n1-n2)*(cx[n3]-cx[n2]); k1=k1+Math.pow(k1,a)-cons[time]; } minc=999; for (time=1;time 101;time++){ if(cons[time] minc)minc=cons[time]; } maxc=-999; for (time=1;time 101;time++){ if(cons[time] maxc)maxc=cons[time]; } for (time=1;time 101;time++){ cons[time]=(cons[time]-minc)/(maxc-minc); } return cons; } }
https://w.atwiki.jp/api_programming/pages/107.html
下位ページ Content 文字列文字列の値を確認isEmpty() 文字列の切り出し先頭のi文字目を出す 最後のn文字を切り落とす 文字列の探索 文字列の置換 文字列の分解 エスケープシーケンス http //www.viste.com/Java/Language/language4.html 文字列 java.lang.String java.lang.StringBuilder 文字列の値を確認 isEmpty() 長さが0だとtrueを返す。但し、文字列がnull(初期化されていない)と、エラーになるので注意する(nullは長さ0(length()==0)では無い。) isEmpty() 文字列の切り出し 先頭のi文字目を出す String.charAt(i-1) インデックスは0から始まる 最後のn文字を切り落とす 文字列の長さを取得(length) 文字列の長さ length-1 を返す int len = str.length(); str.substring(0,len-1-n); 文字列の探索 s1を探して、開始位置を返す String.indexOf(s1) indexOf(s1) 開始位置をずらして(オフセットして)、s1を探す String.indexOf(s1,offset) 文字列の置換 実行した文字列自体は変更されず、置換した結果は戻り値として得られる。 str.replace(c1,c2) replace str.replaceAll(regex, replacement) ← 正規表現が使える replaceAll 文字列の分解 public String[] split(String regex) 正規表現が使える string.split() エスケープシーケンス JavaDrive
https://w.atwiki.jp/matlab/pages/24.html
DIできるもの マルチスレッド 参考 <link_pdfプラグインはご利用いただけなくなりました。> DIできるもの JavaEE5では、EJBコンテナ及びWebコンテナが管理するオブジェクトをDIする仕組みを持っている。 注入対象オブジェクト(注入するオブジェクト) セッションBean データソース JMSのコネクションファクトリ JMSのディスティネーション JavaMailのセッション JTAのユーザトランザクション EJBコンテキスト JPAエンティティマネージャ JPAエンティティマネージャファクトリ タイマーサービス 注入先オブジェクト(注入される・してもらうオブジェクト) Webコンポーネント サーブレット フィルタ リスナ タグハンドラ マネージドBean EJBコンポーネント セッションBean インターセプタ メッセージ駆動Bean Webサービスコンポーネント サービス実装クラス マルチスレッド マルチスレッド環境のインスタンス変数は以下のような対策でスレッドセーフにておく必要がある。 インスタンス変数を、状態を持たないオブジェクトにする インスタンス変数を、イミュータブルオブジェクトにする インスタンス変数内の状態に対する更新処理を、synchronizedブロックで同期化する ※イミュータブルオブジェクトとは、一度インスタンスを生成すると以降状態を変更できないオブジェクトをいう。 注入先オブジェクトの複数スレッド同時アクセス 注入先オブジェクト 生成単位 複数スレッドからの同時アクセス サーブレット web.xmlのservlet要素ごと あり フィルタ web.xmlのfilter要素ごと あり リスナ web.xmlのlistener要素ごと あり タグハンドラ リクエストごと なし マネージドBean(アプリケーションスコープ) Webアプリケーションごと あり マネージドBean(セッションスコープ) セッションごと あり マネージドBean(リクエストスコープ) リクエストごと なし セッションBean コンテナに複数のオブジェクトをプール なし インターセプタ コンテナに複数のオブジェクトをプール なし メッセージ駆動Bean コンテナに複数のオブジェクトをプール なし サービス実装クラス(WAR) ひとつ あり サービス実装クラス(EJB-JAR) コンテナに複数のオブジェクトをプール なし 注入対象オブジェクトのスレッドセーフ 注入対象オブジェクト スレッドセーフか? セッションBean 実装依存 データソース 実装依存 JMSのコネクションファクトリ スレッドセーフ JMSのディスティネーション スレッドセーフ JavaMailのセッション 実装依存 JTAのユーザトランザクション スレッドセーフ EJBコンテキスト スレッドセーフ JPAエンティティマネージャ スレッドセーフでない JPAエンティティマネージャファクトリ スレッドセーフ タイマーサービス スレッドセーフ 注入先オブジェクトが複数スレッド同時アクセスありで、そこへ注入する注入対象オブジェクトがスレッドセーフでない場合は採用してはいけない。 たとえば、サーブレットへJPAのエンティティマネージャを注入してはいけない。 この場合、スレッドセーフなエンティティマネージャファクトリを注入し、そこからエンティティマネージャを取得して解決する。 参考 UFJIS株式会社 斉藤賢哉、マスタリングJavaEE5、翔泳社、2007年
https://w.atwiki.jp/ce00582/pages/3848.html
import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*; public class game0822{ Color3f lightc; Vector3f lightd; DirectionalLight light; BranchGroup group; game0822(){ SimpleUniverse univ = new SimpleUniverse(); group = new BranchGroup(); group.addChild(new ColorCube(0.3)); light3d(); univ.getViewingPlatform().setNominalViewingTransform(); univ.addBranchGraph(group); } public static void main( String[] args ) { new game0822(); } void light3d(){ lightc = new Color3f(1.8f, 0.1f, 0.1f); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); lightd = new Vector3f(4.0f, -7.0f, -12.0f); light= new DirectionalLight(lightc, lightd); light.setInfluencingBounds(bounds); group.addChild(light); } }
https://w.atwiki.jp/kindaidensan/pages/12.html
java班 Java班のトップページです。現在ライブラリ(DJGL)の使い方の解説を執筆中です。 Javaでゲームを作るためのライブラリです。 このwikiではJavaでゲームを作成するときのノウハウ的なのも載せています。Java用に書いていますが、他の言語とかゲームエンジンでも応用出来ると思います。 部内用に作りましたけど部外・学外の方でも利用可能です。 ライセンスはMITのつもりですけど、別に著作権表示とかライセンスの表示はいりません。あったら作者が嬉しいな程度です。 左のメニューに載ってないページは作りかけのページです。 ライブラリ本体のあるページ DJGL-更新履歴 ライブラリのjavadoc http //kiki33.bitbucket.org/ テンプレート 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/mitsu_koh/pages/45.html
このページは独習Javaを必要そうなところだけざっとまとめたものです。 Javaは完全素人なので間違っているところがあったら教えてください。 数値リテラル 整数リテラル:int型とみなされる 少数または指数を含む:double型とみなされる longにしたいときはL、floatにしたいときはfかFをつける。 配列 varName.lengthで要素数を取得できる C言語みたいに領域割り当てと初期化が可能(もっと便利) int a[][] = {{0},{0,1},{0,1,2}}; とか書くとa[0].lengthは1、a[1].lengthは2、a[2].lengthは3になる Mathクラス 数学演算をサポートする Mathはクラスであって、静的メソッド、変数が定義されてるのでMath.mthodName(args)とかMath.varNameで呼び出し、参照が可能 Integerクラス intのラップクラスであり、インスタンスをつくるとオブジェクトは不変 静的メソッドではvalueOf(String s)とかが定義されている インスタンスメソッドではtoString()とかintValue()とかが定義されている intとString間の変換 class Integer_prac { public static void main(String[] args) { // convert String into int String s = "123456789"; System.out.printf("%d\n", Integer.parseInt(s)); System.out.printf("%d\n", Integer.valueOf(s).intValue()); System.out.printf("%d\n", new Integer(s).intValue()); // convert int into String int i = 123456789; System.out.printf("%s\n", Integer.valueOf(i).toString()); System.out.printf("%s\n", new Integer(i).toString()); } } 他のラップクラス 基本データ型それぞれに対応するラップクラスが存在する。Boolean, Double, Longとか toString()とかvalueOf()とか-Value()とかparse-とかのメソッドを使うとStringとかと変換できる StringBufferクラス Stringのラップクラス。C++のstringstream的なもの? Systemクラス ランタイム環境周りのメソッドが定義されている void exit(int code)とかvoid arraycopy(Object src, int src_ind, Object dest, int dest_ind, int size)とかよく使う 制御文と演算子 基本的にCと同じ 継承 クラス宣言時にextendsキーワードを使う class SubClass extends SuperClass { } スーパークラスの変数を参照したい時にはsuper.varNameでできる メソッドも同様にsuper.methodName(args)で呼び出しが可能 スーパクラスのコンストラクタ呼び出しはsuper(args)で、同一クラスのコンストラクタ呼び出しはthis(args)でできる super()とthis()の両方を使うことは不可能。またコンパイラはsuper()かthis()を明示的に使わないとsuper()を勝手に呼び出す 以下の場合はSuperClass(), SubClass()の順に呼び出される class SuperClass { SuperClass() { System.out.println("SuperClass()"); } } class SubClass extends SuperClass { SubClass() { System.out.println("SubClass()"); } SubClass(int i) { System.out.println("SubClass(int i)"); } } class Main { public static void main(String[] args) { SubClass subc = new SubClass(); } } クラス修飾子 省略:現在のパッケージ内からしかこのクラスを参照することができない public:他の全てのクラスからこのクラスを参照することができる abstract:抽象クラス final:クラス内で実装されたメソッドをオーバーライドできなくなる 変数の修飾子(よく使うのだけ) 省略:同じパッケージ private:同じクラスのみ protected:サブクラス、同じパッケージ public:他のクラスなんでも final:定数 static:クラス変数 メソッドの修飾子(よく使うのだけ) 省略:同じパケージ private:同じクラスのみ protected:サブクラス、同じパッケージ public:他のクラス何でも abstract:抽象メソッド的なもの(クラスはabstractで宣言されている必要あり) final:オーバーライド不可 static:クラスメソッド Objectクラス Javaのクラス階層の頂点で全てのオブジェクトはObjectクラスを継承している boolean equals(Object obj)は2つの変数が同じオブジェクトを参照しているかを調べる(同じメモリ番地をさしているかという意味) つまり以下の実行結果はtrue, falseになる ... SubClass subc = new SubClass(); SubClass subc1 = new SubClass(); System.out.println(subc.equals(subc)); System.out.println(subc.equals(subc1)); ... インターフェイス クラスの形式を定義する定数とメソッド宣言を集めた物。つまりクラスの表面上の役割(インターフェイス)を示す インターフェイスはクラスに実装"される"ものであって、クラスは複数のインターフェイスを実装することができる インターフェイスを実装するクラスでは、インターフェイスで宣言されているメソッドを全て実装しなければならない クラスにインターフェイスを実装するときの宣言は例えば以下(extends Shapeはなくてもいい。implementsキーワードとの順番はこうでなくてはならない) public class Circle extends Shape implements Shape2D { // Shape2Dでは2次元図形に必要なメソッドが宣言されていたりする // なのでimplementsすることでCircleクラスの役割がわかりやすくなる // CircleクラスだけじゃなくRectangleとかTriangleとかでもインターフェースを実装することができる // Shapeクラスだけに全ての機能を持たせるのではなく、抽象的な処理を分離しておくことで問題の分離が可能 // インターフェイス経由で実行時ポリモーフィズムも提供できる // C++みたいに多重継承できないのでこれでがんばる } この例よりもAPIでの使われ方を見るのが一番早く理解可能 例えばArrayDeque"クラス"はDeque"インターフェイス"を実装している。なので以下みたいなコードが書ける(スタックとキュー) int i, N = 10; Deque Integer q = new ArrayDeque Integer (); // stack for (i = 0; i N; ++i) q.addLast(i); for (i = 0; i N; ++i) System.out.printf("%d ", q.removeLast()); System.out.println(); // queue for (i = 0; i N; ++i) q.add(i); for (i = 0; i N; ++i) System.out.printf("%d ", q.remove()); System.out.println(); || これはArrayDequeクラスだけに限ったことではなく、LinkedListクラスとかでもいい。そのため、目的に応じて実装されているクラス(ArrayDequeやLinkedList等)を使い分けることができる ちなみにインターフェイスも継承可能 複数のスーパーインターフェイスに同じ変数名があるとコンパイルエラー(どっちを参照すればいいかわからないため。implementsしたクラスで隠蔽は可能) メソッドを隠蔽する場合は同じ戻り値でなければコンパイルエラー パッケージ 同じ役割や目的をもつクラスやインターフェイスの集まりをひとつにしたもの よく使ってるパッケージは例えばjava.ioとかjava.langとかjava.utilパッケージがある "."(ドット)を使った階層構造のも可能 import文 同じパッケージ内のクラス以外のパッケージにアクセスするには、完全修飾名を使う(例えばjava.awt.event.MouseEventと書くとjava.awt.eventパッケージのMouseEventクラスにアクセスできる) いちいち完全修飾名は使ってられない。そのためにimportがある java.langパッケージはコンパイラが自動でインポートするからいちいち書かなくていい 静的import文を使うとクラス名を省くこともできる(import static java.lang.Math.*; と書くと cos(), PI というふうに書ける) ジェネリクス よくわからないけど多分コンテナを定義するときに型の整合性をちゃんとするために書くもの。C++だと普通にいつも書くよねであってる? というよりもクラステンプレートのclassとかtypename的なものでもあるっぽい? イテレーター ArrayListクラスとかにはIteratorインターフェイスが実装されている 以下のプログラムの出力は全て同じ import java.util.ArrayList; import java.util.Iterator; class Iterator_prac { public static void main(String[] args) { int N = new Integer(10); ArrayList Integer a = new ArrayList Integer (); for (int i = 0; i N; ++i) a.add(i); for (int i = 0; i N; ++i) System.out.printf("%d ", a.get(i)); System.out.println(); for (int i a) System.out.printf("%d ", i); System.out.println(); for (Integer i a) System.out.printf("%d ", i); System.out.println(); // need to import java.util.Iterator for (Iterator it = a.iterator(); it.hasNext(); ) System.out.printf("%d ", it.next()); System.out.println(); for (Iterator Integer it = a.iterator(); it.hasNext(); ) System.out.printf("%d ", it.next()); System.out.println(); } } vectorとmapとset Vectorは古いからArrayList使いましょう とりあえずTreeSetとTreeMap使っとけばよさそう ここがわかりやすい(http //www.tohoho-web.com/java/collection.htm) つづく 参考文献 独習Java第4版 JavaTM Platform, Standard Edition 6 API 仕様
https://w.atwiki.jp/ochamemo/pages/32.html
オチャメモ アプレットが起動しない、JAVAコントロールパネルが灰色になる [#p2aea15b] JAVA Web Start が起動しない [#d9bf40dc] 現象 [#ac1b91cb] 原因 [#g85e6633] 対処 [#x92c2867] JAVA Web Start が起動時に関連付けダイアログが表示されてしまう。[#d9bf40dc] 症状 [#u2610d22] 原因 [#b305191e] 対処 [#h17d5f73] アプレットが起動しない、JAVAコントロールパネルが灰色になる JAVAコントロールパネルを起動させると、ウィンドウウが灰色のまま何も表示されない。-JavaWebStartでアプリを起動するとウィンドウが灰色のまま何も起動しない。 調査の結果、アンチエイリアシング機能を無効にすると治るらしい。 画面のプロパティティ→詳細ボタン→3Dタブ→Direct3Dのカスタム選択-アンチエイリアシングでアプリケーションで設定をチェックする 以下に解決策あり。 http //www.java.com/ja/download/help/5000041100.xml JAVA Web Start が起動しない 現象 FireFoxでJavaWebStartをアプリを起動-ダイアログが開き、JNPLファイルと認識され、JavaWebStartで起動する状態になる-OKを押すと、関連付けファイルが起動しませんでした。と表示され起動できない**原因 [#g85e6633] JREが起動しなかった時、試行錯誤して、Hoge.Gameという上記ファイルを JavaWebStartに関連付けてしまっていた。Hoge.Gameはクラスなので JavaWebStartに関連付けてもうまく起動しない。 JNPLを渡さなければならない (これはシステムで勝手に割り当てられている) 要するにこっちで勝手に観レ付けをしてしまったのが原因。 対処 エクスプローラのツール→フォルダオプションからファイルタイプを選択-.Gameの関連付けを削除 JAVA Web Start が起動時に関連付けダイアログが表示されてしまう。 症状 上記対処を施した後、当該プログラムのリンクを起動しても、なぜかファイルの関連付け のダイアログが開いてしまう。キャンセルすると当該プログラムが起動できないので JavaWebStartを選択する必要がある。しかしココで「常にこの関連付けを使用する」 をチェックするとまた上記のエラーに戻ってしまうので外しておく必要がある。 リンク先がhoge.piyo.Gameのように「.Game」になっていると駄目なのかもしれない。 原因 対処
https://w.atwiki.jp/ce00582/pages/1126.html
import java.awt.*; class dsge extends Frame { public static void main(String[] args) { new dsge(); } dsge() { super("JAVA DSGE TEST"); setSize(500, 500); setLayout(new BorderLayout()); MyCanvas mc1 = new MyCanvas(); add(mc1, BorderLayout.CENTER); show(); } } class MyCanvas extends Canvas { public void paint(Graphics g) { int b; int x1; int x2; int n; double data[]=new double[101]; g.drawLine(50, 450, 450,450); g.drawLine(50, 450, 50,50); data=grape(); for (n=1;n 100;n++){ x1=(int)(450-400*data[n]); x2=(int)(450-400*data[n+1]); g.drawLine(50+4*n, x1, 50+4*(n+1),x2); } } static double[] grape(){ double a; double beta; double ks; double h; double k[]=new double[101]; double cx[]=new double[101]; double cp[]=new double[101]; double cons[]=new double[101]; double k1; double n1; int n2; int n3; int n; double c1; double r1; double ep; int t; int x1; int x2; int time; double minc; double maxc; a=0.33; beta=0.95; ks=Math.pow((1 / beta - 1) / a , 1 / (a - 1)); h=2*ks/100; for (n=1;n 101;n++){ k[n]=n*h; cx[n]=Math.pow(k[n],a); } t=0; while(t 100){ for (n=10;n 91;n++){ k1=k[n]+Math.pow(k[n],a)-cx[n]; n1=k1/h; n2=(int)n1; n3=n2+1; c1=cx[n2]+(n1-n2)*(cx[n3]-cx[n2]); r1=a*Math.pow(k1,a-1); cp[n]=c1/(beta*(1+r1)); } ep=0; for (n=10;n 91;n++){ ep=ep+Math.pow(cx[n]-cp[n],2); } for (n=10;n 91;n++){ cx[n]=cp[n]; } if (ep 0.0001){ t=1000; } t=t+1; } k1=k[40]; for (time=1;time 101;time++){ n1=k1/h; n2=(int)n1; n3=n2+1; cons[time]=cx[n2]+(n1-n2)*(cx[n3]-cx[n2]); k1=k1+Math.pow(k1,a)-cons[time]; } minc=999; for (time=1;time 101;time++){ if(cons[time] minc)minc=cons[time]; } maxc=-999; for (time=1;time 101;time++){ if(cons[time] maxc)maxc=cons[time]; } for (time=1;time 101;time++){ cons[time]=(cons[time]-minc)/(maxc-minc); } return cons; } }
https://w.atwiki.jp/akios/pages/18.html
注意 訳の元文はJava Language Specificationです。 ですます調です。 権利関係の詳細を確認していないので、この訳が問題になることがあります。 この訳は個人的なものなので、間違いが多々あります。 内容を勝手に解釈した上で意訳をすることが多々あります。 理解しやすいように語を補足することがあります。 wiki書式に合わせるため書式等を変えることがあります。 使用されている用語に対しできるだけ単一の訳語を割り当てます。 訳者はこの訳を利用したことによる損害の責任を一切負いません。 全部やりきるかどうか分かりません。 Java言語仕様 Java SE 7版 James Gosling Bill Joy Guy Steele Gilad Bracha Alex Buckley 2012-07-27 目次 序文 第1版 序文 第2版 序文 第3版 序文 Java SE 7版 1. はじめに 1.1. 仕様の構成 1.2. プログラム例 1.3. 記法 1.4. 組込みクラスやインタフェースとの関係 1.5. 参考文献 2. 文法 2.1. 文脈自由文法 2.2. 字句文法 2.3. 構文文法 2.4. 文法記法 3. 字句構造 3.1. Unicode 3.2. 字句変換 3.3. Unicodeエスケープ 3.4. 行終端子 3.5. 入力要素とトークン 3.6. 空白 3.7. コメント 3.8. 識別子 3.9. キーワード 3.10. リテラル 3.10.1. 整数リテラル 3.10.2. 浮動小数点リテラル 3.10.3. ブールリテラル 3.10.4. 文字リテラル 3.10.5. 文字列リテラル 3.10.6. 文字・文字列リテラル用のエスケープシーケンス 3.10.7. ヌルリテラル 3.11. 分離子 3.12. 演算子 4. 型と値と変数 4.1. 型と変数の種類 4.2. プリミティブ型と値 4.2.1. 整数型と値 4.2.2. 整数演算 4.2.3. 浮動小数点型と書式と値 4.2.4. 浮動小数点演算 4.2.5. ブール型とブール値 4.3. 参照型と値 4.3.1. オブジェクト 4.3.2. Objectクラス 4.3.3. Stringクラス 4.3.4. 参照型が同じである条件 4.4. 型変数 4.5. 引数付き型 4.5.1. 型実引数とワイルドカード 4.5.2. 引数付き型のメソッドとコンストラクター 4.6. 型の抹消 4.7. 具象可能型 4.8. 未加工型 4.9. 交差型 4.10. サブタイプ化 4.10.1. プリミティブ型間のサブタイプ化 4.10.2. クラスやインタフェース型間のサブタイプ化 4.10.3. 配列型間のサブタイプ化 4.11. 型の使用箇所 4.12. 変数 4.12.1. プリミティブ型の変数 4.12.2. 参照型の変数 4.12.3. 変数の種類 4.12.4. final変数 4.12.5. 変数の初期値 4.12.6. 型とクラスとインタフェース 5. 変換と昇格 5.1. 変換の種類 5.1.1. 恒等変換 5.1.2. 拡幅プリミティブ変換 5.1.3. 縮幅プリミティブ変換 5.1.4. 拡幅と縮幅プリミティブ変換 5.1.5. 拡幅参照変換 5.1.6. 縮幅参照変換 5.1.7. ボックス化変換 5.1.8. ボックス化解除変換 5.1.9. 未検査変換 5.1.10. 捕捉変換 5.1.11. 文字列変換 5.1.12. 禁止変換 5.1.13. 値集合変換 5.2. 代入変換 5.3. メソッド呼び出し変換 5.4. 文字列変換 5.5. キャスト変換 5.5.1. 参照型のキャスト 5.5.2. 検査済みキャストと未検査キャスト 5.5.3. 実行時の検査済みキャスト 5.6. 数値昇格 5.6.1. 単項数値昇格 5.6.2. 2項数値昇格 6. 名前 6.1. 宣言 6.2. 名前と識別子 6.3. 宣言のスコープ 6.4. 覆い隠しと不明瞭化 6.4.1. 覆い隠し 6.4.2. 不明瞭化 6.5. 名前の意味の決定 6.5.1. 文脈に従った名前の構文上の分類 6.5.2. 文脈的にあいまいな名前の再分類 6.5.3. パッケージ名の意味 6.5.3.1. 単純パッケージ名 6.5.3.2. 限定パッケージ名 6.5.4. PackageOrTypeNamesの意味 6.5.4.1. 単純PackageOrTypeNames 6.5.4.2. 限定PackageOrTypeNames 6.5.5. 型名の意味 6.5.5.1. 単純型名 6.5.5.2. 限定型名 6.5.6. 式名の意味 6.5.6.1. 単純式名 6.5.6.2. 限定式名 6.5.7. メソッド名の意味 6.5.7.1. 単純メソッド名 6.5.7.2. 限定メソッド名 6.6. アクセス制御 6.6.1. アクセス可能性の決定 6.6.2. protectedアクセスの詳細 6.6.2.1. protectedメンバーへのアクセス 6.6.2.2. protectedコンストラクターへの限定アクセス 6.7. 完全限定名と正規名 7. パッケージ 7.1. パッケージメンバー 7.2. パッケージのホストサポート 7.3. コンパイル単位 7.4. パッケージ宣言 7.4.1. 名前付きパッケージ 7.4.2. 名前なしパッケージ 7.5. インポート宣言 7.5.1. 単一型インポート宣言 7.5.2. オンデマンド型インポート宣言 7.5.3. 単一静的インポート宣言 7.5.4. オンデマンド静的インポート宣言 7.6. 最上位型宣言 8. クラス 8.1. クラス宣言 8.1.1. クラス修飾子 8.1.1.1. abstractクラス 8.1.1.2. finalクラス 8.1.1.3. strictfpクラス 8.1.2. ジェネリッククラスと型引数 8.1.3. 内部クラスと囲みインスタンス 8.1.4. スーパークラスとサブクラス 8.1.5. スーパーインタフェース 8.1.6. クラス本体とメンバー宣言 8.2. クラスメンバー 8.3. フィールド宣言 8.3.1. フィールドメンバー 8.3.1.1. staticフィールド 8.3.1.2. finalフィールド 8.3.1.3. transientフィールド 8.3.1.4. volatileフィールド 8.3.2. フィールドの初期化 8.3.2.1. クラス変数の初期化子 8.3.2.2. インスタンス変数の初期化子 8.3.2.3. 初期化中のフィールド使用に関する制限 8.4. メソッド宣言 8.4.1. 仮引数 8.4.2. メソッドのシグネチャー 8.4.3. メソッド修飾子 8.4.3.1. abstractメソッド 8.4.3.2. staticめそっど 8.4.3.3. finalメソッド 8.4.3.4. nativeメソッド 8.4.3.5. strictfpメソッド 8.4.3.6. synchronizedメソッド 8.4.4. ジェネリックメソッド 8.4.5. メソッドの戻り型 8.4.6. メソッドのスロー 8.4.7. メソッド本体 8.4.8. 継承と上書きと隠ぺい 8.4.8.1. 上書き (インスタンスメソッドによる) 8.4.8.2. 隠ぺい (クラスメソッドによる) 8.4.8.3. 上書きと隠ぺいの要件 8.4.8.4. 上書き等価シグネチャー付き継承メソッド 8.4.9. オーバーロード 8.5. メンバー型宣言 8.5.1. 静的メンバー型宣言 8.6. インスタンス初期化子 8.7. 静的初期化子 8.8. コンストラクター宣言 8.8.1. 仮引数と型引数 8.8.2. コンストラクターのシグネチャー 8.8.3. コンストラクター修飾子 8.8.4. ジェネリックコンストラクター 8.8.5. コンストラクターのスロー 8.8.6. コンストラクターの型 8.8.7. コンストラクター本体 8.8.7.1. 明示的コンストラクターの呼び出し 8.8.8. コンストラクターのオーバーロード 8.8.9. デフォルトコンストラクター 8.8.10. クラスのインスタンス化の抑制 8.9. 列挙子 8.9.1. 列挙子定数 8.9.2. 列挙子本体宣言 9. インタフェース 9.1. インタフェース宣言 9.1.1. インタフェース修飾子 9.1.1.1. abstarctインタフェース 9.1.1.2. strictfpインタフェース 9.1.2. ジェネリックインタフェースと型引数 9.1.3. スーパーインタフェースとサブインタフェース 9.1.4. インタフェース本体とメンバー宣言 9.2. インタフェースメンバー 9.3. フィールド (定数) 宣言 9.3.1. インタフェース内のフィールドの初期化 9.4. 抽象メソッド宣言 9.4.1. 継承と上書き 9.4.1.1. 上書き (インスタンスメソッドによる) 9.4.1.2. 上書きの要件 9.4.1.3. 上書き等価シグネチャー付き継承メソッド 9.4.2. オーバーロード 9.5. メンバー型宣言 9.6. 注釈型 9.6.1. 注釈型の要素 9.6.2. 注釈型の要素のデフォルト 9.6.3. 組込み注釈型 9.6.3.1. @Target 9.6.3.2. @Retention 9.6.3.3. @Inherited 9.6.3.4. @Override 9.6.3.5. @SuppressWarnings 9.6.3.6. @Deprecated 9.6.3.7. @SafeVarargs 9.7. 注釈 9.7.1. 通常の注釈 9.7.2. マーカー注釈 9.7.3. 単一要素注釈 10. 配列 10.1. 配列型 10.2. 配列変数 10.3. 配列作成 10.4. 配列へのアクセス 10.5. 配列保存例外 10.6. 配列初期化子 10.7. 配列メンバー 10.8. 配列のためのClassオブジェクト 10.9. Stringでない文字の配列 11. 例外 11.1. 例外の種類と発生要因 11.1.1. 例外の種類 11.1.2. 例外の発生要因 11.2. 例外のコンパイル時検査 11.2.1. 式の例外解析 11.2.2. 文の例外解析 11.2.3. 例外検査 11.3. 実行時の例外の扱い 12. 実行 12.1. Java仮想マシンの起動 12.1.1. Testクラスのロード 12.1.2. Testのリンク 検証、準備、(省略可能な)名前解決 12.1.3. Testの初期化 初期化子の実行 12.1.4. Test.mainの呼び出し 12.2. クラスとインスタンスのロード 12.2.1. ロード処理 12.3. クラスとインスタンスのリンク 12.3.1. バイナリ表現の検証 12.3.2. クラスやインタフェース型の準備 12.3.3. 名前参照の解決 12.4. クラスとインタフェースの初期化 12.4.1. 初期化の実行時点 12.4.2. 初期化手続きの詳細 12.5. 新しいクラスインスタンスの作成 12.6. クラスインスタンスの終了化子 12.6.1. 終了化子の実装 12.6.2. メモリーモデルとの相互処理 12.7. クラスとインタフェースのロード解除 12.8. プログラムの終了 13. バイナリ―互換性 13.1. バイナリ―の形式 13.2. バイナリ―互換性の有無 13.3. パッケージの展開 13.4. クラスの展開 13.4.1. abstractクラス 13.4.2. finalクラス 13.4.3. publicクラス 13.4.4. スーパークラスとスーパーインタフェース 13.4.5. クラス型引数 13.4.6. クラス本体とメンバー宣言 13.4.7. メンバーとコンストラクターへのアクセス 13.4.8. フィールド宣言 13.4.9. finalフィールドと定数 13.4.10. staticフィールド 13.4.11. transientフィールド 13.4.12. メソッドとコンストラクターの宣言 13.4.13. メソッドとコンストラクターの型引数 13.4.14. メソッドとコンストラクターの仮引数 13.4.15. メソッドの戻り型 13.4.16. abstractメソッド 13.4.17. finalメソッド 13.4.18. nativeメソッド 13.4.19. staticメソッド 13.4.20. synchronizedメソッド 13.4.21. メソッドとコンストラクターのスロー 13.4.22. メソッドとコンストラクターの本体 13.4.23. メソッドとコンストラクターのオーバーロード 13.4.24. メソッドの上書き 13.4.25. 静的初期化子 13.4.26. 列挙子の展開 13.5. インタフェースの展開 13.5.1. publicインタフェース 13.5.2. スーパーインタフェース 13.5.3. インタフェースメンバー 13.5.4. インタフェース型引数 13.5.5. フィールド宣言 13.5.6. abstractメソッド 13.5.7. 注釈型の展開 14. ブロックと文 14.1. 文の正常完了と中途完了 14.2. ブロック 14.3. 局所クラス宣言 14.4. 局所変数宣言文 14.4.1. 局所変数宣言と型 14.4.2. 局所変数宣言の実行 14.5. 文 14.6. 空文 14.7. ラベル付き文 14.8. 式文 14.9. if文 14.9.1. if-then文 14.9.2. if-then-else文 14.10. assert文 14.11. switch文 14.12. while文 14.12.1. while文の中途完了 14.13. do文 14.13.1. do文の中途完了 14.14. for文 14.14.1. for文の基本 14.14.1.1. for分の初期化 14.14.1.2. for分の繰り返し 14.14.1.3. for分の中途終了 14.14.2. 高度なfor文 14.15. break文 14.16. continue文 14.17. return文 14.18. throw文 14.19. synchronized文 14.20. try文 14.20.1. try-catchの実行 14.20.2. try-finallyとtry-catch-finallyの実行 14.20.3. リソース付きtry 14.20.3.1. リソース付きtryの基本 14.20.3.2. 高度なリソース付きtry 14.21. 未到達文 15. 式 15.1. 評価と表現と結果 15.2. 値としての変数 15.3. 式の型 15.4. FP厳密式 15.5. 式と実行時検査 15.6. 評価の正常完了と中途完了 15.7. 評価順序 15.7.1. 左辺オペランドを最初に評価 15.7.2. 演算前のオペランドの評価 15.7.3. 括弧と優先順位の評価 15.7.4. 引数リストは左から右に評価 15.7.5. 他の式の評価順序 15.8. 一次式 15.8.1. 字句リテラル 15.8.2. クラスリテラル 15.8.3. this 15.8.4. 限定this 15.8.5. 括弧で括られた式 15.9. クラスインスタンス作成式 15.9.1. インスタンス化するクラスの決定 15.9.2. 囲みインスタンスの決定 15.9.3. コンストラクターとその引数の選択 15.9.4. クラスインスタンス作成式の実行時評価 15.9.5. 匿名クラス宣言 15.9.5.1. 匿名コンストラクター 15.10. 配列作成式 15.10.1. 配列作成式の実行時評価 15.11. フィールドアクセス式 15.11.1. 一次式によるフィールドアクセス 15.11.2. superによるスーパークラスのメンバーへのアクセス 15.12. メソッド呼び出し式 15.12.1. コンパイル時ステップ1 検索するクラスまたはインタフェースの決定 15.12.2. コンパイル時ステップ2 メソッドシグネチャーの決定 15.12.2.1. 潜在的に適用可能メソッドの識別 15.12.2.2. フェーズ1 サブタイプ化による適用可能な項数が一致するメソッドの識別 15.12.2.3. フェーズ2 メソッド呼び出し変換による適用可能な項数が一致するメソッドの識別 15.12.2.4. フェーズ3 適用可能な可変項数メソッドの識別 15.12.2.5. 最も具体的なメソッドの選択 15.12.2.6. メソッドの戻りとスローの型 15.12.2.7. 実引数による型実引数の推論 15.12.2.8. 未解決型実引数の推論 15.12.3. コンパイル時ステップ3 選択されたメソッドは適切か? 15.12.4. メソッド呼び出しの実行時評価 15.12.4.1. ターゲット参照の計算 (必要な場合) 15.12.4.2. 引数の評価 15.12.4.3. 型とメソッドのアクセス可能性の検査 15.12.4.4. 呼び出すメソッドの位置確認 15.12.4.5. フレームの作成、同期化、制御の移行 15.13. 配列アクセス式 15.13.1. 配列アクセスの実行時評価 15.14. 後置式 15.14.1. 式名 15.14.2. 後置インクリメント演算子++ 15.14.3. 後置デクリメント演算子-- 15.15. 単項式 15.15.1. 単項インクリメント演算子++ 15.15.2. 単項デクリメント演算子-- 15.15.3. 単項プラス演算子+ 15.15.4. 単項マイナス演算子- 15.15.5. ビット単位補数演算子~ 15.15.6. 論理補数演算子! 15.16. キャスト式 15.17. 乗法演算子 15.17.1. 乗算演算子* 15.17.2. 除算演算子/ 15.17.3. 剰余演算子% 15.18. 加法演算子 15.18.1. 文字列連結演算子+ 15.18.2. 数値型加法演算子+と- 15.19. シフト演算子 15.20. 関係演算子 15.20.1. 数値比較演算子 と =と と = 15.20.2. 型比較演算子instanceof 15.21. 等価演算子 15.21.1. 数値等価演算子==と!= 15.21.2. ブール等価演算子==と!= 15.21.3. 参照等価演算子==と!= 15.22. ビット単位および論理演算子 15.22.1. 整数ビット単位演算子&と^と| 15.22.2. ブール論理演算子&と^と| 15.23. 条件AND演算子&& 15.24. 条件OR演算子|| 15.25. 条件演算子? 15.26. 代入演算子 15.26.1. 単純代入演算子= 15.26.2. 複合代入演算子 15.27. 式 15.28. 定数式 16. 確実な代入 16.1. 確実な代入と式 16.1.1. ブール定数式 16.1.2. 条件AND演算子&& 16.1.3. 条件OR演算子|| 16.1.4. 論理補数演算子! 16.1.5. 条件演算子? 16.1.6. 条件演算子? 16.1.7. boolean型のその他の式 16.1.8. 代入式 16.1.9. 演算子++と-- 16.1.10. その他の式 16.2. 確実な代入と文 16.2.1. 空文 16.2.2. ブロック 16.2.3. 局所クラス宣言文 16.2.4. 局所変数宣言文 16.2.5. ラベル付き文 16.2.6. 式文 16.2.7. if文 16.2.8. assert文 16.2.9. switch文 16.2.10. while文 16.2.11. do文 16.2.12. for文 16.2.12.1. for文の初期化部 16.2.12.2. for文の増分部 16.2.13. breakとcontinueとreturnとthrow文 16.2.14. synchronized文 16.2.15. try文 16.3. 確実な代入と引数 16.4. 確実な代入と配列初期化子 16.5. 確実な代入と列挙子定数 16.6. 確実な代入と匿名クラス 16.7. 確実な代入とメンバー型 16.8. 確実な代入と静的初期化子 16.9. 確実な代入とコンストラクターとインスタンス初期化子 17. スレッドとロック 17.1. 同期化 17.2. 待ち集合と通知 17.2.1. 待ち集合 17.2.2. 通知 17.2.3. 割り込み 17.2.4. 待ちと通知と割り込みの相互作用 17.3. スリープと譲渡 17.4. メモリーモデル 17.4.1. 共有変数 17.4.2. アクション 17.4.3. プログラムとプログラムの順序 17.4.4. 同期化順序 17.4.5. 事前順序 17.4.6. 実行 17.4.7. 適正な実行 17.4.8. 実行と因果律の要件 17.4.9. 観察可能な振る舞いと終了しない実行 17.5. finalフィールドの意味論 17.5.1. finalフィールドの意味論 17.5.2. コンストラクター内のfinalフィールドの読み込み 17.5.3. finalフィールドのその後の変更 17.5.4. 書き込み禁止フィールド 17.6. ワードの引き裂き 17.7. doubleとlongの非原子的扱い 18. 文法 目次 例一覧 3.10.5-1. 文字列リテラル 4.2.2-1. 整数演算 4.2.4-1. 浮動小数点演算 4.3.1-1. オブジェクト作成 4.3.1-2. プリミティブと参照の同一性 4.4-1. 型変数のメンバー 4.5.1-1. ワイルドカード 4.5.1-2. 制限付きワイルドカード 4.8-1. 未加工型 4.8-2. 未加工型と継承 4.11-1. 型の使用 4.12.3-1. 異なる種類の変数 4.12.4-1. final変数 4.12.5-1. 変数の初期値 4.12.6-1. 変数の型 対 オブジェクトのクラス 5.0-1.Conversions at Compile-time and Run-time 5.0-2.Conversion Contexts 5.1.2-1.Widening Primitive Conversion 5.1.3-1.Narrowing Primitive Conversion 5.1.3-2.Narrowing Primitive Conversions that lose information 5.2-1.Assignment Conversion for Primitive Types 5.2-2.Assignment Conversion for Reference Types 5.2-3.Assignment Conversion for Array Types 5.5.1-1.Casting Conversion for Reference Types 5.5.1-2.Casting Conversion for Array Types 5.5.3-1.Incompatible Types at Run-time 5.6.1-1.Unary Numeric Promotion 5.6.2-1.Binary Numeric Promotion 6.1-1.Unique Package Names 6.1-2.Descriptive Class Names 6.1-3.Conventional Type Variable Names 6.2-1.Identifiers and Obscuring 6.3-1.Scope and Type Declarations 6.3-2.Scope of Local Variable Declarations 6.4-1.Attempted Shadowing Of A Local Variable 6.4.1-1.Shadowing of a Field Declaration by a Local Variable Declaration 6.4.1-2.Shadowing of a Type Declaration by Another Type Declaration 6.5.2-1.Reclassification of Contextually Ambiguous Names 6.5.5.2-1.Qualified Type Names 6.5.6.1-1.Simple Expression Names 6.5.6.2-1.Qualified Expression Names 6.5.6.2-2.Qualifying an Expression with a Type Name 6.6-1.Access Control 6.6-2.Access topublicFields, Methods, and Constructors 6.6-3.Access topublicand Non-publicClasses 6.6-4.Access to Default-Access Fields, Methods, and Constructors 6.6-5.Access toprivateFields, Methods, and Constructors 6.6.2-1.Access toprotectedFields, Methods, and Constructors 6.7-1.Fully Qualified Names 6.7-2.Fully Qualified Names v. Canonical Name 7.5.1-1.Single-Type-Import 7.5.1-2.Duplicate Type Declarations 7.5.1-3.No Import of a Subpackage 7.5.1-4.Importing a Type Name that is also a Package Name 7.5.2-1.Type-Import-on-Demand 7.6-1.Conflicting Top Level Type Declarations 7.6-2.Scope of Top Level Types 7.6-3.Fully Qualified Names 8.1.1.1-1.Abstract Class Declaration 8.1.1.1-2.Abstract Class Declaration that Prohibits Subclasses 8.1.2-1.Mutually Recursive Type Variable Bounds 8.1.2-2.Nested Generic Classes 8.1.3-1.Inner Class Declarations and Static Members 8.1.3-2.Inner Class Declarations 8.1.4-1.Direct Superclasses and Subclasses 8.1.4-2.Superclasses and Subclasses 8.1.4-3.Class Depends on Itself 8.1.5-1.Illegal Superinterfaces 8.1.5-2.Superinterfaces 8.1.5-3.Implementing Methods of a Superinterface 8.1.5-4.Illegal Multiple Inheritance of an Interface 8.2-1.Use of Class Members 8.2-2.Inheritance of Class Members with Default Access 8.2-3.Inheritance ofpublicandprotectedClass Members 8.2-4.Inheritance ofprivateClass Members 8.2-5.Accessing Members of Inaccessible Classes 8.3-1.Multiply Inherited Fields 8.3-2.Re-inheritance of Fields 8.3.1.1-1.staticFields 8.3.1.1-2.Hiding of Class Variables 8.3.1.1-3.Hiding of Instance Variables 8.3.1.3-1.Persistence oftransientFields 8.3.1.4-1.volatileFields 8.3.2-1.Field Initialization 8.3.2.2-1.Out-of-order Field Initialization 8.3.2.3-1.Restrictions on Field Initialization 8.4.2-1.Override-Equivalent Signatures 8.4.3.1-1.Abstract/Abstract Method Overriding 8.4.3.1-2.Abstract/Non-Abstract Overriding 8.4.3.6-1.synchronizedMonitors 8.4.3.6-2.synchronizedMethods 8.4.6-1.Type Variables as Thrown Exception Types 8.4.8.1-1.Overriding 8.4.8.1-2.Overriding 8.4.8.2-1.Invocation of Hidden Class Methods 8.4.8.3-1.Covariant Return Types 8.4.8.3-2.Unchecked Warning from Return Type 8.4.8.3-3.Incorrect Overriding because ofthrows 8.4.8.3-4.Erasure Affects Overriding 8.4.9-1.Overloading 8.4.9-2.Overloading, Overriding, and Hiding 8.8-1.Constructor Declarations 8.8.7-1.Constructor Bodies 8.8.7.1-1.Qualified Superclass Constructor Invocation 8.8.7.1-2.Restrictions on Explicit Constructor Invocation Statements 8.8.9-1.Default Constructors 8.8.9-2.Accessibility of Constructors v. Classes 8.8.10-1.Preventing Instantiation via Constructor Accessibility 8.9.1-1.Iterating Over Enum Constants With An EnhancedforLoop 8.9.1-2.Use Ofjava.util.EnumSetFor Subranges 8.9.2-1.Restriction On Enum Constant Self-Reference 8.9.2-2.Enum Type With Members 8.9.2-3.Multiple Enum Types 8.9.2-4.Enum Constants with Class Bodies 9.3-1.Ambiguous Inherited Fields 9.3-2.Multiply Inherited Fields 9.3.1-1.Forward Reference to a Field 9.4.1.1-1.Overriding anabstractMethod Declaration 9.4.2-1.Overloading anabstractMethod Declaration 9.6.1-1.Annotation Type Declarations 9.6.1-2.Single-Element Annotation Type Declarations 9.6.2-3.Complex Annotation Type Declaration 9.6.2-1.Annotation Type Declaration With Default Values 9.7.1-1.Normal Annotations 9.7.2-1.Marker Annotations 9.7.3-1.Single-Element Annotations 10.2-1.Declarations of Array Variables 10.4-1.Array Access 10.5-1.ArrayStoreException 10.6-1.Array Initializers 10.7-1.Arrays Are Cloneable 10.7-2.Shared Subarrays After A Clone 10.8-1.ClassObject Of Array 10.8-2.ArrayClassObjects Are Shared 11.2.3-1.Catching Checked Exceptions 11.3-1.Throwing and Catching Exceptions 12.4.1-1.Superclasses Are Initialized Before Subclasses 12.4.1-2.Only The Class That DeclaresstaticField Is Initialized 12.4.1-3.Interface Initialization Does Not Initialize Superinterfaces 12.5-1.Evaluation of Instance Creation 12.5-2.Dynamic Dispatch During Instance Creation 13.4.4-1.Changing A Superclass 13.4.6-1.Changing A Class Body 13.4.6-2.Changing A Superclass 13.4.7-1.Changing Accessibility 13.4.8-1.Adding A Field Declaration 13.4.9-1.Changing A Variable To Befinal 13.4.9-2.Conditional Compilation 13.4.16-1.Changing A Method To Beabstract 13.4.17-1.Changing A Method To Befinal 13.4.23-1.Adding An Overloaded Method 13.5.3-1.Deleting An Interface Member 14.3-1.Local Class Declarations 14.11-1.Fall-Through in theswitchStatement 14.13-1.ThedoStatement 14.14-1.Enhanced-forAnd Arrays 14.14-2.Enhanced-forAnd Unboxing Conversion 14.15-1.ThebreakStatement 14.16-1.ThecontinueStatement 14.19-1.ThesynchronizedStatement 14.20.1-1.Catching An Exception 14.20.2-1.Handling An Uncaught Exception Withfinally 15.7.1-1.Left-Hand Operand Is Evaluated First 15.7.1-2.Implicit Left-Hand Operand In Operator Of Compound Assigment 15.7.1-3.Abrupt Completion of Evaluation of the Left-Hand Operand 15.7.2-1.Evaluation of Operands Before Operation 15.7.4-1.Evaluation Order At Method Invocation 15.7.4-2.Abrupt Completion of Argument Expression 15.8.3-1.ThethisExpression 15.9.4-1.Evaluation Order and Out-Of-Memory Detection 15.10.1-1.Array Creation Evaluation 15.10.1-2.Multi-Dimensional Array Creation 15.10.1-3.OutOfMemoryErrorand Dimension Expression Evaluation 15.11.1-1.Static Binding for Field Access 15.11.1-2.Receiver Variable Is Irrelevant ForstaticField Access 15.11.2-1.ThesuperExpression 15.12.2-1.Method Applicability 15.12.2-2.Return Type Not Considered During Method Selection 15.12.2-3.Choosing The Most Specific Method 15.12.4.1-1.Target References andstaticMethods 15.12.4.1-2.Evaluation Order During Method Invocation 15.12.4.4-1.Overriding and Method Invocation 15.12.4.4-2.Method Invocation Usingsuper 15.12.4.5-1.Invoked Method Signature Has Different Erasure Than Compile-Time Method Signature 15.13-1.Array Reference Is Evaluated First 15.13-2.Abrupt Completion of Array Reference Evaluation 15.13-3.nullArray Reference 15.17.3-1.Integer Remainder Operator 15.17.3-2.Floating-Point Remainder Operator 15.18.1-1.String Concatenation 15.18.1-2.String Concatenation and Conditionals 15.20.2-1.TheinstanceofOperator 15.26.1-1.Simple Assignment To An Array Component 15.26.2-1.Compound Assignment To An Array Component 15.26.2-2.Value Of Left-Hand Side Of Compound Assignment Is Saved Before Evaluation Of Right-Hand Side 15.28-1.Constant Expressions 16-1.Definite Assignment Considers Structure of Statements and Expressions 16-2.Definite Assignment Does Not Consider Values of Expressions 16-3.Definite Unassignment 17.4-1.Incorrectly Synchronized Programs May Exhibit Surprising Behavior 17.4.5-1.Happens-before Consistency 17.4.8-1.Happens-before Consistency Is Not Sufficient 17.5-1.finalFields In The Java Memory Model 17.5-2.finalFields For Security 17.5.3-1.Aggressive Optimization offinalFields 17.6-1.Detection of Word Tearing
https://w.atwiki.jp/ce00582/pages/3701.html
import java.awt.*; import java.awt.event.*; import java.awt.image.*; class game0603 extends Frame{ PixelGrabber pg; Color col; Image img; int w=500; int h=500; int red,green,blue; int pix[]=new int[w*h]; int memor[][]=new int[h][w]; int memog[][]=new int[h][w]; int memob[][]=new int[h][w]; int mx,nx,m,n; int m1,n1,m2,n2; String s1,s2,s3,s4; game0603(){ s1="pic.jpg"; catchimg(s1); } public static void main(String[] args) { game0603 f = new game0603(); f.setSize(700,700); f.setBackground(Color.blue) ; f.setVisible(true); f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}}); } public void paint( Graphics g ) { g.setColor(Color.blue); g.fillRect(0,0,700,700); mx=1; nx=1; for (mx=0;mx h;mx++){ for (nx=0;nx w;nx++){ g.setColor(new Color(memor[mx][nx],memog[mx][nx],memob[mx][nx])); g.fillRect(nx,mx,1,1); } } } void catchimg(String s){ img = createImage(w,h); img = Toolkit.getDefaultToolkit().getImage(s); pg = new PixelGrabber(img,0,0,w,h,pix,0,w); try{pg.grabPixels();}catch(InterruptedException ie){} m=0; n=0; for(int i=0;i w*h;i++){ int p = pix[i]; col=new Color(pix[i]); red=col.getRed(); green=col.getGreen(); blue=col.getBlue(); memor[m][n]=red; memog[m][n]=green; memob[m][n]=blue; n=n+1; if (n==w)m=m+1; if (n==w)n=0; } } }