![見出し画像](https://assets.st-note.com/production/uploads/images/41726672/rectangle_large_type_2_c2cd4161dc3dc5e287c7be735a9f1480.png?width=1200)
JavaSilverに向けて⑪ API
・Mathクラス
ー pow
public static double pow(double a, double b)
累乗をするためのメソッド。1番目の引数を2番目の引数で累乗した値を返す。aをbだけ累乗した値を返す。
Math.pow(4,5);で4の5乗を示す。
ー sqrt
public static double sqrt(double a)
平方根を求めるためのメソッド。aの正の平方根を返す。
・Characterクラス
Characterクラスはchar型のラッパークラス。char型をオブジェクトとして扱いたい時に使う。
ー コンストラクタ
Character(char c)。char型からCharacter型を生成する。
ー toString(char c)
引数の値のString型を返す。
ー isLowCase(char c)
引数の値を小文字であるかを判断し、boolean型を返す。
ー valueOf(char c)
引数の値をCharacter型で返す。
ー compareTo(Character ch)
引数の方が大きい場合は−1、引数の方が小さい場合は1、同じ場合は0を返す。
ー is~
is~メソッドはboolean型でtrue若しくはfalseを返す。
ー isDisit
文字列が数字かどうかを返す。
・LocalDateTimeクラス
年-月-日-時-分-秒として表示される。不変の日付・時間オブジェクト。
Calendarクラスはmutableなクラスだったが、LocalDateTimeクラスはimmutableなクラスである。
また、Calendarクラスは「月」は0から始まっていたが、LocalDateでは1から始まる。
ー of
引数の情報が設定されたインスタンスを生成。いずれかの値が範囲外である場合、DateTimeExceptionを返す。
ー now
実行時の日付や時刻の情報を持ったインスタンスを生成。引数に取得したい時間のタイムゾーンを書く。引数がなければ、システムのデフォルトのタイムゾーンでインスタンスが生成される。
ー parse(CharSequence text)
文字列からインスタンスを取得する。テキストが解析できない場合は、DateTimeParseExceptionを返す。
ー equals
呼び出し元のインスタンスの引数のインスタンスの持つ情報が全く同じ場合はtrueを返す。
ー is〜
比較する内容が正しければtrueを返す。
isBefore, isAfterなどがある。
・日付を扱うクラスと変更について
Date-Time APIクラスはImmutableなクラスなので、加算や減算をしても元のインスタンスの値は変わらない。新たに加算、減算されたインスタンスが生成される。
ー plus(加算する値, ChronoUnit)
LocalDate date = LocalDate.of(2020, 11, 1);
LocalDate result = date.plus(1, ChronoUnit.DAYS);
//2020-11-2
減算する場合は、minusメソッドを使う。加算と同じ。
ー with(ChronoField, 変更したい値)
値を変更する事ができる。
LocalTime now = LocalTime.now();
System.out.println(now); //18:00:00.598
System.out.println(now.with(ChronoField.MILIT_OF_SECOND, 1); //18:00:00.001
System.out.println(now.with(ChronoField.NANO_OF_SECOND, 1); //18:00:00.000000001
ー TemporalAdjusterインターフェースを受け取るwith
例えば、月末などのように特定の日や時間を設定した新たなインスタンスを生成する。
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
//2020-11-25T22:00:00
System.out.println(zonedDateTime.with(TemporalAdjusters.lastDayOfMonth()));
//2020-11-30T22:00:00
ー 期間の計算を行うbetween
betweenを実行できるクラスが3つあり、何のクラスで実行するかによって戻り値が異なる。
Duration : 引数の2つのオブジェクトから、秒とナノ秒で期間を算出する。
Period : 引数の2つのオブジェクトから、年と月と日で期間を算出する。
ChronoUnit : 引数の2つのオブジェクトから、ChronoUnitが表す単位での期間をlongで算出する。
・ChronoFieldの列挙型の種類
ー YEAR
年を表す属性。
ー MONTH_OF_YEAR
月を表す属性。1~12までの値を指定できる。
ー DAY_OF_WEEK
週を表す属性。1~7までの値を設定できる。
ー DAY_OF_MONTH
その月の日を表す属性。1からその月が持つ最終日まで設定できる。1月であれば1日から31日までになる。
ー DAY_OF_YEAR
その年の日を表す。1からその年が持つ最終日まで設定できる。閏年でない場合は1〜365、閏年の場合は1〜366まで設定できる。
ー HOUR_OF_DAY
時を表す。0〜23まで指定できる。
ー MINUTE_OF_HOUR
分を表す属性。0~59まで指定できる。
ー SECOND_OF_MINUTE
秒を表す属性。0~999まで指定できる。
ー MILI_OF_SECOND
1000分の1秒を表す。0~999まで指定できる。
ー NANO_OF_SECOND
10億分の1秒を表す。0~9億9999万9999まで設定できる。
・TemporalAdjuster
時間的オブジェクトを調整するための方針。
・インターフェース Comparator<T>
Tは、このコンパレータにより比較されるオブジェクトの型。関数型インターフェースなので、ラムダ式又はメソッド参照の代入先として使用できる。
ー compare
int compare(T o1, T o2)
Tはオブジェクト。最初の引数が2番目の引数より小さい場合は正の整数、両方が等しい場合は0、最初の引数が2番目の引数より大きい場合は負の整数を返す。
引数がnullの場合はNullPointerException、引数の型によって比較ができない場合はClassCastExceptionを返す。
・配列のソート
配列(固定長)をソートするには、Arraysクラスのsortメソッドを使う。基本的には昇順で表示される。
Arrays.sort(配列名);
降順で表示するには、CollectionsクラスのreverseOrderメソッドをsortメソッドの第二引数に指定する。
Arrays.sort(配列名, Collections.reverseOrder());
*サンプル
public class Main {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5}
Arrays.sort(nums);
for(int i : nums) {
System.out.println(i);
}
}
}
//1 2 3 4 5
・Listのソート
List型のオブジェクトの要素をソートするには、Collectionsクラスのsortメソッドを使う。昇順で表示される。
Collections.sort(リスト名);
降順で表示するには以下のようにreverseOrderを使う。
Collections.sort(リスト名, Collections.reverseOrder());
*サンプル
public class Main {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Collections.sort(list);
System.out.println(list);
}
}
//1 2 3
・ Comparatorのlist
配列のソートやListのソートは文字列や数値型のようなJava側で用意したものはソートできるが、自分で定義したクラスオブジェクトをソートする事はできない。
自分で定義したクラスオブジェクトなどをソートしたい場合は、Comparatorインターフェースを使う。
降順で表示したい時は、reverseOrderメソッドをsortメソッドの第2引数に指定する事で可能。