2009-09-01から1ヶ月間の記事一覧

ストリームの種類

Java言語で用意されているストリームの種類は以下の通りバイトストリーム(byte単位)キャラクタストリーム(char単位)出力ストリームOutputStreamWriter入力ストリームInputStreamReader

正規表現関連メソッド

正規表現関連クラスはjava.util.regexパッケージで提供されている以下のメソッドの働きを覚えておく必要がある○Patternクラスメソッドstatic Pattern compile(String) ← 文字列を指定してPatternオブジェクトを取得Matcher matcher(CharSequence) ← 文字列か…

正規表現の記述方式

正規表現の特別な記述方式には以下のものがある○を使った表現から1文字 ex. [a-z] ⇒ 小文字のアルファベット中の1文字○定義済み文字円マーク(バックスラッシュ)と1文字で特別な指定を表す(詳細下記)○記号繰り返しの条件などの指定を表す(詳細下記)○定義済み…

DateクラスとDateFormatクラス

java.util.Dateクラスは特定の時点の日付・時刻をミリ秒の精度で管理するJava.text.DateFormatクラスはロケールに対応した日付・時刻をフォーマットする使用するときは、Dateクラスのインスタンスを作成し、DateFormatクラスのstaticメソッドにて、特定のロ…

Autoboxing, Unboxingの諸規則

Autoboxing, Unboxingに関する諸規則は以下の通りAutoboxingにおいて暗黙の型変換は行われないメソッドの引数で使用されている場合、1. 型が完全に一致しているメソッド が優先され、それが無い場合に、 2. Autoboxing, Unboxingが可能なメソッドが検索され…

Autoboxing, Unboxing

基本データ型からラッパークラスへの自動変換をAutoboxing、ラッパークラスから基本データ型への自動変換をUnboxingと呼ぶ。JDK 5.0より追加された機能

Stringのインスタンス化

Stringオブジェクトはnew キーワードを使用せずに、直接文字列リテラルを代入して作ることが出来る。ただし、new キーワードを使用してオブジェクトを作成した場合には、内容の文字列いかんに関わらず、必ず新しいオブジェクトが生成されるのに対して、直接…

equals()メソッドとhashCode()メソッドのオーバーライド

equals()メソッドをオーバーライドするときは必ずhashCode()メソッドをオーバーライドする必要がある。上記2つのメソッドオーバーライドは以下の規則に準拠しなければならない同一オブジェクトに対して、hashCode()メソッドが複数回呼び出されても、同一の整…

Objectクラスのequals()メソッド

Objectクラスのequals()メソッドは、オブジェクトの参照先が同じであるかどうかを比較し、同じである場合にtrueを返す。従って、Objectクラスのequals()メソッドは、==演算子と等価である。

スレッドの二重呼び出し

同じスレッドで2度以上start()メソッドの呼び出しを行うと、実行時にillegalThreadStateExceptionがthrowされる。

ネストクラスのインスタンス化

ネストクラスのインスタンス化構文は以下の通り○非static(インナークラス)外側のクラス名.非staticクラス名 変数名 = new 外側のクラス名().new 非staticクラス名() ;○staticクラス外側のクラス名.staticクラス名 変数名 = new 外側のクラス名.static…

ネストクラスの諸規定

ネストクラスの諸規定は以下の通り1. 非staticクラス(インナークラス)、staticクラス共通の規定外側のクラスとネストクラスは同じ名前(クラス名)を使用出来ないアクセス修飾子は全て使用出来るabstract修飾子、final修飾子は使用出来る(ただし、abstractは外…

内部クラスの定義

クラスの中で定義されたクラスをネストクラスと呼び、非staticなネストクラスのことを特にインナークラスと呼ぶ。インナークラスはさらに、クラスのメンバローカルクラス匿名クラスに分類される。

スレッド関連の基本メソッド

ThreadクラスおよびObjectクラスの以下のメソッドを覚えておくこと。○Threadクラス staicメソッド sleep(), yield() インスタンスメソッド run(), join(), interrupt()○Objectクラス インスタンスメソッド wait(), notify(), notifyAll()各メソッドの働き・s…

Javaにおけるデッドロック

Javaでは、デッドロックの発生をコンパイルのタイミングで検出することは出来ない。また、デッドロックが発生しても、例外等で通知する仕組みはない。従って、プログラムで回避する(コードインスペクションの必要性)。デッドロックのリスクを回避する安全な…

staticメソッドでsynchronized

staticメソッドに対してsynchronizedを使用すると、クラスファイルがロードされるタイミングで、java.lang.Classクラス型を持つオブジェクトがJava実行環境によって用意される。そして、synchronizedメソッドを実行すると、そのクラスに対応するClassオブジ…

スレッドの優先度(スレッドの実行)

各スレッドには優先度が設定されており、実行可能状態のスレッドが競合した場合は優先度の高いものから実行される。※ただし、OS依存のため、優先度順が保証されているわけではない。getPriority()スレッドの優先度を取得するsetPriority()スレッドの優先度を…

Javaスレッド処理(スレッドの実行)

スレッドを切り替えるタイミングはOSが管理している。現在実行出来るスレッドが何であるかはOSからJava実行環境に通知される。従って同じプログラムでも、OSの割り当てのタイミングによって実行結果が異なる場合がある。

mainスレッド

main()メソッドには固有のスレッドが割り当てられ、それはmainスレッドと呼ばれる。

アサーションを利用する場面

アサーションを利用する場面は以下の通りである事前条件のチェック −処理実行前にtrueとなっているべき条件※ただし、publicメソッドの引数チェックには使用しない。 ↑publicメソッドの引数チェックは通常コードにて必ず行うのが基本事後条件のチェック −処理…

オーバーライド時のルール

戻り値はスーパークラスと同じ型かもしくはその戻り値の型のサブクラス。アクセス修飾子はスーパークラスと同じかそれよりも公開範囲が広いもの。

throws使用のメソッドオーバーライド

throwsを使用しているメソッドをオーバーライドする際には以下の法則が適用されるサブクラスのメソッドがスローする例外は、スーパークラスの例外と同じか、その例外のサブクラスである必要があるスーパークラスのメソッドが例外をスローしていても、サブク…

主要な例外クラス

以下の例外クラスはよく使用されるため、暗記すること。■Errorのサブクラス ○AssertionErrorassert文のboolean式でfalse ○ExceptionininitializerErrorstaticイニシャライザで予想外の処理が行われた ○StackOverflowError再帰の回数が多すぎて、スタック領域…

checked例外とunchecked例外

checked例外は例外処理が必須、uncecked例外は例外処理が任意である。uncheked例外は以下の通りErrorクラスおよびそのサブクラスプログラムによる例外処理では復旧できないような例外RuntimeExceptionクラス及びそのサブクラスJava実行環境内部が原因で発生…

拡張ディレクトリ

JARファイルにまとめたアプリケーションやクラスライブラリを以下のパスに配置すると、クラスパスの設定なしにそれらが自動的に検索される。JDKインストール先/jre/lib/extJREインストール先/lib/ext

JavaBeansとは

再利用可能なコンポーネントを作成するための仕様をJavaBeansと呼ぶ。また、JavaBeansの仕様に基づいて作成されたコンポーネントをBeanと呼ぶ。JavaBeans仕様public指定のクラスとするpublic指定で引数なしのコンストラクタを定義する。必要に応じて、引数有…

暗黙の型変換

基本データ型において、より狭い範囲の型の変数の値をより広い範囲の型に代入することが可能である。この時、型の変換が暗黙のうちに行われる。ex. int i = 100; double d = i; (コンパイルエラーとはならない)※ただし、この暗黙変換は必ずしも値の精度の保…

インターフェースに定義できる変数

インターフェースに定義できる変数はpublic static finalである変数、すなわち定数のみである。ソースコードにて修飾子を省略した場合は、コンパイラが自動で以上の修飾子を付加する。

可変長引数

可変長引数は、データ型指定の後に「...」と記述する。 ex. void method (int... a) {}他のデータ型引数と併用出来るがその場合は可変長引数を最後に記述する。可変長引数を複数利用することはできない。メソッド呼び出しの際には、引数リストを明確に定義し…

変数の初期化

インスタンス変数とstatic変数は、明示的に初期化をしていない場合、自動的に初期値が格納される。但し、ローカル変数は自動的に初期化されないため、使用する前に明示的に値を代入しておかないとコンパイルエラーとなる(ローカル変数の値は"undefined")。イ…