約 1,438,082 件
https://w.atwiki.jp/javamock/pages/23.html
byte Javaにおいてbyteはプリミティブ型の1つです。 byteはメモリ領域を8ビット確保します。 byteは符号付き整数を扱うので、2の7乗(128)より、値の範囲は-128~127となります。 byte 使用例 1 ByteSample1.java class ByteSample1 { public static void main([[String]][] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax " + byteMax); System.out.println("byteMin " + byteMin); } } 実行結果 C \java javac ByteSample1.java C \java java ByteSample1 byteMax 127 byteMin -128 byte 値範囲を超えた場合 1 ByteSample2.java class ByteSample2 { public static void main(String[] args) { byte byteMax = 128; byte byteMin = -129; System.out.println("byteMax " + byteMax); System.out.println("byteMin " + byteMin); } } コンパイル結果 C \java javac ByteSample2.java ByteSample2.java 5 精度が落ちている可能性 検出値 [[int]] 期待値 byte byte byteMax = 128; ^ ByteSample2.java 6 精度が落ちている可能性 検出値 int 期待値 byte byte byteMin = -129; エラー 2 個 以上のようにコンパイルエラーが起こります。 byte 値範囲を超えた場合 2 ByteSample3.java class ByteSample3 { public static void main(String[] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax - byteMin " + (byteMax - byteMin)); } } 実行結果 C \java javac ByteSample3.java C \java java ByteSample3 byteMax - byteMin 255 問題なく動きました。数値リテラルがint型なので、自動的に型の拡大変換が行われたのだと思います。 以下のプログラムで明示的にbyteを指定して試してみます。 byte 値範囲を超えた場合 3 ByteSample4.java class ByteSample4 { public static void main(String[] args) { byte byteMax = 127; byte byteMin = -128; System.out.println("byteMax - byteMin " + (byte)(byteMax - byteMin)); } } 実行結果 C \java javac ByteSample4.java C \java java ByteSample4 byteMax - byteMin -1 上記プログラムは本来なら127-(-128)で byteの値範囲を超えてしまいエラーになりそうですが、byteの値は循環するそうです。 循環するので上記計算は 127-(-128) ↓ 127+128 ↓ 128はbyte型の範囲を超えているので超えた分が循環し-128になる 127-128 ↓ -1 となることがわかります
https://w.atwiki.jp/tamotech/pages/37.html
Java VM(Virtual Machine) クラスのロード JVMはクラスをロードするためにクラスローダを使っている。 クラスローダーは1種類ではなく、JVMは用途によって複数のクラスローダーを使い分けている。 クラスローダーは独自に定義(クラスを作成)することも可能。 クラスローダーの特徴 クラスローダーによるクラスのロード手順は以下のようになっている クラスのロードを依頼される loadClass() 既にロードされていないか調べ、ロード済みであればそれを返す 無い場合は、親クラスローダ(無い場合はブートストラップクラスローダ)に処理を委譲(delegation)する 委譲先でロードできなければ自身でクラスファイルを探してロードしようとする findClass() ロードする:クラスファイルを探して、defineClassメソッドにファイルパス?を渡してやる クラスローダーにはどんなものがあるか クラスローダーは抽象クラスjava.lang.ClassLoaderの派生クラスである。 java.security.SecureClassLoader java.net.URLClassLoader まだようわからんこと 各種クラスローダーはどんな役割を担っているのか、JVMがどのように使い分けているのか。
https://w.atwiki.jp/ce00582/pages/3612.html
import java.awt.*; import java.awt.event.*; class game0421 extends Frame implements Runnable{ double x,y,z; double rx,ry; double x1,x2,x3,y1,y2,y3; double px[][][]=new double[2][2][2]; double py[][][]=new double[2][2][2]; int m1,m2,m3; public static void main(String [] args) { Frame f=new game0421(); f.setTitle("game0421"); f.setSize(700,700); f.setBackground(Color.yellow); f.setVisible(true); } game0421(){ for (m1=0;m1 2;m1++){ for (m2=0;m2 2;m2++){ for (m3=0;m3 2;m3++){ x=100+m1*100; y=100+m2*100; z=100+m3*100; rot(x,y,z); px[m1][m2][m3]=rx; py[m1][m2][m3]=ry; } } } Thread th=new Thread(this); th.start(); addWindowListener(new stopwin()); } class stopwin extends WindowAdapter{ public void windowClosing(WindowEvent we){System.exit(0);} } public void run(){ int t; t=1; while(t 100){ repaint(); try{ Thread.sleep(1000); }catch(InterruptedException e){} t=t+1; } repaint(); } public void paint(Graphics g){ int gx1,gy1,gx2,gy2; gx1=seekgx(px[0][0][0]); gy1=seekgy(py[0][0][0]); gx2=seekgx(px[1][0][0]); gy2=seekgy(py[1][0][0]); g.drawLine(gx1,gy1,gx2,gy2); gx1=seekgx(px[1][0][0]); gy1=seekgy(py[1][0][0]); gx2=seekgx(px[1][1][0]); gy2=seekgy(py[1][1][0]); g.drawLine(gx1,gy1,gx2,gy2); gx1=seekgx(px[1][1][0]); gy1=seekgy(py[1][1][0]); gx2=seekgx(px[0][1][0]); gy2=seekgy(py[0][1][0]); g.drawLine(gx1,gy1,gx2,gy2); gx1=seekgx(px[0][1][0]); gy1=seekgy(py[0][1][0]); gx2=seekgx(px[0][0][0]); gy2=seekgy(py[0][0][0]); g.drawLine(gx1,gy1,gx2,gy2); } public int seekgx(double x){ return (int)(100+x); } public int seekgy(double y){ return (int)(400-y); } public void rot(double x,double y,double z){ double theta,phi; double a1,a2,a3,a4; theta = -40*Math.PI/180; phi=60*Math.PI/180; a1=Math.cos(theta); a2=Math.sin(theta); a3=Math.cos(phi); a4=Math.sin(phi); rx=-a2*x+a1*y; ry=-a1*a4*x-a2*a3*y+a4*z; } }
https://w.atwiki.jp/javamock/pages/16.html
StartHello.bat 下記のStartHello.batについて簡単にですが解説します StartHello.bat javac [[HelloWorld.java]] java HelloWorld pause 実行結果 C \java javac HelloWorld.java C \java java HelloWorld [[Hello World]] C \java pause 続行するには何かキーを押してください . . . 拡張子.batはバッチファイルです コマンドプロンプトに行わせたい命令を記述します 下記コマンドでHelloWorld.javaをコンパイルを行います※HelloWorld.classを作成します javacとはjavaのコンパイラです。Java Compilerの略のようです。 javac HelloWorld.java 下記コマンドでHelloWorldを実行します java HelloWorld 下記コマンドでキー入力を待ちます pause
https://w.atwiki.jp/javamock/pages/53.html
switch Javaにおいてswitch文は条件分岐の制御を行います。 switch文は以下のように記述します。 switch ([[int]]型データ) { case 値 処理 case 値 処理 case 値 処理 dfault 処理 } int型データの値に対応したcaseから処理が行われます。 int型データにはint型へ拡大変換されるbyte、short、charなどのデータも扱うことができます。 switch 使用例 1 SwitchSample1.java class SwitchSample1 { public static void main([[String]][] args) { switch (2) { case 1 System.out.println(1); case 2 System.out.println(2); case 3 System.out.println(3); default System.out.println("default"); } } } 実行結果 C \java javac SwitchSample1.java C \java java SwitchSample1 2 3 default 以上のようにswitch(2)の場合case 2から処理が行われます。 また、switch(int型データ)のデータをcaseで用意されていない値(ここでは1,2,3以外)にした場合、defaultの処理が呼び出されます。 switch(5)とした場合の実行結果 C \java javac SwitchSample1.java C \java java SwitchSample1 default switch 使用例 2 SwitchSample2.java class SwitchSample2 { public static void main(String[] args) { switch (2) { case 1 System.out.println(1); [[break]]; case 2 System.out.println(2); break; case 3 System.out.println(3); break; default System.out.println("default"); break; } } } 実行結果 C \java javac SwitchSample2.java C \java java SwitchSample2 2 以上のようにbreak処理を加えることで、switch文を抜けます。
https://w.atwiki.jp/javamock/pages/37.html
テキストエディタ作成 ver1.1 Javaでテキストエディタ作成に挑戦してます。 作成の過程で学べたことをメモしておきます。 作ったファイルを置いておきますが、自己責任でお願いします。 全角文字の入ったパスにjarファイルを置くと動作しません。 ダブルクリックで動作すると思います。 jarファイル ※TextEditor1.0と機能は同じです。 TextEditor1.1.jar ソース テキストエディタソースver1.1 機能 新規 開く 上書き保存 名前を付けて保存 これしかありません。。。 改善点 主にリファクタリングしました Exception→IOExceptionにした 例外の処理はwriteFileメソッド内で行うようにした 定数はConstants.javaに定義した バージョン情報にもニーモニックを追加した 気になる 例外発生時にアラートを表示するようにしたい 名前を付けて保存時に既にあるファイル名に保存する場合もアラートがほしい フィールドのスコープが適正かどうかわからない コメント見づらい? /** * テキストエリアの高さ */ public static final [[int]] TEXT_AREA_HEIGHT = 300; フィールドならこっちのほうが見やすそう /** テキストエリアの高さ */ public static final int TEXT_AREA_HEIGHT = 300; Constantsクラスのラベル・ニーモニック・アクションキーにenumを使ったほうがいい? 文字がみづらい 右端で折り返してほしい 検索機能はつけたい iniファイル使ってみたい iniファイル読み込み実験してみました↓ IniFileTest.java import java.util.Properties; class IniFileTest { public static void main([[String]][] args) { try { Properties properties = new Properties(); properties.load(new java.io.FileInputStream("C \\java\\test.ini")); String textAreaWidth = properties.getProperty("textAreaWidth"); String textAreaHeight = properties.getProperty("textAreaHeight"); String undifinedTitle = properties.getProperty("undifinedTitle"); System.out.println("textAreaWidth\t " + textAreaWidth); System.out.println("textAreaHeight\t " + textAreaHeight); System.out.println("undifinedTitle\t " + undifinedTitle); } catch (java.io.IOException e) { e.printStackTrace(); } } } test.ini textAreaWidth = 300 textAreaHeight = 500 undifinedTitle = title 実行結果 C \java javac IniFileTest.java C \java java IniFileTest textAreaWidth 300 textAreaHeight 500 undifinedTitle title こんな感じで使いたいなぁ。。。 properties.load(new java.io.FileInputStream("test.ini")); で同じフォルダ内においておけばいける。jarファイルにしても大丈夫かなぁ。。。 java.awt.event.KeyEventクラスのフィールドに既にキーの定数があった。。。ニーモニックはの引数はそれを使うらしい。。。 まなんだ 定数 Javadocの@version・・・ん?もしかして使い方違う? importしたクラスライブラリ java.awt.Dimension java.awt.HeadlessException java.awt.event.ActionEvent java.awt.event.ActionListener java.io.File java.io.FileReader java.io.FileWriter java.io.IOException javax.swing.JFileChooser javax.swing.JFrame javax.swing.JMenu javax.swing.JMenuBar javax.swing.JMenuItem javax.swing.JOptionPane javax.swing.JScrollPane javax.swing.JTextArea 前回と同様です。ここら辺のクラスに強くなりたいので、メモしておきます。
https://w.atwiki.jp/javamock/pages/14.html
Hello World Java で Hello World と表示させるプログラム 以下の2つのファイルを同一ディレクトリに作り、StartHello.batを実行するとHello Worldと表示されます 学習のためバッチファイルから起動するようにしてみました HelloWorld.java class HelloWorld { public static void main([[String]][] args) { System.out.println("Hello World"); } } StartHello.bat javac HelloWorld.java java HelloWorld pause 実行結果 C \java javac HelloWorld.java C \java java HelloWorld Hello World C \java pause 続行するには何かキーを押してください . . . 上記の HelloWorld.java の解説ページです HelloWorld.java 上記の StartHello.bat の解説ページです StartHello.bat
https://w.atwiki.jp/java_pro/pages/65.html
/* SomeThingクラス(一例としてのクラス) */ class SomeThing { int x;/* フィールドとしてint xをもつ。 */ } public class Instance03 { public static void main(String[] args){ SomeThing obj1 = new SomeThing(); SomeThing obj2; obj1.x = 500; obj2 = obj1; obj1 = null; System.out.println(obj2.x); bai(obj2.x); System.out.println(obj2.x); } static void bai(int n){ SomeThing obj1 = new SomeThing(); obj1.x = 2000; n += obj1.x; System.out.println(n); } }
https://w.atwiki.jp/java_pro/pages/66.html
/* SomeThingクラス(一例としてのクラス) */ class SomeString { String x; /* コンストラクタ */ SomeString(){ this.x = "NO STRING"; } /* こっちもコンストラクタ */ SomeString(String n){ this.x = n; } } public class Instance04 { public static void main(String[] args){ SomeString x = new SomeString(); SomeString y = new SomeString("hogehoge"); SomeString tmp = x; x = y; y = tmp; System.out.println("xの文字列は:" + x.x); System.out.println("yの文字列は:" + y.x); } }
https://w.atwiki.jp/javamock/pages/33.html
メモ Javaについての私のメモです。 Java リファレンス http //java.sun.com/reference/docs/ JavaTM Platform, Standard Edition 6 API 仕様 http //java.sun.com/javase/ja/6/docs/ja/api/ Eclipse @authorの補完される名前を変更 eclipse.iniに以下を追加 -Duser.name=mock メソッドの抽出 Shift + Alt + M jar ダブルクリックで起動するファイルを作る 以下のコマンド jar cvfm JarFile.jar TxtFile.txt ClassFile1.class ClassFile2.class ClassFile3.class ... JarFile.jar : 作成したいjarのファイル名 TxtFile.txt メインクラスを指定 以下のように記述 Main-Class ClassFile1.class ※改行を入れなくてはいけないらしい ClassFile1.class ClassFile2.class ClassFile3.class ... クラスファイルを指定 ※できたjarファイルをダブルクリックで実行できるが、全角文字の入ったパスにおくとエラーになって起動しなかった。 ※コンソールアプリケーションでは実行できなかったけどなんでだろう jarファイルをコマンドプロンプトから起動 java -jar JarFile.jar ClassName JarFile.jar 起動したいjarファイル ClassName mainメソッドのあるファイル Ubuntu8.04にjdkのインストール 以下コマンド sudo apt-get install sun-java6-jdk vim ハイライト設定 java.vimが入っている場合、以下を追加するとハイライト機能が拡張される _vimrc "Javaの設定 let java_highlight_all=1 let java_highlight_debug=1 let java_space_errors=1 let java_highlight_functions=1 ファイル名 _vimrc 標準クラスをハイライト let java_highlight_all=1 デバッグ文をハイライト java_highlight_debug=1 余分な空白をハイライト java_space_errors=1 メソッドの宣言をハイライト java_highlight_functions=1 デバッグ文 System.out.print System.out.println System.err.print System.err.println printStackTrace ハイライト拡張前 ハイライト拡張後