JAVA 8新特性-03-日時API&Base 64
21721 ワード
JAVA 8新特性-03-日時API&Base 64
JAva 8は、新しいDate-time API(jsr 310)を公開することによって、日付と時間の処理をさらに強化する
旧バージョンのjavaでは、日付時間APIには多くの問題があります.その中には、次のものがあります.非スレッドセキュリティ-java.util.Dateは非スレッドセキュリティであり、すべての日付クラスが可変であり、java日付からの最大の問題の一つである. 設計が悪い-javaの日付/時間クラスの定義は一致せず、java.utilとjava.sqlのパッケージには日付クラスがあり、フォーマットと解析に使用されるクラスはjava.textパッケージで定義されています.JAva.util.Dateには日付と時間が含まれていますが、java.sql.Dateには日付のみが含まれており、java.sqlパッケージに含めるのは合理的ではありません.また、この2つのクラスには同じ名前がありますが、それ自体が非常に悪いデザインです. タイムゾーンは面倒-日付クラスを処理し、国際化を提供し、タイムゾーンのサポートがないため、javaはjava.utilを導入した.Calendarとjava.util.TimeZoneクラスですが、上記のすべての問題があります.
JAva 8はjava.timeパッケージの下に多くの新しいAPIを提供しています.以下に、2つの重要なAPIを示します. Local(ローカル)-タイムゾーンの問題なく、日付時間の処理を簡略化します. Zoned(タイムゾーン)-作成したタイムゾーン処理日時 により
新しいjava.timeには、すべての処理日、時間、日付/時間、タイムゾーン、時刻(instants)、プロシージャ(during)、クロック(clock)の操作が含まれています.
8.1ローカライズ日時API
LocalDate/LOcalTimeクラスとLocalDateTimeクラスは、処理時に必要でない場合に使用できます.
8.2タイムゾーンの使用日時API
九、Java 8 Base 64
Java 8ではBase 64符号化がJavaクラスライブラリの標準となっている.
JAva 8にはBase 64符号化エンコーダとデコーダが内蔵されています
Base 64ツールクラスは、以下の3つのBase 64コーデックを取得するための静的方法を提供する.基本:出力は1組の文字A-Za-z 0-9+/にマッピングされ、符号化は航路標識を追加せず、出力の復号はA-Za-z 0-9+/のみをサポートする. URL:出力は1組の文字A-Za-z 0-9+_にマッピングされ、出力はURLとファイルである. MIME:出力はMIMEフレンドリーフォーマットにマッピングされます.出力は行ごとに76文字を超えず、‘r’を使用して’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
シーケンス番号
メソッド名&説明
1
static Base 64.Decoder getDecoder()は、ベースベースベースベースbase 64符号化スキームを使用して復号化されるBase 64.Decoder()を返します.
2
static Base 64.Encoder getEncoder()は、ベースベースベースベースbase 64符号化スキームを使用して符号化されるBase 64.Encoder()を返します.
3
static Base 64.Decoder getMimeDecoder()は、MIME型base 64符号化スキームを用いて復号化されたBase 64.Decoderを返す.
4
static Base 64.Encoder getMimeEncoder()は、MIME型base 64符号化スキームを用いて符号化されたBase 64.Encoderを返す.
5
static Base 64.Encoder getMimeEncoder(int lineLength,byte[]lineSeparator)は、MIME型base 64符号化スキームを使用して、各行の長さおよび行の区切り記号をパラメータで指定できるBase 64.Encoderを返します.
6
static Base 64.Decoder getUrlDecoder()は、URLおよびファイル名セキュリティを使用したbase 64符号化スキームを復号するBase 64.Decoderを返します.
7
static Base 64.Encoder getUrlEncoder()は、URLおよびファイル名セキュリティを使用したbase 64符号化スキームを符号化するBase 64.Encoderを返します.
**注意:**Base 64クラスの多くのメソッドはjava.lang.Objectクラスから継承されます.
変換元:https://blog.csdn.net/yitian_66/article/details/81010434
JAva 8は、新しいDate-time API(jsr 310)を公開することによって、日付と時間の処理をさらに強化する
旧バージョンのjavaでは、日付時間APIには多くの問題があります.その中には、次のものがあります.
JAva 8はjava.timeパッケージの下に多くの新しいAPIを提供しています.以下に、2つの重要なAPIを示します.
新しいjava.timeには、すべての処理日、時間、日付/時間、タイムゾーン、時刻(instants)、プロシージャ(during)、クロック(clock)の操作が含まれています.
8.1ローカライズ日時API
LocalDate/LOcalTimeクラスとLocalDateTimeクラスは、処理時に必要でない場合に使用できます.
public class Java8Time {
public static void main(String[] args) {
Java8Time java8Time = new Java8Time();
java8Time.testLocalDateTime();
}
public void testLocalDateTime() {
//
LocalDateTime currentTime = LocalDateTime.now();
System.out.println(" :" + currentTime);
//
LocalDate date1 = currentTime.toLocalDate();
System.out.println("date1:" + date1);
// / /
Month month = currentTime.getMonth();
int day = currentTime.getDayOfMonth();
int seconds = currentTime.getSecond();
System.out.println(" :" + month + ", :" + day + ", :" + seconds);
//
LocalDateTime date2 = currentTime.withDayOfMonth(20).withYear(2012);
System.out.println("date2 == " + date2);
//
LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
System.out.println("date3 == "+date3);
//
LocalTime date4 = LocalTime.of(22, 10);
System.out.println("date4 == "+date4);
//
LocalTime date5 = LocalTime.parse("20:15:30");
System.out.println("date5 == " + date5);
}
}
8.2タイムゾーンの使用日時API
public class Java8Time1 {
public static void main(String[] args){
Java8Time1 java8Time1 = new Java8Time1();
java8Time1.testZoneDateTime();
}
public void testZoneDateTime(){
//
ZonedDateTime date1 = ZonedDateTime.now();
System.out.println("date1 == "+date1);
//
ZoneId zone = date1.getZone();
System.out.println("zone == " + zone);
//
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(" : " + zoneId);
}
}
九、Java 8 Base 64
Java 8ではBase 64符号化がJavaクラスライブラリの標準となっている.
JAva 8にはBase 64符号化エンコーダとデコーダが内蔵されています
Base 64ツールクラスは、以下の3つのBase 64コーデックを取得するための静的方法を提供する.
シーケンス番号
メソッド名&説明
1
static Base 64.Decoder getDecoder()は、ベースベースベースベースbase 64符号化スキームを使用して復号化されるBase 64.Decoder()を返します.
2
static Base 64.Encoder getEncoder()は、ベースベースベースベースbase 64符号化スキームを使用して符号化されるBase 64.Encoder()を返します.
3
static Base 64.Decoder getMimeDecoder()は、MIME型base 64符号化スキームを用いて復号化されたBase 64.Decoderを返す.
4
static Base 64.Encoder getMimeEncoder()は、MIME型base 64符号化スキームを用いて符号化されたBase 64.Encoderを返す.
5
static Base 64.Encoder getMimeEncoder(int lineLength,byte[]lineSeparator)は、MIME型base 64符号化スキームを使用して、各行の長さおよび行の区切り記号をパラメータで指定できるBase 64.Encoderを返します.
6
static Base 64.Decoder getUrlDecoder()は、URLおよびファイル名セキュリティを使用したbase 64符号化スキームを復号するBase 64.Decoderを返します.
7
static Base 64.Encoder getUrlEncoder()は、URLおよびファイル名セキュリティを使用したbase 64符号化スキームを符号化するBase 64.Encoderを返します.
**注意:**Base 64クラスの多くのメソッドはjava.lang.Objectクラスから継承されます.
public class Java8Tester {
public static void main(String args[]) {
try {
//
String base64encodedString = Base64.getEncoder().encodeToString("runoob?java8".getBytes("utf-8"));
System.out.println("Base64 ( ) :" + base64encodedString);
//
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
System.out.println(" : " + new String(base64decodedBytes, "utf-8"));
base64encodedString = Base64.getUrlEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8"));
System.out.println("Base64 (URL) :" + base64encodedString);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 10; ++i) {
stringBuilder.append(UUID.randomUUID().toString());
}
byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
System.out.println("Base64 (MIME) :" + mimeEncodedString);
} catch (UnsupportedEncodingException e) {
System.out.println("Error :" + e.getMessage());
}
}
}
変換元:https://blog.csdn.net/yitian_66/article/details/81010434