0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java APIの主要なクラスの操作】

Last updated at Posted at 2024-06-02

はじめに

オラクル認定資格教科書 Javaプログラマ Silver SE8
第一章 Javaの基本 
第二章 Javaのデータ型の操作
第三章 演算子と判定構造の使用
第四章 配列の作成と使用
第五章 ループ構造の使用
第六章 メソッドとカプセル化の操作
第七章 継承の操作
第八章 例外の処理
第九章 Java APIの主要なクラスの操作← イマココ!!

Stringクラス

Immutableなクラスであり、インスタンス内部に持っている文字列を変更することはできない。
文字列に変更を加えた場合、新しいインスタンスが生成される。

replaceメソッド

文字列.replace("元の文"、 "差し替え文")
文字列の一部を指定した文字列に差し替える

charAtメソッド

文字列.charAt(何文字目か指定)
指定した一文字を抜き出す

indexOfメソッド

文字列.indexOf("文章")
引数で指定した文字が文字列のどの位置にあるのかを返す

substringメソッド

文字列.substring(開始位置, 終了位置)
文字列から任意の文字列を抜き出す

trimメソッド

文字列.trim()
文字列の前後にある空白を除去する

startWithメソッド

文字列.startWith("b")
対象の文字列が引数で指定した文字で始まっているかを真偽判定

splitメソッド

文字列.split(正規表現)
文字列を指定した部分で分割する

concatメソッド

String str = "Hello".concat("World")
文字列に引数内の文字列を連結して、新しい文字列を戻す

containsメソッド

文字列が引数の文字列を含んでいるか確認する

StringBuilderクラス

StringBuilderクラスはインスタンス生成時にデフォルトで16文字分のバッファを持っており、変更可能である

appendメソッド

文字列.append(hello)
文字列.append("hello")
文字列.append('a')
文字列.append("hello", 1, 3)→位置の指定もできる
文字列に新しい文字列を追加する

insertメソッド

文字列.insert(位置, 挿入する文字列)
文字列を任意の場所に挿入する

deleteメソッド

文字列.delete(開始位置, 終了位置)
任意の範囲を削除する

deleteCharAtメソッド

文字列.deleteCharAt(何文字目か指定)
任意の一文字を削除する

reverseメソッド

文字列.reverse()
文字列を逆転させる

subSequenceメソッド

文字列.subSequence(開始位置, 終了位置)
subStringメソッドと同様、任意の範囲の文字列を抽出する

ラムダ式

関数型インターフェイスを実装したクラスのインスタンスを、ごく短いコーディング量で簡単につくる方法
→クラスの宣言とインスタンスの生成を同時に行う文法

関数型インターフェースとは
ラムダ式やメソッド参照の代入先になれるインターフェースのこと。 関数型インターフェースの条件は、大雑把に言って、定義されている抽象メソッドが1つだけあるインターフェース。 staticメソッドやデフォルトメソッドは含まれていても構わない(関数型インターフェースの条件としては無視される

構文
関数インターフェースの型 変数名 = (引数型 変数名) -> {処理};

引数が1つの時は()を省略できる
関数インターフェースの型 変数名 = 引数型 変数名 -> {処理};

処理が一つの時は{}を省略できる
関数インターフェースの型 変数名 = 引数型 変数名 -> 処理;

処理が一つしかなく、それが値を戻す場合はreturnを記述できない(中カッコ{}を付けた場合は記述できる)
関数インターフェースの型 変数名 = 引数型 変数名 -> {return 値};
関数インターフェースの型 変数名 = 引数型 変数名 -> 値;
関数インターフェースの型 変数名 = 引数型 変数名 -> return 値;→コンパイルエラー

// int型のsampleメソッドを持つSampleInterfaceというインターフェースがあるとする

class Implement implements SampleInterface {
    public int sample(int a, int b) {
        return a + b;
    }
}


class MainTest {
    public static void main(String[] args) {
        Implement impl = new Implement();
        System.out.println(impl.sample(5, 5)); // → 10が表示される
    }

↓↓ラムダ式で書き換えると以下の一つで済む

class MainTest {
    public static void main(String[] args) {
        SampleInterface s = (a, b) -> a + b; // ここまでラムダ式(インタフェースの実現とインスタンスの生成が1文で完了)
        System.out.println(s.sample(5, 5));
    }
}

ラムダ式のスコープ

 ラムダ式はそれを囲むブロックと同じスコープを持つ

ラムダ式で引数を宣言するとき、ブロック内にある変数と同じ名前を使えない。

public static void main(String[] args) {
  String s = "sampl"
  SampleInterface s = (String s) -> System.out.println(s); // 引数の宣言で使用した「s」は上の行で使用済みのためコンパイルエラー
  s.method("文字列"));
}

 同じスコープ内であればラムダ式からラムダ式外の変数へアクセスできる。
ただし、実質的にfinalな変数(finalでなくとも、変数に対して変更を行わないこと)のみが対象である。

関数型インターフェース 「Predicate」

 Predicateはtestメソッド持つ関数型インターフェース、引数を1つ受け取り、booleanを返す。

 test(T t)には、ジェネリクスに指定する型を引数として与える。
 ラムダ式の処理部分にはbooleanを返すための評価式を記述する。
 以下では、正数をtrueとして返す。

Predicate<Integer> number = num -> num > 0;
System.out.println(number.test(1));	// true
System.out.println(number.test(0));	// false

日付と時刻に関するAPI

LocalDateクラス

 日付を扱うクラスには、DateクラスやCalenderクラスなどがあるが、これらを改良したのがLocalDateクラス。
特徴として
1.Dateクラスは可変オブジェクトだが、LocalDateクラスは不変オブジェクトである
2.Calenderクラスでは月は0から始まるが、LocalDateでは1から始まる
3.日付を操作する便利メソッドが追加された

日付を扱う LocalDateクラスのメソッド

ofメソッド

 日付を指定してインスタンスを生成
LocalDate date = LocalDate.of(2022, 1, 1); // 2022-01-01 となる

nowメソッド

 現在の日付でインスタンスを生成
LocalDate date = LocalDate.now();

parseメソッド

 文字列の日付をLocalDateクラスに変換する
LocalDate date = LocalDate.parse("2022-04-01");

ほかにもあるがとりあえずこの3つ・・・

LocalTimeクラス

LocalTimeクラスは時刻を扱うためのクラス
特徴として
1.不変オブジェクトである
2.24時間で時間を扱い、午前/午後を区別しない

時刻を扱う LocalTimeクラスのメソッド

ofメソッド

 時刻を指定してインスタンスを生成
LocalTime time = LocalTime.of(14, 25, 3); // 14:25:03.00 となる
時:分:秒:ナノ秒 までフィールドがあり、秒以下は省略ができ、その場合00となる

nowメソッド

 現在の時刻でインスタンスを生成
LocalTime time = LocalTime.now();

parseメソッド

 文字列の時刻をLocalTimeクラスに変換する
LocalTime time = LocalTime.parse("14:25:3");

plusHoursメソッド

 指定された時間数を加算しする(LocalTimeオブジェクトは不変のため、加算した結果は新しいオブジェクトとなる)
LocalTime time = LocalTime.of(12, 1, 1);
time.plusHours(5);
→17:01:01.00となる
分、秒、ナノ秒バージョンもある
plusMinutes(long minutesToAdd)
plusSeconds(long secondstoAdd)
plusNanos(long nanosToAdd) // 0から999,999,999

LocalDateTimeクラス

LocalDateクラスとLocalTimeクラスを合わせたようなクラス
日付と時刻の両方を扱える
2021-05-30T15:47:13.395703
now()、of(年, 月, 日, 時, 分, 秒, ナノ秒)
plusXXX()、minusXXX()
getXXX()
getYear()、getMonth()、getDayOfMonth()、getDayOfWeek()、getDayOfYear()
などのメソッドもLocalDateTimeクラスに適用できる。

分かりやすい日付へ変更する場合にはDateTimeFormatterクラスを使用する

日付の差を扱う Periodクラス

Periodは日付ベースの時間量(3年4ヶ月など)を表す。

betweenメソッド(日付差を求める)

LocalDate from = LocalDate.of(2014, 1, 1);
LocalDate to = LocalDate.of(2015, 3, 10);
Period period = Period.between(from, to);
System.out.println(period); // P1Y2M9D -> 1年2ヶ月9日の意味

全期間を指定の単位へ変換 toXXX()

System.out.println(period.toMonths()); // 1年2ヶ月9日なので14ヶ月となる(1ヶ月未満は切り捨て)
// toYears, toMouths, toDays...

指定の単位だけ取り出す getXXX()

System.out.println(period.getMonths()); // P1Y2M9D(1年2ヶ月9日)の場合「2」が取り出される
// getYears, getMouths, getDays...

untilメソッド

もう一方の日付までの時間量を指定された単位で計算します。
ほぼbetweenメソッド

startDate.until(endDate, DAYS); // 日付の差を日数単位で出す
startDate.until(endDate, MONTHS); // 日付の差を月単位で出す
startDate.until(endDate); // 単位を指定しなかった場合、年月日で出る

時刻の差を扱う Durationクラス

Durationは時間ベースの時間量(3時間40分など)を表す。

betweenメソッド(時間差を求める)

LocalDateTime from = LocalDateTime.of(2015, 12, 15,  0,  0,  0);
LocalDateTime to   = LocalDateTime.of(2015, 12, 16, 12, 30, 59);
Duration duration = Duration.between(from, to);
System.out.println(duration); //PT36H30M59S -> 36時間30分59秒という意味

他のメソッドはPeriodクラスと似たようなもの

リンク集

【Javaの基本①】クラスの構造
【Javaの基本②】パッケージとインポート
【継承の操作②】インターフェース
【Javaのデータ型の操作①】プリミティブ型のデータ・参照型
【演算子と判定構造の使用①】論理演算子(&&、||)、同一性(==)、同値性(equals)
【演算子と判定構造の使用②】分岐処理(if、swich)
【配列の作成と使用】
【ループ構造の使用】while文、do-while文、for文、拡張for文
【メソッドとカプセル化の操作①】メソッドの概要
【メソッドとカプセル化の操作②】オーバーロード、コンストラクタ
【継承の操作①】クラスの継承
【例外の処理】
【Java APIの主要なクラスの操作】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?