パッケージとクラスライブラリ

パッケージとは?

パッケージとは?クラスを分類する仕組みのことです。フォルダの管理とセットで分類します。「クラスの一意性を高める」という役割があります。

パッケージの作り方

Visual Studio Codeでパッケージを作成するには、プロジェクトのフォルダの下にフォルダを作成します。サイドバーのエクスプローラからを選択して「新しいフォルダーを作成する」アイコンをクリックします。
フォルダ名の入力欄が表示されますので、フォルダ名を入力します。
フォルダ名はとします。

パッケージに属するクラス

フォルダの中にPersonクラスを作成します。
ファイルの先頭に、というキーワードを使って宣言します。このクラスのフルネームは、となるので一意性が高まります。
パッケージ宣言されたクラスを利用する際には、使う側のクラスでして利用します。クラス名だけで利用することが可能で、フルネームは不要です。

クラスライブラリ

Java SEのインストール時に一緒にインストールされるクラス群(クラスライブラリ)から代表的(重要)なクラスをご紹介したいと思います。

Objectクラス

全てのクラスの親となるクラスです。クラスの宣言にextends Objectと書かなくても、コンパイラによって継承されます。全てのクラスは自動的にObjectクラスの子孫になります。つまり、Object型の変数には全ての参照型を保存することが可能です。
Objectクラスから重要なメソッドを2つ紹介します。

toStringメソッド

オブジェクトの内容を文字列として表現したい時に使うメソッドです。オーバーライドして使います。オブジェクトの内容を一言で表現する処理を実装します。Date・Date2クラスでは、printDateメソッドがその役割を担っていました。
メソッドをオーバーライドすると良いでしょう。
その他には、電話クラスでは、toStringメソッドで電話番号を出力してやるPhoneクラスがわかりやすいかもしれません。

equalsメソッド

オブジェクトの持っている値だけを比較して、一致しているかを判断したい場合にequalsメソッドを使います。オブジェクト同士の比較に、「==」演算子を使用する場合には注意が必要です。参照している実体が同じかを比較するからです。
equalsメソッドをオーバーライドすると良いでしょう。

Scannerクラス

Scannerクラスを使用すると、キーボードからの入力データをプログラムで利用することができます。new演算子でScannerクラスのインスタンスを生成しメソッドを実行すると、プログラムは一時停止し、ユーザの入力を待ち受ける状態に入ります。

コンストラクタ

コンストラクタでは1つの引数をとります。コンソールで実行中にキーボードからの入力を受け取る際にはを指定します。画面への出力では、メソッドを使用しましたが、コンソールからの入力にはを指定します。
このような入力元のことを入力ストリームと呼び、引数にファイルストリームを指定するとファイルからデータを読み込むことも可能です。

nextIntメソッド

ユーザから整数(int型)の入力を受け取るために使用されます。キーボードから入力してEnterキーを押すまでプログラムは一時停止します。入力後、プログラムは再開し、入力されたデータを整数として解釈して返します。
実行すると以下のようになります。
nextInt()メソッドは整数型の入力のみを受け付けます。そのため、ユーザが整数以外の入力(例えば文字列や浮動小数点数)を行うと、エラーが発生し、プログラムは異常終了してしまいます。

nextLineメソッド

入力ストリームから一行分の入力を読み取るために使用されます。ユーザが入力した一行全体を文字列(String)として取得します。
実行すると以下のようになります。

closeメソッド

Scannerクラスが使用している入力ストリームを閉じるために使用されます。このメソッドを呼び出すことで、入力ストリームを解放し、リソースを開放します。入出力の処理は非常にデリケートなため、Scannerクラスの使用が終わったら、必ずcloseしてやりましょう。

Stringクラス

文字列を扱うためのクラスStringは基本データ型ではなく参照型です。文字列はプログラムの中でもとてもよく使われるデータ型なので、new演算子を使わなくても良いという言語仕様になっています。文字列を操作するための便利な機能が数多く提供されています。

lengthメソッド

文字数を返します。入力チェックなどで使います。ただし、文字列の変数strがnullの場合はnull参照でエラーとなりますので、合わせてnullチェックもすると安全です。以下は入力チェックの例です。

isEmptyメソッド

文字列がからかどうかを調べます。入力チェックなどで使います。ただし、nullかどうかはチェックしません。

equalsメソッド

文字列の比較にはequalsを使います。演算子を使って比較すると、参照している実体が同じかを比較するからです。ただし、リテラルを代入した文字列同士の比較では一致すると判定する、という言語仕様があります。
文字列の比較を行う場合、内容を比較するためには必ずequalsメソッドを使うようにしましょう。これは、予期しない結果を避けるために重要です。

toLowerCase/toUpperCaseメソッド

アルファベットの文字列を小文字(大文字)に変換するメソッドです。Stringクラスの文字列は、内部的には読み取り専用となっていて編集することができません。
  • toUpperCaseメソッドの場合
    • 全ての文字列を大文字にした新しいオブジェクトを生成する。
    • 大文字に変更された新しいオブジェクトを参照する。

StringBuilderクラス

内部に編集用のバッファを持っており、文字列の追加・修正・置換などの編集に適したクラスです。

appendメソッド

文章の後ろに文章を付け足すメソッドです。引数に指定した文字列を末尾に付け足します。

insertメソッド

指定した位置に文字を挿入するメソッドです。引数に指定した文字列を指定した位置に挿入します。

replaceメソッド

指定した範囲を置換するメソッド、などがあります。引数で指定した範囲の文字列を指定した文字列に置き換えます。

ラッパークラスとは?

Javaのデータ型には、基本データ型と参照型があります。
  • 基本データ型
    • 値を単体で保存するためのデータ型
    • int、long、double、booleanなど
  • 参照型
    • 値を単体ではなく、構造体として保存するデータ型
ラッパークラスとは?8種類の基本データ型の値を持つ参照型のクラスのことです。
基本データ型ラッパークラス
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

ラッパークラスの特徴

  • 各基本データ型の値を包み込むように設計されています
  • クラスなので先頭は大文字です
  • ラッパークラス型の変数をnullにすることができます
  • 値を保持する以外に便利な機能があります
    • Integer.parseInt()
      • 文字列の整数をint型に変換する機能
    • Double.parseDouble()
      • 文字列の少数をdouble型に変換する機能
  • 総称型または型引数などと呼ばれるジェネリクスの部分で使用されます。