Javaは豊富な標準ライブラリを備えており、これを使うことで日常的なプログラミング作業が非常に効率的になります。これらのライブラリは、ファイル操作やデータ構造、文字列操作、日付・時刻の処理、数学的計算など、多岐にわたる機能を提供します。Javaプログラミングにおいて標準ライブラリを理解し、効果的に活用することは、効率的なプログラムの開発に欠かせません。
この章では、Javaの標準ライブラリの中でも特に重要で、日常的に使われるクラスやメソッドを紹介します。特に以下の内容に焦点を当てます。
- Stringクラスの文字列操作
- Mathクラスを使った数学的計算
- java.utilパッケージのデータ構造
- java.timeパッケージの日付・時刻の操作
- java.nio.fileパッケージを使ったファイル操作
9.1 Stringクラス 〜文字列操作をマスターする〜
Stringクラスは、Javaで文字列を扱うための非常に強力なクラスです。文字列は、プログラムで頻繁に扱われるデータの一つであり、String
クラスを使うことで、文字列の操作や比較、変換が簡単に行えます。
9.1.1 Stringの作成と基本操作
String
オブジェクトは次のように作成します。
String message = "こんにちは、Java!";
このmessage
は、文字列「こんにちは、Java!」を保持しています。String
クラスでは、文字列に関するさまざまな操作が可能です。
長さの取得
文字列の長さを取得するには、length()
メソッドを使用します。
int length = message.length(); // 文字列の長さを取得
System.out.println("文字列の長さ: " + length);
実行結果:
文字列の長さ: 10
文字列の連結
文字列を連結するには、+
演算子やconcat()
メソッドを使用します。
String greeting = "こんにちは";
String name = "太郎";
String fullGreeting = greeting + "、" + name + "!"; // 連結
System.out.println(fullGreeting);
実行結果:
こんにちは、太郎!
文字列の比較
文字列の内容を比較するには、equals()
メソッドを使用します。
String str1 = "Java";
String str2 = "Java";
String str3 = "Python";
boolean isEqual = str1.equals(str2); // true
boolean isNotEqual = str1.equals(str3); // false
System.out.println("str1とstr2は同じですか?: " + isEqual);
System.out.println("str1とstr3は同じですか?: " + isNotEqual);
実行結果:
str1とstr2は同じですか?: true
str1とstr3は同じですか?: false
9.1.2 文字列操作のメソッド
String
クラスには、文字列を操作するための多くのメソッドが用意されています。ここでは、代表的なメソッドをいくつか紹介します。
部分文字列の取得
substring()
メソッドを使って、文字列の一部を取得できます。
String text = "Java Programming";
String part = text.substring(5, 16); // "Programming" を取得
System.out.println(part);
実行結果:
Programming
文字列の置換
replace()
メソッドを使って、文字列中の一部を置き換えることができます。
String message = "I love Java";
String newMessage = message.replace("Java", "Python");
System.out.println(newMessage);
実行結果:
I love Python
文字列の大文字・小文字変換
toUpperCase()
やtoLowerCase()
メソッドを使って、文字列を大文字や小文字に変換できます。
String original = "Hello World";
String upper = original.toUpperCase();
String lower = original.toLowerCase();
System.out.println("大文字: " + upper);
System.out.println("小文字: " + lower);
実行結果:
大文字: HELLO WORLD
小文字: hello world
9.1.3 文字列の分割
split()
メソッドを使って、特定の区切り文字で文字列を分割できます。
String sentence = "Java,Python,C++";
String[] languages = sentence.split(",");
for (String lang : languages) {
System.out.println(lang);
}
実行結果:
Java
Python
C++
9.2 Mathクラス 〜数学的計算を簡単に〜
JavaのMathクラスは、数学的な演算を行うための便利なメソッドを提供します。平方根、指数、絶対値、三角関数など、複雑な数学的計算を簡単に行うことができます。
9.2.1 基本的な数値演算
- 平方根:
Math.sqrt()
を使って平方根を求めます。
double sqrtValue = Math.sqrt(16); // 16の平方根は4
System.out.println("平方根: " + sqrtValue);
- 累乗:
Math.pow()
を使って累乗計算を行います。
double powerValue = Math.pow(2, 3); // 2の3乗は8
System.out.println("2の3乗: " + powerValue);
- 絶対値:
Math.abs()
を使って絶対値を求めます。
int absoluteValue = Math.abs(-10); // 絶対値は10
System.out.println("絶対値: " + absoluteValue);
9.2.2 ランダムな数値の生成
Math.random()
を使うことで、0.0から1.0までのランダムな浮動小数点数を生成することができます。
double randomValue = Math.random();
System.out.println("ランダムな数値: " + randomValue);
整数の範囲でランダムな数値を生成する場合は、次のように計算します。
int randomInt = (int)(Math.random() * 100); // 0から99までのランダムな整数
System.out.println("ランダムな整数: " + randomInt);
9.2.3 三角関数
Math
クラスには、三角関数を計算するためのメソッドも用意されています。
double sinValue = Math.sin(Math.toRadians(30)); // sin(30°)
double cosValue = Math.cos(Math.toRadians(60)); // cos(60°)
System.out.println("sin(30°): " + sinValue);
System.out.println("cos(60°): " + cosValue);
9.3 java.utilパッケージ 〜便利なデータ構造を使いこなす〜
Javaのjava.utilパッケージには、さまざまなデータ構造やユーティリティクラスが用意されています。この中でも、特に頻繁に使われるデータ構造であるリスト(List)、セット(Set)、**マップ(Map)**について解説します。
9.3.1 Listインターフェース
List
は順序を持つコレクションで、同じ要素を複数回含むことができます。ArrayList
やLinkedList
が一般的に使用されます。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// ArrayListの作成
ArrayList<String> names = new ArrayList<>();
// 要素の追加
names.add("太郎");
names.add("花子");
names.add("次郎");
// 要素の取得
String first = names.get(0); // インデックス0の要素を取得
System.out.println("最初の要素: " + first);
// リストの全要素をループ
for (String name : names) {
System.out.println(name);
}
}
}
9.3.2 Setインターフェース
Set
は重複する要素を持たないコレクションです。HashSet
が一般的に使用されます。
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
// HashSetの作成
HashSet<String> uniqueNames = new HashSet<>();
// 要素の追加
uniqueNames.add("太郎");
uniqueNames.add("花子");
uniqueNames.add("太郎"); // 重複した要素は無視される
// Setの全要素をループ
for (String name : uniqueNames) {
System.out.println(name);
}
}
}
9.3.3 Mapインターフェース
Map
はキーと値のペアを保持するデータ構造です。HashMap
がよく使われます。
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// HashMapの作成
HashMap<String, Integer> ages = new HashMap<>();
// 要素の追加
ages.put("太郎", 25);
ages.put("花子", 22);
ages.put("次郎", 28);
// 特定のキーに対応する値を取得
int age = ages.get("太郎");
System.out.println("太郎の年齢: " + age);
// Mapの全要素をループ
for (String name : ages.keySet()) {
System.out.println(name + "の年齢は " + ages.get(name) + " 歳です。");
}
}
}
9.4 java.timeパッケージ 〜日付と時刻を効率的に操作する〜
Java 8以降、java.timeパッケージが導入され、日付や時刻の操作が非常に使いやすくなりました。LocalDate
やLocalTime
、LocalDateTime
といったクラスを使うことで、日付や時刻の計算やフォーマットが簡単に行えます。
9.4.1 LocalDateクラス
LocalDate
クラスは日付のみを扱います。
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
// 現在の日付を取得
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
// 特定の日付を作成
LocalDate birthday = LocalDate.of(1990, 5, 15);
System.out.println("誕生日: " + birthday);
// 日付の加算
LocalDate nextWeek = today.plusDays(7);
System.out.println("1週間後の日付: " + nextWeek);
}
}
9.4.2 LocalTimeクラス
LocalTime
クラスは時刻のみを扱います。
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
// 現在の時刻を取得
LocalTime now = LocalTime.now();
System.out.println("現在の時刻: " + now);
// 特定の時刻を作成
LocalTime lunchTime = LocalTime.of(12, 30);
System.out.println("ランチの時間: " + lunchTime);
// 時刻の加算
LocalTime meetingTime = now.plusHours(2);
System.out.println("2時間後の時刻: " + meetingTime);
}
}
9.4.3 LocalDateTimeクラス
LocalDateTime
クラスは日付と時刻を両方扱います。
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
// 現在の日付と時刻を取得
LocalDateTime now = LocalDateTime.now();
System.out.println("現在の日付と時刻: " + now);
// 特定の日付と時刻を作成
LocalDateTime appointment = LocalDateTime.of(2023, 10, 25, 14, 0);
System.out.println("アポイントの日時: " + appointment);
}
}
9.5 java.nio.fileパッケージ 〜ファイル操作を簡単に〜
ファイル操作は多くのプログラムで必要とされます。Javaのjava.nio.fileパッケージを使うと、ファイルやディレクトリの操作が簡単に行えます。
9.5.1 ファイルの読み書き
ファイルを読み込む方法の一例として、Files.readAllLines()
メソッドを使ってファイルの内容を一行ずつ読み取ることができます。
import java.nio.file.*;
import java.io.IOException;
import java.util.List;
public class Main {
public static void main(String[] args) {
try {
// ファイルを読み込む
List<String> lines = Files.readAllLines(Paths.get("sample.txt"));
for (String line : lines) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("ファイルが見つかりません。");
}
}
}
9.5.2 ファイルの書き込み
ファイルにテキストを書き込む方法も非常に簡単です。
import java.nio.file.*;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
try {
// ファイルに書き込む
Files.write(Paths.get("output.txt"), Arrays.asList("こんにちは、Java!"));
System.out.println("ファイルに書き込みました。");
} catch (IOException e) {
System.out.println("書き込みに失敗しました。");
}
}
}
9.6 Javaの標準ライブラリまとめ
この章では、Javaの標準ライブラリの中でも日常的に使用するクラスやメソッドについて学びました。String
クラスを使った文字列操作、Math
クラスによる数学的計算、java.util
パッケージを使ったリストやセットなどのデータ構造、java.time
パッケージを使った日付や時刻の操作、java.nio.file
パッケージによるファイル操作を紹介しました。Javaの標準ライブラリは、プログラミングの効率を大幅に向上させる強力なツールです。
次章では、Javaの継承とポリモーフィズムについて学び、オブジェクト指向プログラミングの核心に迫ります。