Java-MEMO

配列をリストに変換するメソッド

配列をリストに変換するメソッドは、Arraysクラスに実装されており、構文は以下の通りpublic static <T> List<T> asList (T... a)※このメソッドで作られるリストは固定サイズのリストとなるので、新たにエレメントを追加することはできないArraysクラスはjava.util</t></t>…

TreeSet/TreeMapクラスを使用する際の注意

TreeSet/TreeMapクラスでは、重複エレメントの判定にequals()メソッドが使用される。また、エレメントのソートにcompareTo()メソッドが使用される。従って、もし2つのエレメントが異なる値を保持している(equals()はfalseを返す)にも拘わらず、compareTo()メ…

Comparableインターフェース

Comparableインターフェースは、自然順序づけを提供するためのインターフェースで、実装クラスはpublic int compareTo(T o)を以下のオブジェクト比較ルールに従って、正しく実装する必要がある■自オブジェクト.compareTo(比較対象オブジェクト)操作戻り値説…

ワイルドカード

型変数を特定しない場合は、ワイルドカード(?)を使用するワイルドカードに対して、以下の様に記述することでその境界を示すことが可能である上限境界< ? extends データ型>下限境界< ? super データ型>境界の定められていないワイルドカードをコレクションの…

型パラメータの拡張

型パラメータをサブクラスやインターフェースにも対応させるためには、以下のように記述する< 型パラメータ extends データ型>※この時、対応させたい「データ型」がインターフェースの場合も、"extends"キーワードを用いるex. ↓Serializableのサブクラスまた…

ジェネリックスを用いたインターフェース定義

インターフェースのメソッド定義に於いて、メソッド名は統一したいが、引数の型はその時に応じたデータ型を扱いたい、という場合に、インターフェースの側では型パラメータで指定し、実装クラスの方で使用するデータ型を指定(してオーバーライド)するという…

型パラメータの命名規則

型パラメータの名前は任意で構わないが、通常は意味のある大文字1文字が使用されるex) E = Element, K = Key, V = Value, T = Type

Mapインターフェースの実装クラス

Mapインターフェースの実装クラスの特徴は、以下の通りクラス名特徴HashMap基本的な具象クラス。TreeMapSortedMapインターフェースを実装したクラス。格納オブジェクトはキーをソートして管理。ソート方法は、TreeSetクラスと同様。

Setインターフェースの実装クラス

Setインターフェースの実装クラスの特徴は、以下の通りクラス名特徴HashSet基本的な具象クラス。TreeSetSortedSetインターフェースを実装している。このため、格納オブジェクトを、自然順序づけ、またはComparableインターフェースの実装クラスによる順序づ…

Listインターフェースの実装クラス

Listインターフェースの実装クラスの特徴は、以下の通りクラス名特徴ArrayList基本となるクラス。スレッドセーフではないが、その分Vectorよりも高速。LinkedList内部的に前後のオブジェクトへの参照をリンクとして保持している。オブジェクトの追加や削除は…

コレクション関連インターフェースと実装クラス

コレクションフレームワークの階層は以下のようになっている

コレクションの種類と特徴

リストセットマップオブジェクトの重複重複可重複不可キー:重複不可値 :重複可オブジェクトの管理形態添え字を用いて順序立てて管理順不同で管理キーとリンクして管理構成Collectionインターフェースを実装Collectionインターフェースを実装Collectionイン…

コレクション

複数のオブジェクトをまとめて取り扱うための統一した考え方を「コレクションフレームワーク」と呼び、コレクションフレームワークに基づいて提供されたオブジェクトを「コレクション」と呼ぶまた、コレクションに格納するオブジェクトを「エレメント」と呼…

フォーマット指示子

format()メソッドやprintf()メソッドの第1引数に指定する書式情報を含んだ文字列をフォーマット指示子と呼ぶex. %s:文字列 %d:整数

コマンドラインからの読み込み

Java実行環境は、標準入力(キーボード)から入力したデータをもとに、InputStreamオブジェクトを作成し、Systemクラスのin変数にそれを格納しているinは、publicなstatic変数であるため、System.inでアクセスする

Scannerクラス

Scannerクラスは、正規表現を使用して、基本データ型および文字列の構文解析を行うためのクラス。ファイルから直接読み込んだ文字列や、コマンドラインから入力された文字列を直接解析の対象とすることができる。Scannerクラスはjava.utilパッケージで提供さ…

シリアライズ可能なデータ

シリアライズ可能なデータは、基本データ型、配列、他のオブジェクトへの参照※Static変数はシリアライズ対象外※明示的にシリアライズ対象外にしたいインスタンス変数にはtransientを指定する

シリアライズとデシリアライズ

オブジェクトをファイルに書き込むことをシリアライズまたは直列化と呼ぶシリアライズされたオブジェクトを読み込んでメモリ上に復元することをデシリアライズまたは直列化復元と呼ぶ

FireReader及びFileWriter

FileReader及びFileWriterにおける入出力データの文字コードは、自動的に変換される。従って、プログラムから、ファイルが保存されているOSの文字コードを意識せずに入出力することが出来る。ちなみに、Javaは1文字をUnicodeで16ビットデータとして扱ってい…

DataImputStreamとDataOutputStream

javaの基本データ型およびString型を読み書きするストリームとして、DataimputStreamとDataOutputStreamが用意されている。これらのストリームは、単独では使用出来ず、他のストリームと連結して使用する必要がある。具体的には、他のストリームをコンストラ…

ストリームの種類

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される。