パッケージとクラスライブラリ
Javaマスターへの第一歩!プログラミングの基本を学びましょう!
変数とデータ型2024/2/23 6:112024/11/25 1:06演算子2024/2/23 6:102024/11/25 1:06制御文2024/2/23 6:092024/11/25 1:06配列2024/2/23 6:082024/11/25 1:06メソッド2024/2/23 6:062024/11/25 1:06オブジェクト指向2024/2/23 6:052024/11/25 1:06コンストラクタ2024/2/23 6:032024/11/25 1:06カプセル化2024/2/23 6:022024/11/25 1:06継承2024/2/23 6:002024/11/25 1:06ポリモーフィズム2024/2/23 5:502024/11/25 1:06パッケージとクラスライブラリ2024/2/23 5:472024/11/25 1:06抽象クラスとインターフェース2024/2/23 5:432024/11/25 1:06コレクションフレームワーク2024/2/23 5:442024/11/25 1:06関数型インターフェースとラムダ式2024/2/23 5:412024/11/25 1:06Stream API2024/2/23 5:332024/11/25 1:06例外処理2024/7/21 23:092024/11/25 1:06
このチャプターの目次
パッケージとは?
パッケージとは?クラスを分類する仕組みのことです。フォルダの管理とセットで分類します。「クラスの一意性を高める」という役割があります。
パッケージの作り方
Visual Studio Codeでパッケージを作成するには、プロジェクトのフォルダの下にフォルダを作成します。サイドバーのエクスプローラからを選択して「新しいフォルダーを作成する」アイコンをクリックします。
フォルダ名の入力欄が表示されますので、フォルダ名を入力します。
フォルダ名はとします。
パッケージに属するクラス
フォルダの中にPersonクラスを作成します。
ファイルの先頭に、というキーワードを使って宣言します。このクラスのフルネームは、となるので一意性が高まります。
パッケージ宣言されたクラスを利用する際には、使う側のクラスでして利用します。クラス名だけで利用することが可能で、フルネームは不要です。
クラスライブラリ
Java SEのインストール時に一緒にインストールされるクラス群(クラスライブラリ)の中から重要なクラスをご紹介したいと思います。
Objectクラス
全てのクラスの親となるクラスです。クラスの宣言にextends Objectと書かなくても、コンパイラによって継承されます。全てのクラスは自動的にObjectクラスの子孫になります。つまり、Object型の変数には全ての参照型を保存することが可能です。
Objectクラスから重要なメソッドを2つ紹介します。
toStringメソッド
オブジェクトの内容を文字列として表現したい時に使うメソッドです。オーバーライドして使います。オブジェクトの内容を一言で表現する処理を実装します。Date・Date2クラスでは、printDateメソッドがその役割を担っていました。
メソッドをオーバーライドすると良いでしょう。
その他には、電話クラスでは、toStringメソッドで電話番号を出力してやるPhoneクラスがわかりやすいかもしれません。
メソッドでは、引数に変数pを指定すると内部的にtoStringメソッドが自動的に呼び出されます。
toStringメソッドをオーバーライドする一つのメリットです。toStringメソッドを実装しなかった場合は、ObjectクラスのtoStringメソッドが実行されます。
@以下はオブジェクトを識別するための番号、ハッシュコードが出力されます。
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種類の基本データ型の値を持つ参照型のクラスのことです。
基本データ型 | ラッパークラス |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
ラッパークラスの特徴
- 各基本データ型の値を包み込むように設計されています
- クラスなので先頭は大文字です
- ラッパークラス型の変数をnullにすることができます
- 値を保持する以外に便利な機能があります
- Integer.parseInt()
- Double.parseDouble()
文字列の整数をint型に変換する機能
文字列の少数をdouble型に変換する機能
- 総称型または型引数などと呼ばれるジェネリクスの部分で使用されます。