<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2529900423618616471</id><updated>2011-11-28T10:57:59.413+09:00</updated><category term='Introduction'/><category term='Java 基本メモ'/><title type='text'>OJCP とりたいな～！</title><subtitle type='html'>Java の資格 OJC-P(SJC-P)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2597127239686632239</id><published>2007-11-09T21:34:00.003+09:00</published><updated>2011-01-11T15:52:52.245+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>テスト申し込み手順</title><content type='html'>&lt;ol&gt;&lt;li&gt;バウチャーチケットの購入&lt;br /&gt;&lt;a href="http://suned.sun.co.jp/JPN/certification/progdetails.html"&gt;Sun のチケット購入ページ&lt;/a&gt;からバウチャーチケットを購入します。&lt;br /&gt;バウチャーチケットの購入ルートは他にもあるようなので検索してみてください。&lt;/li&gt;&lt;li&gt;&lt;a href="http://it.prometric-jp.com/it_index.asp"&gt;PROMETRIC のホームページ&lt;/a&gt;から申し込みます。&lt;/li&gt;&lt;/ol&gt;現時点で Sun の資格はバウチャーチケットでしか申し込めないのでバウチャーチケットを手に入れます。PROMETRIC で ID を取得して試験の日時、会場を指定します。&lt;br /&gt;&lt;br /&gt;EDIT(2010年): 2010年にOracleがSunを買収しました。それに伴い、今後はSJC-PよりもOJC-Pという名前が浸透していくと考えられます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2597127239686632239?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2597127239686632239/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2597127239686632239' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2597127239686632239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2597127239686632239'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/11/blog-post.html' title='テスト申し込み手順'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-47971165651855666</id><published>2007-10-15T07:14:00.003+09:00</published><updated>2007-10-15T12:27:27.794+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>変数</title><content type='html'>&lt;strong&gt;プリミティブ変数&lt;/strong&gt;&lt;br /&gt;型 ビット数&lt;br /&gt;byte 8&lt;br /&gt;short 16&lt;br /&gt;int 32&lt;br /&gt;long 64&lt;br /&gt;float 32&lt;br /&gt;double 64&lt;br /&gt;&lt;br /&gt;プリミティブ変数のデフォルト値は 0 (0.0) です。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10進数&lt;/strong&gt;&lt;br /&gt;int cnt = 7;&lt;br /&gt;int cnt = 7,2 （カンマを使っているのでコンパイルエラー）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8進数&lt;/strong&gt;&lt;br /&gt;先頭に 0 をつける&lt;br /&gt;int seven = 07; （10進数の7）&lt;br /&gt;int eight = 010; （10進数の8）&lt;br /&gt;int nine = 011; （10進数の9）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;16進数&lt;/strong&gt;&lt;br /&gt;先頭に 0x をつける&lt;br /&gt;10進数の 1～15 までは0 1 2 3 4 5 6 7 8 9 a b c d e fで表す。&lt;br /&gt;アルファベットは大文字小文字の区別なし。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;サフィックス&lt;/strong&gt;&lt;br /&gt;double d = 1.2d;&lt;br /&gt;float f = 1.2f;&lt;br /&gt;long l = 100000l;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-47971165651855666?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/47971165651855666/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=47971165651855666' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/47971165651855666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/47971165651855666'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_3518.html' title='変数'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7460339469721449842</id><published>2007-10-15T07:14:00.001+09:00</published><updated>2007-10-15T12:27:27.794+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>boolean 型と char 型</title><content type='html'>&lt;strong&gt;boolean 型&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;true か false を格納&lt;br /&gt;デフォルト値は false&lt;br /&gt;&lt;br /&gt;if 文の条件になる&lt;br /&gt;(例）&lt;br /&gt;if (1 &lt; 10) {};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;char 型&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;1つの文字、Unicode、16ビット符号なし整数（65535以下の正の整数）が使用できる。&lt;br /&gt;（例）&lt;br /&gt;char name = '円';&lt;br /&gt;char name = '\u004F';&lt;br /&gt;&lt;br /&gt;デフォルト値は \u0000&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7460339469721449842?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7460339469721449842/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7460339469721449842' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7460339469721449842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7460339469721449842'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/boolean.html' title='boolean 型と char 型'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5504734747453467997</id><published>2007-10-15T07:13:00.006+09:00</published><updated>2007-10-15T12:27:27.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>String 型</title><content type='html'>String 型はダブルクウォーテーションで囲む。&lt;br /&gt;String 型は他のクラスと違いダブルクウォーテーションで囲む方法でインスタンスを生成できる。&lt;br /&gt;その後同じ名前をダブルクウォーテーションで囲んで違う変数名で宣言した場合、すでにプールに納められている同じ文字を格納する String 型インスタンスが使われます。これは他のクラスにはない特殊な例です。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;String name1 = "Albert";&lt;br /&gt;String name2 = new String("Albert");&lt;br /&gt;String name3 = "Albert";&lt;br /&gt;&lt;br /&gt;System.out.println(name1 == name2);&lt;br /&gt;System.out.println(name1 == name3);&lt;br /&gt;System.out.println(name1 == name3);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;false&lt;br /&gt;true&lt;br /&gt;false&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5504734747453467997?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5504734747453467997/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5504734747453467997' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5504734747453467997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5504734747453467997'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/string.html' title='String 型'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3088303825939702191</id><published>2007-10-15T07:13:00.005+09:00</published><updated>2007-10-15T12:27:27.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>キャスト</title><content type='html'>&lt;strong&gt;拡張変換&lt;/strong&gt;&lt;br /&gt;byte → short → int → long → float → double のような変換はキャスト不要&lt;br /&gt;&lt;br /&gt;int intValue = 27;&lt;br /&gt;double doubleValue = intValue&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;縮小変換&lt;/strong&gt;&lt;br /&gt;double doubleValue = 27.0;&lt;br /&gt;int intValue = &lt;strong&gt;(int)&lt;/strong&gt;doubleValue;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3088303825939702191?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3088303825939702191/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3088303825939702191' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3088303825939702191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3088303825939702191'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1465.html' title='キャスト'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8417961664682943108</id><published>2007-10-15T07:13:00.003+09:00</published><updated>2007-10-15T12:27:27.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>１次元配列</title><content type='html'>&lt;strong&gt;配列の宣言&lt;/strong&gt;&lt;br /&gt;要素数を必ず宣言して初期化する。&lt;br /&gt;各要素は0で初期化される。&lt;br /&gt;int[] myArray = new int[3];&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;宣言と代入&lt;br /&gt;&lt;/strong&gt;int[] myArray = {1, 2, 3};&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;配列はオブジェクトとして扱われる&lt;/strong&gt;&lt;br /&gt;Integer[] myArray = new Integer[3];&lt;br /&gt;配列はオブジェクトとして扱われているが、Interger クラスのコンストラクタは呼び出されず、各要素は null で初期化される。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;br /&gt;&lt;/strong&gt;Integer[] myArray = new Integer[3];&lt;br /&gt;System.out.println(myArray[2]);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;null&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8417961664682943108?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8417961664682943108/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8417961664682943108' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8417961664682943108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8417961664682943108'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_3365.html' title='１次元配列'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8989201414738870063</id><published>2007-10-15T07:13:00.001+09:00</published><updated>2007-10-15T12:27:27.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>２次元配列</title><content type='html'>２次元配列は１次元配列の各要素にさらに１次元配列が収められています。&lt;br /&gt;&lt;br /&gt;２次元配列の初期化&lt;br /&gt;int[][] myArray = new int[3][];&lt;br /&gt;２次元配列の最初の要素数を指定して初期化します。&lt;br /&gt;各要素は null で初期化されます。&lt;br /&gt;&lt;br /&gt;値の代入&lt;br /&gt;int[][] myArray = new int[2][2];&lt;br /&gt;myArray[0][0] = 1;&lt;br /&gt;...&lt;br /&gt;myArray[1][1] = 4;&lt;br /&gt;&lt;br /&gt;int[][] myArray = new int[2][];&lt;br /&gt;myArray[0] = {1, 2};&lt;br /&gt;myArray[1] = {3, 4};&lt;br /&gt;&lt;br /&gt;int[][] myArray = {{1, 2}, {3, 4}};&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8989201414738870063?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8989201414738870063/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8989201414738870063' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8989201414738870063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8989201414738870063'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_5083.html' title='２次元配列'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-4517738671394179237</id><published>2007-10-15T07:12:00.002+09:00</published><updated>2007-10-15T12:27:27.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>オブジェクト参照変数</title><content type='html'>オブジェクト参照変数&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sub objSub = new Sub();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super objSup = objSub;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Super { }&lt;br /&gt;class Sub extends Super { }&lt;br /&gt;&lt;br /&gt;objSub, objSup はオブジェクト参照変数です。メモリー上にあるインスタンスを参照する変数（オブジェクト）です。&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-4517738671394179237?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/4517738671394179237/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=4517738671394179237' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4517738671394179237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4517738671394179237'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_6999.html' title='オブジェクト参照変数'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-474275012950732948</id><published>2007-10-15T07:12:00.001+09:00</published><updated>2007-10-15T12:27:27.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>インスタンス変数</title><content type='html'>クラスのメソッドの外側で宣言した変数はインスタンス変数としてオブジェクト参照変数からアクセスできます。&lt;br /&gt;インスタンス変数は自動で初期化されます。&lt;br /&gt;＜サンプル＞&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sub objSub = new Sub();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super objSup = objSub;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(objSub.x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(objSup.x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Super {int x;}&lt;br /&gt;class Sub extends Super {int x;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-474275012950732948?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/474275012950732948/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=474275012950732948' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/474275012950732948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/474275012950732948'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_9661.html' title='インスタンス変数'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2697299869063130556</id><published>2007-10-15T07:11:00.006+09:00</published><updated>2007-10-15T12:27:27.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>クラス変数</title><content type='html'>インスタンス変数と同じ位置（メソッドの外側）で static 修飾子で宣言されている静的変数はクラス変数といいます。&lt;br /&gt;クラス変数へのアクセス&lt;br /&gt;クラス変数は自動で初期化されます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;br /&gt;&lt;/strong&gt;public class Sample {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;System.out.println(Suub.x);&lt;br /&gt;System.out.println(Super.x);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;class Super {static int x;}&lt;br /&gt;class Sub extends Super {static int x;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2697299869063130556?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2697299869063130556/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2697299869063130556' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2697299869063130556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2697299869063130556'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_4796.html' title='クラス変数'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8008152571620672726</id><published>2007-10-15T07:11:00.005+09:00</published><updated>2007-10-15T12:27:27.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ローカル変数</title><content type='html'>自動で初期化されないので初期値を代入する必要があります。&lt;br /&gt;初期化しないまま使用するとコンパイルエラーになります。&lt;br /&gt;&lt;br /&gt;int x = 0;&lt;br /&gt;System.out.println(x);&lt;br /&gt;&lt;br /&gt;配列の初期化の場合は要素数を決める必要があります。値の代入がなくてもコンパイルエラーにはなりません。&lt;br /&gt;&lt;br /&gt;Integer[] myArray = new Integer[3];&lt;br /&gt;System.out.println(myArray[2]);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8008152571620672726?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8008152571620672726/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8008152571620672726' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8008152571620672726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8008152571620672726'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_6317.html' title='ローカル変数'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-1508965120285541443</id><published>2007-10-15T07:11:00.003+09:00</published><updated>2007-10-15T12:27:27.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>Java 予約語</title><content type='html'>変数名、メソッド名などに Java 予約語は使用できません。&lt;br /&gt;&lt;br /&gt;Java 予約語一覧&lt;br /&gt;abstract&lt;br /&gt;boolean&lt;br /&gt;break&lt;br /&gt;byte&lt;br /&gt;case&lt;br /&gt;catch&lt;br /&gt;char&lt;br /&gt;class&lt;br /&gt;const&lt;br /&gt;continue&lt;br /&gt;default&lt;br /&gt;do&lt;br /&gt;double&lt;br /&gt;else&lt;br /&gt;extends&lt;br /&gt;final&lt;br /&gt;finally&lt;br /&gt;float&lt;br /&gt;for&lt;br /&gt;goto&lt;br /&gt;if&lt;br /&gt;implements&lt;br /&gt;import&lt;br /&gt;instanceof&lt;br /&gt;int&lt;br /&gt;interface&lt;br /&gt;long&lt;br /&gt;native&lt;br /&gt;new&lt;br /&gt;package&lt;br /&gt;private&lt;br /&gt;protected&lt;br /&gt;public&lt;br /&gt;return&lt;br /&gt;short&lt;br /&gt;static&lt;br /&gt;strictfp&lt;br /&gt;super&lt;br /&gt;switch&lt;br /&gt;synchronized&lt;br /&gt;this&lt;br /&gt;throw&lt;br /&gt;throws&lt;br /&gt;transient&lt;br /&gt;try&lt;br /&gt;void&lt;br /&gt;volatile&lt;br /&gt;while&lt;br /&gt;assert&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-1508965120285541443?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/1508965120285541443/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=1508965120285541443' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/1508965120285541443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/1508965120285541443'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/java.html' title='Java 予約語'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7762172994553715352</id><published>2007-10-15T07:11:00.001+09:00</published><updated>2007-10-15T12:27:27.796+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>アクセス修飾子</title><content type='html'>public : このメンバーにはどこからでもアクセスできる。&lt;br /&gt;protected : このメンバーにはパッケージ外のサブクラスからでもアクセスできる。&lt;br /&gt;修飾子なし（デフォルト） : このメンバーには同一パッケージ内からアクセスできる。&lt;br /&gt;private : 同一クラス内からのみアクセスできる。&lt;br /&gt;&lt;br /&gt;ローカル変数にアクセス修飾子は使用できない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7762172994553715352?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7762172994553715352/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7762172994553715352' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7762172994553715352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7762172994553715352'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_4170.html' title='アクセス修飾子'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7693168524039170839</id><published>2007-10-15T07:10:00.005+09:00</published><updated>2008-04-02T20:54:51.162+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>クラスの構造</title><content type='html'>＜サンプル＞&lt;br /&gt;package sample;&lt;br /&gt;import java.util.*;&lt;br /&gt;&lt;br /&gt;public class MyClass {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyClass obj = new MyClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;obj.func1();&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func1() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&lt;strong&gt;func2()&lt;/strong&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int func2() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;パッケージの宣言&lt;/strong&gt;&lt;br /&gt;クラスはパッケージで管理することが推奨されています。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インポート宣言&lt;br /&gt;&lt;/strong&gt;Java のクラスライブラリで java.lang パッケージ以外のライブラリはインポートする必要があります。&lt;br /&gt;java.util.*; とすると java.util パッケージのすべてのインターフェース、クラスのインポートを宣言します。&lt;br /&gt;java.util.Date; とすると java.util.Date クラスのインポートを宣言します。&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;main メソッド&lt;/strong&gt;&lt;br /&gt;Java プログラムは main メソッドからスレッドがスタートします。&lt;br /&gt;main メソッドは&lt;br /&gt;&lt;strong&gt;public static void main(String[] args)&lt;br /&gt;&lt;/strong&gt;というシグネチャですが args の部分は任意です。&lt;br /&gt;&lt;br /&gt;main メソッドなどの静的メソッド（static メソッド）から自クラスの動的メソッドを呼び出す場合、自クラスのインスタンス（参照変数）から呼び出す必要があります。&lt;br /&gt;（例）&lt;br /&gt;MyClass obj = new MyClass();&lt;br /&gt;obj.func1();&lt;br /&gt;&lt;br /&gt;自クラスの動的メソッドから動的メソッドを呼び出す場合は、メソッド名を記述するだけです。&lt;br /&gt;（例）&lt;br /&gt;void func1() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;func2();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7693168524039170839?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7693168524039170839/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7693168524039170839' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7693168524039170839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7693168524039170839'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1223.html' title='クラスの構造'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2396191129657021773</id><published>2007-10-15T07:10:00.004+09:00</published><updated>2007-10-15T14:29:34.355+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>final クラスと abstract クラス</title><content type='html'>&lt;strong&gt;final で修飾されたクラス&lt;/strong&gt;&lt;br /&gt;・継承（拡張）することができないのでサブクラスを作成できない。&lt;br /&gt;・したがってどのメソッドもオーバーライドできない。&lt;br /&gt;&lt;br /&gt;String クラスなどは final クラスです。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;abstract クラス（抽象クラス）&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;abstract で修飾されたクラス&lt;br /&gt;・インスタンス化できない。&lt;br /&gt;・継承されることを目的とする&lt;br /&gt;・abstract メソッド（抽象メソッド）を含むクラスは必ず abstract クラス（抽象クラス）である必要がある。&lt;br /&gt;・抽象クラスに非抽象メソッドを含めることはできる。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super obj = new Sub();&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj.func();&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;abstract class Super {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;abstract void func();&lt;br /&gt;}&lt;br /&gt;class Sub extends Super {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2396191129657021773?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2396191129657021773/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2396191129657021773' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2396191129657021773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2396191129657021773'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/final.html' title='final クラスと abstract クラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-715049660439655786</id><published>2007-10-15T07:10:00.001+09:00</published><updated>2007-10-15T20:40:57.211+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>インターフェース</title><content type='html'>インターフェースの目的は&lt;a href="/2007/10/final.html"&gt;抽象クラス&lt;/a&gt;と似ていますがすべてのメソッドが abstract です。&lt;br /&gt;インターフェースのメソッドは中身を実装しません。したがってインターフェースの役割は、それを実装するクラスの方向性を定め柔軟な設計を可能にすると言うことができます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インターフェースの変数&lt;br /&gt;&lt;/strong&gt;public static final でなければならい。省略は可能でコンパイラが補足する。&lt;br /&gt;インターフェースの変数は「定数」として利用できる。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インターフェースのメソッド&lt;br /&gt;&lt;/strong&gt;public abstract でなければならない。省略は可能でコンパイラが補足する。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インターフェースの定義&lt;/strong&gt;&lt;br /&gt;interface で定義します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インターフェースの実装&lt;/strong&gt;&lt;br /&gt;implements で定義します。&lt;br /&gt;複数のインターフェースを実装できます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インターフェースは他のインターフェースを&lt;a href="/2007/10/blog-post_5640.html"&gt;継承&lt;/a&gt;できます。&lt;/strong&gt;&lt;br /&gt;インターフェースAを継承するインターフェースαを実装しているサブクラスはインターフェースαのメソッドだけでなくインターフェースAのメソッドも実装しなければならない。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;interface Human {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void speak();&lt;br /&gt;}&lt;br /&gt;class Japanese implements Human{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void speak() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("こんにちは");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class English implements Human {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void speak() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Hello");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Human person1 = new Japanese();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Human person2 = new English();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;person1.speak();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;person2.speak();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;こんにちは&lt;br /&gt;Hello&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Human クラスを実装（implements)するサブクラスは必ず speak メソッドを実装しなければなりせん。&lt;br /&gt;Human インターフェースを実装することで Japanese クラス、English クラスは同じ特性を持つことになります。&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;person1.speak();&lt;br /&gt;person2.speak();&lt;br /&gt;ではそれぞれ Japanese クラスと English クラスでオーバーライドされた speak メソッドが呼び出されています。&lt;br /&gt;これは&lt;strong&gt;「多様性」&lt;/strong&gt;といいます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-715049660439655786?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/715049660439655786/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=715049660439655786' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/715049660439655786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/715049660439655786'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_8099.html' title='インターフェース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-9087610029115645507</id><published>2007-10-15T07:08:00.004+09:00</published><updated>2007-10-15T12:27:27.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>演算子</title><content type='html'>&lt;strong&gt;代入演算子&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;x = y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x に y を代入)&lt;br /&gt;x += y　 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x + y)&lt;br /&gt;x -= y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x - y)&lt;br /&gt;x *= y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x * y)&lt;br /&gt;x /= y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x / y)&lt;br /&gt;x %= y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x % y)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インクリメント・デクリメント&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;x++ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x + 1) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x を利用してからインクリメント&lt;br /&gt;x-- &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x - 1) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x を利用してからデクリメント&lt;br /&gt;++x &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x + 1) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x をインクリメントしてから利用&lt;br /&gt;--x &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(x = x - 1) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x をデクリメントしてから利用&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;論理演算子&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;x &amp;amp; y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x と y が true の場合 true を返す&lt;br /&gt;x y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x か y のとちらかが true の場合 true を返す&lt;br /&gt;x ^ y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;排他的論理輪&lt;br /&gt;!x &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x でない場合 true を返す&lt;br /&gt;x &amp;amp;&amp;amp; y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x と y が true の場合 true を返す&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左辺が false の場合右辺を評価しない&lt;br /&gt;x y &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x と yの どちらかが true の場合 true を返す&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左辺が true の場合右辺を評価しない&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;文字列連結演算子&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;String s1 = "Hello " + "world"; (Hello world)&lt;br /&gt;String s2 = "Hello " + 100; (Hello 100)&lt;br /&gt;どちらか片方が String の場合 + 演算子は文字列連結演算子となる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ビットシフト演算子&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;x &gt;&gt; n  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x を２の n 乗で割る（右に n ビットシフト）&lt;br /&gt;x &lt;&lt; n  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x に２の n 乗を掛ける（左に n ビットシフト）　&lt;br /&gt;x &gt;&gt;&gt; n  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;右に n ビットシフトして最初の符号を 0 にする&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int a = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int b = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 5; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ((++a &lt; 2) &amp;&amp; (++b &lt; 2)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("a = " + a + " b = " + b);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;a = 6 b = 3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-9087610029115645507?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/9087610029115645507/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=9087610029115645507' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/9087610029115645507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/9087610029115645507'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_6829.html' title='演算子'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3028369078524360079</id><published>2007-10-15T07:08:00.003+09:00</published><updated>2007-10-15T12:27:27.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>if 文</title><content type='html'>&lt;strong&gt;if else&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;if (x == y) {&lt;br /&gt;    System.out.println("Hello");&lt;br /&gt;} else {&lt;br /&gt;    System.out.println("こんにちは");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if 文条件判断結果は boolean 型でなければならない。&lt;br /&gt;&lt;br /&gt;if (x = y) { } なら条件判断は行わず代入が行われる。（代入演算子）&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;if - else if - else&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;else if を使うと条件分岐を増やすことができる。&lt;br /&gt;&lt;br /&gt;if (x == y) {&lt;br /&gt;    ...&lt;br /&gt;} else if (x == z) {&lt;br /&gt;    ...&lt;br /&gt;} else {&lt;br /&gt;    ...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if 文のボディを表す { } の中に実行文が１行しかない場合は { } は省略できます。&lt;br /&gt;しかし、可読性が落ちることは確かです。&lt;br /&gt;&lt;br /&gt;if (x == y) {&lt;br /&gt;    a = b;&lt;br /&gt;}&lt;br /&gt;System.out.println("Hello");&lt;br /&gt;&lt;br /&gt;上記と同じ&lt;br /&gt;if (x == y)&lt;br /&gt;    a = b;&lt;br /&gt;System.out.println("Hello");&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3028369078524360079?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3028369078524360079/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3028369078524360079' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3028369078524360079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3028369078524360079'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/if.html' title='if 文'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-207924620671161337</id><published>2007-10-15T07:08:00.001+09:00</published><updated>2007-10-15T12:27:27.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>switch 文</title><content type='html'>int number = 7;&lt;br /&gt;switch (number) {&lt;br /&gt;case 2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("小吉");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;case 5:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("中吉");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;case 7:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("大吉");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;default:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("吉");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;em&gt;条件判断には int 型か int 型に拡張変換できる型(byte, short, char)のみ使用できます。&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;break キーワードがないとすべてのケースの実行文が実行されます。&lt;br /&gt;&lt;br /&gt;default 文の位置は最後でなくてもいいです。&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-207924620671161337?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/207924620671161337/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=207924620671161337' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/207924620671161337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/207924620671161337'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/switch.html' title='switch 文'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2768643921035228672</id><published>2007-10-15T07:07:00.002+09:00</published><updated>2007-10-15T12:28:56.528+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>while ループ</title><content type='html'>int a = 0;&lt;br /&gt;while (a &lt; 10) {&lt;br /&gt; .....&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;a が 10 未満の間繰り返し処理を行う。&lt;br /&gt;&lt;br /&gt;int a = 0;&lt;br /&gt;do {&lt;br /&gt; .....&lt;br /&gt;} while (a &lt; 10);&lt;br /&gt;&lt;br /&gt;最初に実行文を１回実行してからループする。&lt;br /&gt;int a = 10 からスタートしたとしても実行文は１回実行される。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2768643921035228672?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2768643921035228672/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2768643921035228672' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2768643921035228672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2768643921035228672'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/while.html' title='while ループ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5881666651508118120</id><published>2007-10-15T07:07:00.001+09:00</published><updated>2007-10-15T12:32:23.449+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>for ループ</title><content type='html'>for (int i = 0; i &lt; 10; i++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;i が 10 未満の間だけ繰り返し処理を行う。&lt;br /&gt;for (宣言; 条件; 処理) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;処理&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;for の（）の中の処理はボディの処理が終わってから実行される&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ネスト&lt;br /&gt;ループの中のループ&lt;br /&gt;&lt;br /&gt;for (int i = 0; i &lt; 5; i++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int j = 0; j &lt; i; j++) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5881666651508118120?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5881666651508118120/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5881666651508118120' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5881666651508118120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5881666651508118120'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/for.html' title='for ループ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-702689567684913429</id><published>2007-10-15T07:06:00.002+09:00</published><updated>2007-10-15T12:40:08.171+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ループで使うキーワード</title><content type='html'>&lt;strong&gt;break&lt;/strong&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;そのループを即座に抜ける。&lt;br /&gt;&lt;strong&gt;continue&lt;/strong&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;現在の反復を中断して次の反復に即座に移る。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ループの中でのみ使用可能。&lt;br /&gt;&lt;strong&gt;return  &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;戻り値か無を返してメソッドを終了する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下記の break キーワードにより "Break " の出力が一回になります。&lt;br /&gt;for ( ) の中の i++ や j++ の処理は for 文のボディでの処理が終わってから実行されます。&lt;br /&gt;したがって i++ と ++i では同じ結果になります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル1＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 5; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int j = 0; j &lt; i; j++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.print("Break ");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;break&lt;/strong&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;0&lt;br /&gt;Break &lt;br /&gt;1&lt;br /&gt;Break &lt;br /&gt;2&lt;br /&gt;Break &lt;br /&gt;3&lt;br /&gt;Break &lt;br /&gt;4&lt;br /&gt;&lt;br /&gt;ラベルつきループ&lt;br /&gt;先ほどのサンプルに outer ラベルをつけて break キーワードで即座に outer を抜けてみます。&lt;br /&gt;&lt;strong&gt;＜サンプル2＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;outer:&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 5; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int j = 0; j &lt; i; j++) {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Break ");&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;break &lt;/strong&gt;outer;&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(i);&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;0&lt;br /&gt;Break&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-702689567684913429?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/702689567684913429/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=702689567684913429' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/702689567684913429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/702689567684913429'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_2211.html' title='ループで使うキーワード'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-6927735482548149996</id><published>2007-10-15T07:06:00.001+09:00</published><updated>2007-10-15T13:06:53.874+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>継承（拡張）</title><content type='html'>オブジェクト指向言語 Java の特徴のひとつに「継承」があます。&lt;br /&gt;継承により、サブクラス（子クラス）はスーパークラス（親クラス）の機能を使用できます。&lt;br /&gt;継承は &lt;strong&gt;extends&lt;/strong&gt; キーワードで宣言します。&lt;br /&gt;&lt;br /&gt;class Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int super_x;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void sayHello() {System.out.println("Hello");}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {System.out.println("Super");}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Sub &lt;strong&gt;extends&lt;/strong&gt; Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int sub_x;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {System.out.println("Sub");}&lt;br /&gt;}&lt;br /&gt;__________________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sub 型でインスタンスの生成&lt;/strong&gt;&lt;br /&gt;Sub objSub = new Sub();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;スーパークラスのメンバーへアクセス&lt;/strong&gt;&lt;br /&gt;System.out.println(objSub.super_x);&lt;br /&gt;obj.sayHello();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;サブクラスの変数へアクセス&lt;/strong&gt;&lt;br /&gt;System.out.println(objSub.sub_x);&lt;br /&gt;objSub.func();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Super 型でインスタンスの生成&lt;/strong&gt;&lt;br /&gt;Super objSuper = new Super();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Super 型からサブクラスのメンバーにはアクセスできない。&lt;/strong&gt;&lt;br /&gt;__________________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;is-a 型でインスタンス生成&lt;/strong&gt;&lt;br /&gt;継承関係にあるスーパークラスとサブクラスの機能をフルに利用するには下記のようにインスタンスを生成します。&lt;br /&gt;&lt;br /&gt;Super obj = new Sub();&lt;br /&gt;&lt;br /&gt;Super 型で Sub のインスタンスを生成しています。&lt;br /&gt;&lt;br /&gt;この場合、&lt;strong&gt;is-a&lt;/strong&gt; 関係が成り立ちます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;is-a&lt;/strong&gt; 関係とはその名のとおり Sub is a Super という関係です。&lt;br /&gt;__________________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;多様性&lt;/strong&gt;&lt;br /&gt;Super のメソッド func() は Sub でオーバーライドされています。&lt;br /&gt;obj.func() を呼び出すと Super 型の obj から Sub の func() が呼び出されます。&lt;br /&gt;これを&lt;strong&gt;多様性&lt;/strong&gt;といいます。&lt;br /&gt;&lt;strong&gt;多様性&lt;/strong&gt;はインターフェースとそれを実装するサブクラス間でも利用できます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;このような Super 型の obj から Sub 固有のメソッドを呼び出すことは出来ません。&lt;br /&gt;Sub 固有のメソッドを呼び出すには Sub 型にキャストして呼び出します。&lt;/strong&gt;&lt;br /&gt;((Sub)obj).subFunc();&lt;br /&gt;__________________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;class Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Super");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Sub extends Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Override");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void subFunc() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Sub");&lt;br /&gt;}&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super obj1 = new Super();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super obj2 = new Sub();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj1.func();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj2.func();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((Sub)obj2).subFunc();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Super&lt;br /&gt;Override&lt;br /&gt;Sub&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-6927735482548149996?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/6927735482548149996/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=6927735482548149996' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/6927735482548149996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/6927735482548149996'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_5640.html' title='継承（拡張）'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5026163822787669353</id><published>2007-10-15T07:05:00.005+09:00</published><updated>2007-10-15T14:38:14.346+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>オーバーライド</title><content type='html'>スーパークラスのメソッドと同じ名前のメソッドをサブクラスで定義することをオーバーライドといいます。&lt;br /&gt;&lt;br /&gt;class Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() throws IOException {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Super");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Sub extends Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Sub");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜ルール＞&lt;/strong&gt;&lt;br /&gt;・ 引数リスト、戻り値型は変更不可。 &lt;br /&gt;・ アクセスレベルを緩く出来るが厳しくは出来ない。 &lt;br /&gt;・ 新たな例外や、上位クラスの例外を throw できない。&lt;br /&gt;・ 例外の数を減らしたり、下位クラスの例外を throw することは出来る。&lt;br /&gt;・ final メソッドはオーバーライドできない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5026163822787669353?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5026163822787669353/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5026163822787669353' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5026163822787669353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5026163822787669353'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_8258.html' title='オーバーライド'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-4626084431290689047</id><published>2007-10-15T07:05:00.003+09:00</published><updated>2007-10-15T14:39:02.249+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>オーバーロード</title><content type='html'>メソッドは同じ名前でも引数の型、数、並び順のいずれかを変えることで違うメソッドとして記述できます。&lt;br /&gt;これをオーバーロードといいます。&lt;br /&gt;if 文などの条件分岐を減らすことも出来ます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜ルール＞&lt;/strong&gt;&lt;br /&gt;・引数の型、数、並び順のいずれかを変える&lt;br /&gt;・戻り値型を変更できる&lt;br /&gt;・修飾子を変更できる&lt;br /&gt;・例外を追加できる&lt;br /&gt;&lt;br /&gt;有効なオーバーロードの例&lt;br /&gt;&lt;br /&gt; void func() {}&lt;br /&gt; void func(int x){}&lt;br /&gt; void func(int x, int y) {}&lt;br /&gt; void func(double x, double y) {}&lt;br /&gt; String func(double x, int y) {return null;}&lt;br /&gt; private void func(File file) throws IOException {}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-4626084431290689047?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/4626084431290689047/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=4626084431290689047' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4626084431290689047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4626084431290689047'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_4916.html' title='オーバーロード'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3295836391562008329</id><published>2007-10-15T07:05:00.001+09:00</published><updated>2007-10-15T14:42:53.862+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>コンストラクタ</title><content type='html'>コンストラクタによってオブジェクトが初期化されます。&lt;br /&gt;コンストラクタ内に記述した処理はインスタンス化時に実行されます。&lt;br /&gt;&lt;br /&gt;class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/* コンストラクタ */&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sample() { }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;デフォルトコンストラクタ&lt;/strong&gt;&lt;br /&gt;デフォルトコンストラクタは引数なしのコンストラクタです。&lt;br /&gt;コンストラクタを記述しない場合、コンパイラはデフォルトコンストラクタを自動生成します。&lt;br /&gt;引数ありののコンストラクタを記述した場合はコンパイラはデフォルトコンストラクタを自動生成しません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3295836391562008329?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3295836391562008329/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3295836391562008329' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3295836391562008329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3295836391562008329'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1866.html' title='コンストラクタ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8404847179301320657</id><published>2007-10-15T07:04:00.005+09:00</published><updated>2008-09-15T20:47:52.082+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>super() と this()</title><content type='html'>基本的に、コンストラクタには &lt;strong&gt;super() &lt;/strong&gt;が自動生成されます。&lt;br /&gt;&lt;strong&gt;super()&lt;/strong&gt; はスーパークラスのコンストラクタを呼び出します。&lt;br /&gt;&lt;strong&gt;this()&lt;/strong&gt; はそのクラスの引数なしのコンストラクタを呼び出します。&lt;br /&gt;最終的にはすべてのクラスのスーパークラスである Object クラスのコンストラクタが呼び出されます。&lt;br /&gt;&lt;strong&gt;super()&lt;/strong&gt;、&lt;strong&gt;this()&lt;/strong&gt; に引数をつけることは可能です。&lt;br /&gt;&lt;strong&gt;super()&lt;/strong&gt; と &lt;strong&gt;this()&lt;/strong&gt; の併用は不可です。&lt;br /&gt;&lt;strong&gt;super()&lt;/strong&gt; と &lt;strong&gt;this()&lt;/strong&gt; はコンストラクタ内の処理の最初に記述する。&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Sample sample = new Sample(1) &lt;br /&gt;下記の例では引数ありのコンストラクタ内で super() が自動生成されます。&lt;br /&gt;class Sample {&lt;br /&gt;     Sample() { }&lt;br /&gt;     Sample(int x) { }     // super()が自動生成される&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;下記の例では引数なしコンストラクタ内に super() が自動生成されます。&lt;br /&gt;class Sample {&lt;br /&gt;    Sample() { }     // super() が自動生成される&lt;br /&gt;    Sample(int x) {this();}&lt;br /&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8404847179301320657?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8404847179301320657/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8404847179301320657' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8404847179301320657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8404847179301320657'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/super-this.html' title='super() と this()'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-433513949296463350</id><published>2007-10-15T07:04:00.001+09:00</published><updated>2007-10-15T15:19:24.311+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>コンストラクタチェーン</title><content type='html'>コンストラクタは呼び出された順番でスタートし、その逆の順序で初期化処理を行いコンストラクタを完了します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sample() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// super() が自動生成され Object クラスのコンストラクタが呼び出される&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("引数なしコンストラクタ");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sample(int x) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this(); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 引数なしコンストラクタが呼び出される&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("引数ありコンストラクタ");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sample sp = new Sample(1);&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;引数なしコンストラクタ&lt;br /&gt;引数ありコンストラクタ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-433513949296463350?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/433513949296463350/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=433513949296463350' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/433513949296463350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/433513949296463350'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_5222.html' title='コンストラクタチェーン'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7468017859847825089</id><published>2007-10-15T07:03:00.005+09:00</published><updated>2008-09-15T20:51:00.337+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>例外</title><content type='html'>例外 ＝ フローの中のエラー&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;例外の種類&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;チェック例外     : Exception クラスを継承する例外（RuntimeException を除く）&lt;br /&gt;Runtime 例外     : RuntimeException とそれを継承する例外&lt;br /&gt;Error       : Error クラスとそれを継承する例外&lt;br /&gt;&lt;br /&gt;Runtime 例外と Error は非チェック例外となります。&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;try - catch - finally ブロック&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;チェック例外は try - catch - finally ブロックで処理します。&lt;br /&gt;finally ブロックは任意ですが、例外が発生してもしなくても必ず実行されます。&lt;br /&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        Sample sample = new Sample();&lt;br /&gt;        sample.func();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /* dangerousMethod を try - catch - finally で処理 */&lt;br /&gt;    void func() {&lt;br /&gt;        try {&lt;br /&gt;             dangerousMethod();&lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;             System.out.println("例外が発生しました");&lt;br /&gt;        } finally {&lt;br /&gt;             System.out.println("必ず実行される処理");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /* 例外が発生する可能性を throws キーワードで宣言 */&lt;br /&gt;    void dangerousMethod() throws Exception {&lt;br /&gt;        throw new Exception();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;例外には「処理か宣言」の原則があります。&lt;/strong&gt;&lt;br /&gt;例外の発生する可能性のあるメソッドで「処理か宣言」のどちらかを行います。&lt;br /&gt;&lt;br /&gt;＜処理＞&lt;br /&gt;    try - catch ブロックで囲む。&lt;br /&gt;＜宣言＞&lt;br /&gt;    throws キーワードで発生する可能性のある例外を宣言する。&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;throw キーワード&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;throw キーワードで例外を投げることができます。&lt;br /&gt;try - catch ブロックで例外をキャッチしてさらにそのメソッドの呼び出し元に例外を投げることもできます。&lt;br /&gt;&lt;br /&gt;    void func() throws Exception {&lt;br /&gt;        try {&lt;br /&gt;             dangerousMethod();&lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;             throw e;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;こうすると呼び出し元でさらに try - catch する必要があります。&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;複数の例外を処理する際の注意&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;複数の例外を処理する際は、例外クラスの継承関係の下位にある例外から順番に処理します。&lt;br /&gt;継承関係の上位にある例外を try - catch ブロックで先に処理するとコンパイルエラーになります。&lt;br /&gt;&lt;br /&gt;    void func() {&lt;br /&gt;        try {&lt;br /&gt;             dangerousMethod();&lt;br /&gt;        } catch (IOException e) {&lt;br /&gt;             e.printStackTrace();&lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;             e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    void dangerousMethod() throws IOException {&lt;br /&gt;        throw new IOException();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Exception を先に catch ブロックに書くと次の IOException のキャッチブロックは到達不能になり、コンパイル不可なります。&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RuntimeException&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;RuntimeException は非チェック例外ですが、Exception クラスを継承しているので try - catch ブロックで処理することができます。&lt;br /&gt;RuntimeException は throws キーワードで RuntimeException の発生の可能性を宣言する必要はありません。&lt;br /&gt;&lt;br /&gt;    void func1() throws IOException {&lt;br /&gt;        throw new IOException();&lt;br /&gt;    }&lt;br /&gt;    void func2() {&lt;br /&gt;        throw new RuntimeException();&lt;br /&gt;    }&lt;br /&gt;_______________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;finally ブロック&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;finally ブロックは例外が発生してもしなくても処理を実行するので&lt;br /&gt;ストリームの切断など確実にしておきたい処理を記述しておくとよいでしょう。&lt;br /&gt;しかし、&lt;strong&gt;下記のコードはコンパイルできません&lt;/strong&gt;。&lt;br /&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        BufferedReader br = null;&lt;br /&gt;        try {&lt;br /&gt;             br = new BufferedReader(new FileReader("C:/test.txt"));&lt;br /&gt;             String line;&lt;br /&gt;             while ((line = br.readLine()) != null) {&lt;br /&gt;                  System.out.println(line);&lt;br /&gt;             }&lt;br /&gt;        } catch (FileNotFoundException e) {&lt;br /&gt;             e.printStackTrace();&lt;br /&gt;        } catch (IOException e) {&lt;br /&gt;             e.printStackTrace();&lt;br /&gt;        } finally {&lt;br /&gt;             br.close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;br.close(); の部分を try - catch ブロックで囲む必要があります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7468017859847825089?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7468017859847825089/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7468017859847825089' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7468017859847825089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7468017859847825089'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_542.html' title='例外'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-4847466897054310906</id><published>2007-10-15T07:03:00.001+09:00</published><updated>2007-10-15T16:01:39.984+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>アサーション</title><content type='html'>アサーションは仮説を検証するメカニズムです。（JDK 1.4 より導入）&lt;br /&gt;アサーションは有効無効を切り替えられます。&lt;br /&gt;不必要な try - catch ブロックや if 文などはプログラムの完成後に取り除くのは手間がかかりますが、&lt;br /&gt;アサーションは有効無効の切り替えだけですみます。&lt;br /&gt;&lt;br /&gt;JDK 1.4 ではデフォルトでアサーションが無効になっているのでアサーションのコードは実行時に無視されます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;アサーションを有効にする&lt;/strong&gt;java -ea&lt;br /&gt;java -enableassertions&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;アサーションを無効にする&lt;/strong&gt;&lt;br /&gt;java -da&lt;br /&gt;java -disableassertions&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;sample.Sample クラスのアサーションを有効にする&lt;/strong&gt;&lt;br /&gt;java ea:sample.Sample&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;sample パッケージとそのすべてのサブパッケージのアサーションを有効にする&lt;/strong&gt;&lt;br /&gt;java ea:sample&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;全体のアサーションを有効にし、システムクラスのアサーションのみを無効にする&lt;/strong&gt;&lt;br /&gt;java -ea -dsa&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;全体のアサーションを有効にし、sample パッケージのみを無効にする&lt;/strong&gt;&lt;br /&gt;java -ea -da:sample&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;アサーションの使い方&lt;/strong&gt;&lt;br /&gt;int x = 2 + 2;&lt;br /&gt;assert (x == 4); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// true でないとき AssertionError を投げる&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-4847466897054310906?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/4847466897054310906/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=4847466897054310906' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4847466897054310906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4847466897054310906'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_611.html' title='アサーション'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8791443395224541483</id><published>2007-10-15T07:02:00.004+09:00</published><updated>2007-10-15T16:06:06.275+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>文字列の扱い</title><content type='html'>&lt;strong&gt;String クラス&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;オブジェクト参照変数の参照先に注意&lt;br /&gt;&lt;br /&gt; String a = "Albert";&lt;br /&gt; String b = "Bob";&lt;br /&gt; System.out.println(a);&lt;br /&gt; a = b;&lt;br /&gt; System.out.println(b);&lt;br /&gt;&lt;br /&gt; 出力結果&lt;br /&gt; Albert&lt;br /&gt; Bob&lt;br /&gt;&lt;br /&gt;&lt;em&gt;String オブジェクトは不変&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt; String a = "Albert";&lt;br /&gt; a.concat(" Einstein");&lt;br /&gt; System.out.println(a);&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt; Albert&lt;br /&gt; &lt;em&gt;a が参照する String オブジェクトを変更することはできない。&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt; String a = "Albert";&lt;br /&gt; a = a.concat(" Einstein");&lt;br /&gt; System.out.println(a);&lt;br /&gt;&lt;br /&gt; &lt;em&gt;a に新しいオブジェクトを再代入している。&lt;/em&gt;&lt;br /&gt; &lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt; Albert Einstein&lt;br /&gt;_________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;StringBuilder クラス&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;StringBuilder クラスは StringBuffer クラスと同じような機能を持ち StringBuffer クラスよりほとんどの面で高速に動作します。&lt;br /&gt;文字列の連結などの操作は String クラスは使わず StringBuilder を使うほうが高速で有効。&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt; StringBuilder a = new StringBuilder("Albert");&lt;br /&gt; a.append(" Einstein");&lt;br /&gt; System.out.println(a);&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt; Albert Einstein&lt;br /&gt; a が参照する StringBuilder オブジェクトを変更できる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8791443395224541483?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8791443395224541483/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8791443395224541483' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8791443395224541483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8791443395224541483'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1202.html' title='文字列の扱い'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2598372142707539566</id><published>2007-10-15T07:02:00.003+09:00</published><updated>2007-10-15T16:08:03.236+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>Math クラス</title><content type='html'>java.lang.Math クラスは final なので継承することはできません。&lt;br /&gt;java.lang.Math クラスのコンストラクタは private なので Math クラスのインスタンスを作成することはできません。&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;  double number = Math.random() * 10;&lt;br /&gt;  System.out.println(number);&lt;br /&gt;  System.out.println("abs = " + Math.abs(number));&lt;br /&gt;  System.out.println("ceil = " + Math.ceil(number));&lt;br /&gt;  System.out.println("floor = " + Math.floor(number));&lt;br /&gt;  System.out.println("round = " + Math.round(number));&lt;br /&gt;&lt;br /&gt;  出力結果は毎回異なります。&lt;br /&gt;&lt;br /&gt;  1.8282950594054825&lt;br /&gt;  abs = 1.8282950594054825&lt;br /&gt;  ceil = 2.0&lt;br /&gt;  floor = 1.0&lt;br /&gt;  round = 2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2598372142707539566?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2598372142707539566/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2598372142707539566' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2598372142707539566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2598372142707539566'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/math.html' title='Math クラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7879515502618439856</id><published>2007-10-15T07:02:00.001+09:00</published><updated>2007-10-15T16:15:37.056+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ラッパークラス</title><content type='html'>プリミティブ（基本データ型変数）をオブジェクトとして扱うためにラッパークラスがあります。&lt;br /&gt;&lt;br /&gt;プリミティブ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ラッパークラス&lt;br /&gt;byte   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Byte&lt;br /&gt;short   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Short&lt;br /&gt;int    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Integer&lt;br /&gt;long   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Long&lt;br /&gt;float   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Float&lt;br /&gt;double    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Double&lt;br /&gt;boolean   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Boolean&lt;br /&gt;char   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Character&lt;br /&gt;&lt;br /&gt;ラッパークラスのオブジェクト生成の際のコンストラクタ引数はそれぞれのプリミティブ型が使用できます。&lt;br /&gt;Character クラス以外は String 型引数も使用できます。&lt;br /&gt;&lt;br /&gt;＜オブジェクトの生成＞&lt;br /&gt;（例）&lt;br /&gt;・ Double d = new Double(5.0);&lt;br /&gt;・ Double d = Double.valueOf(5.0);&lt;br /&gt;・ Double d = Double.valueOf("5.0");&lt;br /&gt;・ Double d = Double.valueOf("5.0f");&lt;br /&gt;・ Short s = d.shortValue(d);&lt;br /&gt;&lt;br /&gt;＜プリミティブの抽出＞&lt;br /&gt;（例）&lt;br /&gt;・ double value = Double.parseDouble("5.0");&lt;br /&gt;・ double value = Double.parseDouble("5.0d");&lt;br /&gt;&lt;br /&gt;＜オブジェクトの比較＞&lt;br /&gt;オブジェクトの比較は == 演算子や equals メソッドで行います。&lt;br /&gt;equals メソッドは Object クラスで定義されていて、String クラス、ラッパークラスでオーバーライドされています。&lt;br /&gt;Object クラスの equals メソッドと String クラスやラッパークラスの equals メソッドは振る舞いが違います。&lt;br /&gt;Object クラスの equals メソッドは比較する２つのオブジェクトがまったく同じオブジェクトの場合 true を返します。&lt;br /&gt;String クラス、ラッパークラスの equals メソッドは２つのオブジェクトがまったく同じでなくても意味的に等しい場合 true を返します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;  Object o1 = new Object();&lt;br /&gt;  Object o2 = new Object();&lt;br /&gt;  System.out.println("o1 == o2 : " + (o1 == o2));&lt;br /&gt;  System.out.println("o1.equals(o2) : " + o1.equals(o2));&lt;br /&gt;  &lt;br /&gt;  Integer i1 = new Integer(5);&lt;br /&gt;  Integer i2 = new Integer(5);&lt;br /&gt;  System.out.println("i1 == i2 : " + (i1 == i2));&lt;br /&gt;  System.out.println("i1.equals(i2) : " + i1.equals(i2));&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;o1 == o2 : false&lt;br /&gt;o1.equals(o2) : false&lt;br /&gt;i1 == i2 : false&lt;br /&gt;i1.equals(i2) : true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7879515502618439856?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7879515502618439856/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7879515502618439856' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7879515502618439856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7879515502618439856'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_5441.html' title='ラッパークラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-1145460863349543989</id><published>2007-10-15T07:00:00.005+09:00</published><updated>2009-01-16T10:12:55.228+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>equals メソッドと hashCode メソッドのオーバーライド</title><content type='html'>自作クラスの２つのオブジェクトを equals メソッドを使って意味的に等しい場合 true を返すようにするには&lt;br /&gt;自作クラスで equals メソッドを&lt;a href="http://www.blogger.com/2007/10/blog-post_8258.html"&gt;オーバーライド&lt;/a&gt;する必要があります。&lt;br /&gt;Object クラスの equals メソッドはまったく同じオブジェクトの場合 true を返します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;equals メソッドのオーバーライドの例&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        Tiger t1 = new Tiger(1);&lt;br /&gt;        Tiger t2 = new Tiger(1);&lt;br /&gt;        System.out.println(t1.equals(t2));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;class Tiger {&lt;br /&gt;      private final int t;&lt;br /&gt;      Tiger(int t) {&lt;br /&gt;              this.t = t;&lt;br /&gt;      }&lt;br /&gt;      public int tigerValue() {&lt;br /&gt;              return t;&lt;br /&gt;      }&lt;br /&gt;      public boolean equals(Object obj) {&lt;br /&gt;              if (obj instanceof Tiger) {&lt;br /&gt;            return ((Tiger)obj).tigerValue() == t;&lt;br /&gt;        } else {&lt;br /&gt;                      return false;&lt;br /&gt;              }&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;true&lt;br /&gt;_______&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;hashCode メソッドのオーバーライド&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;自作クラスに equals メソッドをオーバーライドしたら hashCode メソッドもオーバーライドしましょう。&lt;br /&gt;コレクションの HashMap などの Hash がつくクラスはオブジェクトを格納する際にハッシュコードを使用します。&lt;br /&gt;これは検索速度の向上が意図されています。&lt;br /&gt;Object クラスの hashCode メソッドは一意のハッシュコードを返します。&lt;br /&gt;したがって、自作クラスでオーバーライドする際は&lt;br /&gt;意味的に等しい場合は同じハッシュコードを返すようにするのが適切です。&lt;br /&gt;&lt;br /&gt;適切かつ最も簡単な方法を Tiger クラスに実装すると&lt;br /&gt;&lt;br /&gt;public int hashCode() {&lt;br /&gt;    return t;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;となります。&lt;br /&gt;&lt;br /&gt;自作クラスに hashCode メソッドをオーバーライドしないとコレクションで安全に使用できません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-1145460863349543989?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/1145460863349543989/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=1145460863349543989' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/1145460863349543989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/1145460863349543989'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/equals.html' title='equals メソッドと hashCode メソッドのオーバーライド'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5328850037564999450</id><published>2007-10-15T07:00:00.001+09:00</published><updated>2007-10-15T16:33:54.662+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>コレクションフレームワーク</title><content type='html'>コレクションフレームワークには List、Set、Map インターフェースを実装するものがあります。&lt;br /&gt;詳細は &lt;a href="http://java.sun.com/javase/6/docs/api/" target="_blank"&gt;Javadoc&lt;/a&gt; を参照ください。&lt;br /&gt;&lt;br /&gt;コレクションの要素にプリミティブ型は使用できません。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  List&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;();&lt;br /&gt;  for (int i = 0; i &lt; 5; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.add(new Integer(i));&lt;br /&gt;  }&lt;br /&gt;  for (int i = 0; i &lt; list.size(); i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(list.get(i));&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;0&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5328850037564999450?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5328850037564999450/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5328850037564999450' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5328850037564999450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5328850037564999450'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_2609.html' title='コレクションフレームワーク'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2024468619577804363</id><published>2007-10-15T06:59:00.005+09:00</published><updated>2007-11-10T21:05:44.178+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ガーベージコレクション</title><content type='html'>Java のガーベージコレクションは&lt;br /&gt;&lt;ul&gt;&lt;li&gt;どこからも参照されないオブジェクト&lt;/li&gt;&lt;li&gt;到達不能のオブジェクト&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;を自動で削除します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜オブジェクトに null を代入＞&lt;/strong&gt;オブジェクト参照変数に null を代入するとそのオブジェクト参照変数はもはやどこも参照していないので削除対象になります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜参照先の変更＞&lt;/strong&gt;&lt;br /&gt;参照先を変更すると、元の参照先は削除対象になります。&lt;br /&gt;&lt;br /&gt;Integer a = new Integer(1);&lt;br /&gt;Integer b = new Integer(2);&lt;br /&gt;a = b;&lt;br /&gt;&lt;br /&gt;この時点で new Integer(1) というインスタンスはどこからも参照されなくなり削除対象となります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜参照の孤立＞&lt;/strong&gt;&lt;br /&gt;Ａ⇔Ｂ&lt;br /&gt;Ａ = null&lt;br /&gt;Ｂ = null&lt;br /&gt;&lt;br /&gt;Ａ と Ｂ の相互参照が孤立しガーベージコレクトの対象になる。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜ガーベージコレクションは即座に実行できるか？＞&lt;/strong&gt;&lt;br /&gt;答えは No です。&lt;br /&gt;カーベージコレクトを要求することはできます。&lt;br /&gt;実行のタイミングは JVM が決定します。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜カーベージコレクションの要求＞&lt;/strong&gt;&lt;br /&gt;・　System.gc();&lt;br /&gt;・　Runtime.getRuntime().gc();&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜finalize メソッド＞&lt;/strong&gt;&lt;br /&gt;finalize メソッドはオブジェクトがガーベージコレクションによって削除される直前に呼び出されます。&lt;br /&gt;finalize メソッドはオブジェクトに対し一度だけ呼び出される。&lt;br /&gt;finailze メソッドに重要な処理を記述することは推奨されません。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2024468619577804363?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2024468619577804363/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2024468619577804363' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2024468619577804363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2024468619577804363'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1723.html' title='ガーベージコレクション'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5275749053566271696</id><published>2007-10-15T06:59:00.003+09:00</published><updated>2007-10-15T16:55:07.657+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>インナークラス</title><content type='html'>内部クラスと呼ばれるものにはにはインナークラスのほかに静的ネストクラス、ローカルインナークラス、無名クラスがある。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;インナークラス&lt;br /&gt;インナークラスはアウタークラスのインスタンスから呼び出される。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] arvs) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Outer.I1 objInner = new Outer().new I1();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objInner.func();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Outer objOuter = new Outer();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objOuter.func();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Outer {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class Inner1 {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func(){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Innerclass1");&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class Inner2 {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func(){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Innerclass2");&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Inner2().func();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Innerclass1&lt;br /&gt;Innerclass2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5275749053566271696?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5275749053566271696/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5275749053566271696' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5275749053566271696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5275749053566271696'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_7217.html' title='インナークラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3269876629814251249</id><published>2007-10-15T06:59:00.001+09:00</published><updated>2007-10-15T16:57:00.827+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>静的ネストクラス</title><content type='html'>静的ネストクラスは静的メンバーと同じように扱える&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] arvs) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Outer.Inner objInner = new Outer.Inner();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objInner.func();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class Outer {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static class Inner {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func(){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Innerclass");&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Innerclass&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3269876629814251249?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3269876629814251249/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3269876629814251249' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3269876629814251249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3269876629814251249'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_9322.html' title='静的ネストクラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-67157760838011049</id><published>2007-10-15T06:57:00.003+09:00</published><updated>2007-10-15T16:58:04.859+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ローカルインナークラス</title><content type='html'>ローカルインナークラスはメソッドの中に定義する。&lt;br /&gt;ローカールインナークラスのインスタンスをメソッド内に生成する。&lt;br /&gt;アクセス修飾子は使用できない。final もしくは abstract を使用できる。&lt;br /&gt;ローカルインナークラスから final 以外のローカル変数にアクセスできない。&lt;br /&gt;ローカルインナークラスからアウタークラスのメンバーにアクセスできる。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] arvs) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;final int x = 1;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class Local {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(x);&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Local local = new Local();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local.func();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-67157760838011049?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/67157760838011049/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=67157760838011049' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/67157760838011049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/67157760838011049'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_6568.html' title='ローカルインナークラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3269871669623520223</id><published>2007-10-15T06:57:00.001+09:00</published><updated>2007-10-15T17:00:12.781+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>無名インナークラス</title><content type='html'>名前のないインナークラス。&lt;br /&gt;匿名クラスとも言う。&lt;br /&gt;メソッド内にも記述できる&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] arvs) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Super objSuper = new Super() {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("無名インナークラス");&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objSuper.func();&lt;br /&gt;  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;} &lt;br /&gt;class Super {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Superclass");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;無名インナークラス&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3269871669623520223?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3269871669623520223/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3269871669623520223' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3269871669623520223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3269871669623520223'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_1619.html' title='無名インナークラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8386190666907534031</id><published>2007-10-15T06:56:00.004+09:00</published><updated>2007-10-15T17:01:07.871+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>マルチスレッド</title><content type='html'>スレッドは Java プログラムの動作単位です。&lt;br /&gt;マルチスレッドプログラムにより複数のスレッドを同時に（１CPU環境ではスレッドスケジューリングにより交互に）動かすことができます。&lt;br /&gt;&lt;br /&gt;＜マルチスレッドの実装方法＞&lt;br /&gt;&lt;br /&gt;java.lang.Thread クラスを拡張する&lt;br /&gt;&lt;br /&gt;java.lang.Runnable インターフェースを実装する&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;＜スレッドのライフサイクル＞&lt;br /&gt;生成　→　実行可能　→　実行　→　終了&lt;br /&gt;&lt;br /&gt;＜スレッドを実行不可状態にするメソッド＞&lt;br /&gt;sleep&lt;br /&gt;wait&lt;br /&gt;&lt;br /&gt;＜スレッドを実行不可状態から実行可能状態にするメソッド＞&lt;br /&gt;notify&lt;br /&gt;notifyAll&lt;br /&gt;&lt;br /&gt;＜実行中のスレッドを実行可能状態へ戻すメソッド＞&lt;br /&gt;yield&lt;br /&gt;&lt;br /&gt;＜スレッドの同期化＞&lt;br /&gt;マルチスレッドで動作するプログラムは必要に応じて各スレッドを同期化する必要があります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8386190666907534031?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8386190666907534031/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8386190666907534031' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8386190666907534031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8386190666907534031'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_8386.html' title='マルチスレッド'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8782007607642833299</id><published>2007-10-15T06:56:00.003+09:00</published><updated>2007-10-15T17:04:05.282+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>Thread クラス</title><content type='html'>基本プログラム&lt;br /&gt;Thread クラスを継承して run メソッドをオーバーライドする&lt;br /&gt;&lt;br /&gt;class Sample1{&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread t1 = new Thread(){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run(){&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=0;i&lt;100;i++){&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Hello");&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread t2 = new Thread(){&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run(){&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=0;i&lt;100;i++){&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("World");&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t1.start();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t2.start();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;出力結果は Hello と World が時々入れ替わって出力される。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8782007607642833299?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8782007607642833299/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8782007607642833299' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8782007607642833299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8782007607642833299'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/thread.html' title='Thread クラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7974484162948129499</id><published>2007-10-15T06:56:00.001+09:00</published><updated>2007-10-15T17:05:34.449+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>Runnable インターフェース</title><content type='html'>基本プログラム&lt;br /&gt;Runnable インターフェースを実装するクラスのオブジェクトを引数に Thread オブジェクトを生成する。&lt;br /&gt;run メソッドをオーバーライドする。&lt;br /&gt;&lt;br /&gt;class RA implements Runnable {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run(){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 100; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("スレッド "&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ Thread.currentThread().getName()); &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class RB implements Runnable {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 100; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("スレッド "&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ Thread.currentThread().getName()); &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;public class Sample {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RA ra = new RA();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RB rb = new RB();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread ta = new Thread(ra);&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread tb = new Thread(rb);&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ta.setName("A");// スレッド名をセット&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tb.setName("B");// スレッド名をセット&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ta.start();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tb.start();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;出力結果は時々交互になる&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7974484162948129499?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7974484162948129499/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7974484162948129499' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7974484162948129499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7974484162948129499'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/runnable.html' title='Runnable インターフェース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-4290183601352327647</id><published>2007-10-15T06:55:00.003+09:00</published><updated>2007-10-15T17:08:00.956+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>join メソッド</title><content type='html'>マルチスレッドにおいて１つのスレッドが終了してからもうひとつのスレッドを動作させるには join メソッドを使います。&lt;br /&gt;ta と tb というスレッドがある場合&lt;br /&gt;ta.join() で ta が完了するまで他のスレッドは実行を待機する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class RA implements Runnable {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run(){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 100; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("スレッド"&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ Thread.currentThread().getName()); &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class RB implements Runnable {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void run() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &lt; 100; i++) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("スレッド"&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ Thread.currentThread().getName()); &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;public class ThreadRunnable1 {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RA ra = new RA();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RB rb = new RB();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread ta = new Thread(ra);&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread tb = new Thread(rb);&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ta.setName("A");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// スレッド名をセット&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tb.setName("B");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// スレッド名をセット&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ta.start();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ta.join();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (InterruptedException e) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tb.start();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;出力結果は&lt;br /&gt;スレッドA がすべての回数出力されてから スレッドB の出力が始まる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-4290183601352327647?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/4290183601352327647/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=4290183601352327647' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4290183601352327647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4290183601352327647'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/join.html' title='join メソッド'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-8890118595319688670</id><published>2007-10-15T06:55:00.001+09:00</published><updated>2007-10-15T17:08:27.741+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>スレッドの優先順位</title><content type='html'>スレッドには優先順位があります。&lt;br /&gt;スレッドの優先順位を設定するには setPriority メソッドを使います。&lt;br /&gt;優先順位は 1 ～ 10 の値を設定できます。&lt;br /&gt;待機中のスレッドがすべて優先順位どおりに実行されるという保障はありません。&lt;br /&gt;優先順位に依存したプログラムを書くことはよくありません。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-8890118595319688670?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/8890118595319688670/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=8890118595319688670' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8890118595319688670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/8890118595319688670'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_8668.html' title='スレッドの優先順位'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-4595936021598993478</id><published>2007-10-15T06:54:00.003+09:00</published><updated>2008-12-29T11:56:55.489+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>スレッドの同期化</title><content type='html'>複数のスレッドからアクセスされるオブジェクトのメソッドは同期化処理をするべきです。&lt;br /&gt;同期化は synchronized 修飾子を使用します。&lt;br /&gt;&lt;br /&gt;下記のプログラムは ２人が同じ講座からお金を引き出すプログラムです。&lt;br /&gt;残高が 10 未満なら引き出しをしません。&lt;br /&gt;残高が 10 以上なら 10 ずつ引き出しをします。&lt;br /&gt;したがって残高がマイナスになることはありません。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class Sample {&lt;br /&gt;    public static void main(String[] arvs) {&lt;br /&gt;        Account account = new Account(100);&lt;br /&gt;        Family taro = new Family(account, "太郎");&lt;br /&gt;        Family jiro = new Family(account, "次郎");&lt;br /&gt;        taro.start();&lt;br /&gt;        jiro.start();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;class Family extends Thread {&lt;br /&gt;    private Account account;&lt;br /&gt;    private String name;&lt;br /&gt;    Family (Account account, String name) {&lt;br /&gt;        this.account = account;&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;    public void run() {&lt;br /&gt;        for (int i = 0; i &lt; savings =" savings;"&gt;= amount) {&lt;br /&gt;            return true;&lt;br /&gt;        } else {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    /* 引き出し処理の結果を返す */&lt;br /&gt;    public &lt;strong&gt;synchronized &lt;/strong&gt;boolean withdraw(int amount) {&lt;br /&gt;        if (withdrawable(amount)) {&lt;br /&gt;            // 動きをわかりやすくするために１秒スリープ&lt;br /&gt;            try {&lt;br /&gt;                Thread.sleep(1000);&lt;br /&gt;            } catch (InterruptedException e) {&lt;br /&gt;                    e.printStackTrace();&lt;br /&gt;            }&lt;br /&gt;            savings -= amount;&lt;br /&gt;            return true;&lt;br /&gt;        } else {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public String toString() {&lt;br /&gt;        return String.valueOf(savings);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;太郎は引き出せました。残高 90&lt;br /&gt;太郎は引き出せました。残高 80&lt;br /&gt;太郎は引き出せました。残高 70&lt;br /&gt;太郎は引き出せました。残高 60&lt;br /&gt;太郎は引き出せました。残高 50&lt;br /&gt;太郎は引き出せました。残高 40&lt;br /&gt;次郎は引き出せました。残高 30&lt;br /&gt;次郎は引き出せました。残高 20&lt;br /&gt;次郎は引き出せました。残高 10&lt;br /&gt;次郎は引き出せました。残高 0&lt;br /&gt;次郎は引き出せませんでした。残高 0&lt;br /&gt;次郎は引き出せませんでした。残高 0&lt;br /&gt;&lt;br /&gt;同期化しない場合の出力結果&lt;br /&gt;（例）&lt;br /&gt;次郎は引き出せました。残高 80&lt;br /&gt;太郎は引き出せました。残高 80&lt;br /&gt;太郎は引き出せました。残高 60&lt;br /&gt;次郎は引き出せました。残高 60&lt;br /&gt;次郎は引き出せました。残高 50&lt;br /&gt;太郎は引き出せました。残高 50&lt;br /&gt;次郎は引き出せました。残高 30&lt;br /&gt;太郎は引き出せました。残高 30&lt;br /&gt;太郎は引き出せました。残高 10&lt;br /&gt;次郎は引き出せました。残高 10&lt;br /&gt;次郎は引き出せました。残高 -10&lt;br /&gt;太郎は引き出せました。残高 -10&lt;br /&gt;&lt;br /&gt;このように同期化をしないと残高がマイナスになるというおかしなことが起こります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;synchronized ブロックによる同期化&lt;/strong&gt;&lt;br /&gt;上記のコードは共通の Account オブジェクトをロックする形でも同期化できます。&lt;br /&gt;&lt;br /&gt;    public void run() {&lt;br /&gt;        &lt;strong&gt;synchronized &lt;/strong&gt;(account) {&lt;br /&gt;        for (int i = 0; i &lt; 6; i++) {&lt;br /&gt;            if (account.withdraw(10)) {&lt;br /&gt;                System.out.println(&lt;br /&gt;                name + "は引き出せました。残高 "&lt;br /&gt;                + account.toString());&lt;br /&gt;            } else {&lt;br /&gt;                System.out.println(&lt;br /&gt;                name + "は引き出せませんでした。残高 "&lt;br /&gt;                + account.toString());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;この場合は実行中のスレッド以外は Account オブジェクトのすべてのメソッドへのアクセスができません。&lt;br /&gt;&lt;br /&gt;同期化　＝　ロックの取得&lt;br /&gt;&lt;br /&gt;ということができます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-4595936021598993478?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/4595936021598993478/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=4595936021598993478' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4595936021598993478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/4595936021598993478'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_992.html' title='スレッドの同期化'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-5685296685596366499</id><published>2007-10-15T06:54:00.001+09:00</published><updated>2007-10-16T12:38:00.794+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>wait、notify、notifyAll メソッド</title><content type='html'>wait、notify、notifyAll メソッドの使い方&lt;br /&gt;&lt;br /&gt;これらのメソッドは同期化されたブロック内で使用できます。&lt;br /&gt;これらのメソッドはロックを取得しているときに動作します。&lt;br /&gt;&lt;br /&gt;wait&lt;br /&gt;ロックを開放する&lt;br /&gt;&lt;br /&gt;notify/notifyAll&lt;br /&gt;同期コードを抜けた後ロックを開放する&lt;br /&gt;&lt;br /&gt;メソッドの詳細は &lt;a href="http://java.sun.com/javase/6/docs/api/"&gt;Javadoc&lt;/a&gt; を参照ください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-5685296685596366499?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/5685296685596366499/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=5685296685596366499' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5685296685596366499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/5685296685596366499'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/waitnotifynotifyall.html' title='wait、notify、notifyAll メソッド'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-3547280660034068083</id><published>2007-10-15T06:53:00.001+09:00</published><updated>2007-10-16T12:06:55.644+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>ジェネリクス</title><content type='html'>JDK 5.0 より導入された記述法&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;コレクションの記述&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;  /* 従来型 */&lt;br /&gt;  List list1 = new ArrayList();&lt;br /&gt;  /* ジェネリクス */&lt;br /&gt;  List&lt;String&gt; list2 = new ArrayList&lt;String&gt;();&lt;br /&gt;  List&lt;Integer&gt; list3 = new ArrayList&lt;Integer&gt;();&lt;br /&gt;  &lt;br /&gt;  list1.add("Conventional");&lt;br /&gt;  list2.add("Generics");&lt;br /&gt;  list3.add(new Integer(7));&lt;br /&gt;  &lt;br /&gt;  String conventional = (String) list1.get(0);&lt;br /&gt;  String generics = list2.get(0);&lt;br /&gt;  /* java.lang.ClassCastException 発生 */&lt;br /&gt;  Integer i = (Integer)list1.get(0);&lt;br /&gt;  /* コンパイルエラー */&lt;br /&gt;  Integer i2 = (Integer)list2.get(0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ClassCastException&lt;/strong&gt;&lt;br /&gt;継承関係のない型にキャストすると実行時エラーとなる。&lt;br /&gt;&lt;br /&gt;ジェネリクスの使用によってこのようなキャストミスはコンパイル時に発見できる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-3547280660034068083?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/3547280660034068083/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=3547280660034068083' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3547280660034068083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/3547280660034068083'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post_15.html' title='ジェネリクス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-2948398859799508407</id><published>2007-10-15T06:50:00.000+09:00</published><updated>2007-10-17T12:23:47.786+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java 基本メモ'/><title type='text'>アノテーション</title><content type='html'>&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8E%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3"&gt;アノテーション&lt;/a&gt;とはプログラムに記述できる注釈のようなものです。&lt;br /&gt;JDK 5.0 より導入された記述方法&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;適切に&lt;a href="/2007/10/blog-post_8258.html"&gt;オーバーライド&lt;/a&gt;されていないとコンパイルエラー。&lt;br /&gt;&lt;br /&gt;class SP {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void func(){&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Super");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;class SU extends SP {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int func() {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Sub"); &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;___________&lt;br /&gt;&lt;br /&gt;@Deprecated&lt;br /&gt;非推奨メソッドを定義し警告を出す。&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;func();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Deprecated&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static void func() { }&lt;br /&gt;}&lt;br /&gt;___________&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("&lt;strong&gt;deprecation&lt;/strong&gt;")&lt;br /&gt;非推奨警告の抑制&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("&lt;strong&gt;fallthrough&lt;/strong&gt;")&lt;br /&gt;case に fall-through する可能性を警告&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("&lt;strong&gt;finally&lt;/strong&gt;")&lt;br /&gt;finally 節が正常に完了してない警告を抑制&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("&lt;strong&gt;serial&lt;/strong&gt;")&lt;br /&gt;serialVersionUID 未定義警告の抑制&lt;br /&gt;&lt;br /&gt;２つ以上の警告をまとめて抑制&lt;br /&gt;@SuppressWarnings({"deprecation", "finally"})&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-2948398859799508407?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/2948398859799508407/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=2948398859799508407' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2948398859799508407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/2948398859799508407'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/10/blog-post.html' title='アノテーション'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2529900423618616471.post-7539517937206641529</id><published>2007-09-27T10:48:00.001+09:00</published><updated>2011-01-11T15:54:11.642+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>SJCP とは</title><content type='html'>&lt;p&gt;SJCP とは Sun Java Certified Programmer のことです。&lt;br /&gt;詳しくは　&lt;a href="http://suned.sun.co.jp/JPN/certification/progdetails.html"&gt;http://suned.sun.co.jp/JPN/certification/progdetails.html&lt;/a&gt;　を参照ください。&lt;br /&gt;Java プログラマーとしての基本的な知識を問われます。&lt;br /&gt;管理人は数年前にこの資格を取りました。&lt;/p&gt;&lt;br /&gt;EDIT(2010年): OracleがSunを買収したため、今後はSJCPよりもOJCPという名前のほうが浸透していくと考えられます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2529900423618616471-7539517937206641529?l=sjcp-geek.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sjcp-geek.blogspot.com/feeds/7539517937206641529/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2529900423618616471&amp;postID=7539517937206641529' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7539517937206641529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2529900423618616471/posts/default/7539517937206641529'/><link rel='alternate' type='text/html' href='http://sjcp-geek.blogspot.com/2007/09/sjcp.html' title='SJCP とは'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
