第15章
コード15-01
Main.java
public class Main {
public static void main(String[] args) {
String s1 = "スッキリJava";
String s2 = "Java";
String s3 = "java";
if (s2.equals(s3)) {
System.out.println("s2とs3は等しい");
}
if (s2.equalsIgnoreCase(s3)) {
System.out.println("s2とs3はケースを区別しなければ等しい");
}
System.out.println("s1の長さは" + s1.length() + "です");
if (s1.isEmpty()) {
System.out.println("s1は空文字です");
}
}
}
コード15-02
Main.java
public class Main {
public static void main(String[] args) {
String s1 = "Java and JavaScript";
if (s1.contains("Java")) {
System.out.println("文字列s1は、Javaを含んでいます");
}
if (s1.endsWith("Java")) {
System.out.println("文字列s1は、Javaが末尾にあります");
}
System.out.println("文字列s1で最初にJavaが登場する位置は" + s1.indexOf("Java"));
System.out.println("文字列s1で最後にJavaが登場する位置は" + s1.lastIndexOf("Java"));
}
}
コード15-03
Main.java
public class Main {
public static void main(String[] args) {
String s1 = "Java programing";
System.out.println("文字列s1の4文字目以降は" + s1.substring(3)); // ⇒ a programing
System.out.println("文字列s1の4~8文字目以降は" + s1.substring(3, 8)); // ⇒ a pro
}
}
コード15-04
Main.java
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append("Java");
}
String s = sb.toString();
}
}
コード15-05
Main.java
public class Main {
public static void main(String[] args) {
}
public boolean isValidPlayerName(String name) {
if (name.length() != 8) {
return false;
}
char first = name.charAt(0);
if (!(first >= 'A' && first <= 'Z')) {
return false;
}
for (int i = 1; i < 8; i++) {
char c = name.charAt(i);
if (!((c >= 'A' && c <= 'Z') || (c >= '0' && first <= '9'))) {
return false;
}
}
return true;
}
}
コード15-06
Main.java
public class Main {
public static void main(String[] args) {
}
public boolean isValidPlayerName(String name) {
return name.matches("[A-Z][A-Z0-9]{7}");
}
}
コード15-07
Main.java
public class Main {
public static void main(String[] args) {
String s = "abc,def:ghi";
String[] words = s.split("[,:]");
for (String w : words) {
System.out.print(w + "->");
}
}
}
コード15-08
Main.java
public class Main {
public static void main(String[] args) {
String s = "abc,def:ghi";
String w = s.replaceAll("[beh]", "X");
System.out.println(w); // aXc,dXf:gXi
}
}
コード15-09
Hero.java
public class Hero {
String name;
String job;
int gold;
public String getName() {
return this.name;
}
public String getJob() {
return this.job;
}
public int getGold() {
return this.gold;
}
}
Main.java
public class Main {
public static void main(String[] args) {
Hero hero = new Hero();
hero.name = "minato";
hero.job = "hero";
hero.gold = 280;
final String FORMAT = "%-9s %-13s 所持金%,6d";
String s = String.format(FORMAT, hero.getName(), hero.getJob(), hero.getGold());
System.out.println(s);
}
}
コード15-10
Main.java
public class Main {
public static void main(String[] args) {
long start = System.currentTimeMillis();
// ここでなんらかの時間がかかる処理
long end = System.currentTimeMillis();
System.out.println("処理にかかった時間は..." + (end-start) + "ミリ秒でした");
}
}
コード15-11
Main.java
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date now = new Date();
System.out.println(now);
System.out.println(now.getTime());
Date past = new Date(1600705425827L);
System.out.println(past);
}
}
コード15-12
Main.java
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
// 6つのint値からDateインスタンスを生成
c.set(2019,8,22,1,23,45);
c.set(Calendar.MONTH, 9); /* 月を9(10月)に変更 */
Date d = c.getTime();
System.out.println(d);
// Dateインスタンスからint値を生成
Date now = new Date();
c.setTime(now);
int y = c.get(Calendar.YEAR); /* 年を取り出す */
System.out.println("今年は" + y + "年です");
}
}
コード15-13
Main.java
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) throws Exception {
SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 文字列からDateインスタンスを生成
Date d = f.parse("2020/09/22 01:23:45");
System.out.println(d);
// Dateインスタンスから文字列を生成
Date now = new Date();
String s = f.format(now);
System.out.println("現在は" + s + "です");
}
}
コード15-14
Main.java
import java.time.*;
public class Main {
public static void main(String[] args) {
// Instantの生成
Instant i1 = Instant.now();
// Instantとlong値との相互変換
Instant i2 = Instant.ofEpochMilli(1600705425827L);
long l = i2.toEpochMilli();
// ZonedDateTimeの生成方法
ZonedDateTime z1 = ZonedDateTime.now();
ZonedDateTime z2 = ZonedDateTime.of(2020, 1, 2, 3, 4, 5, 6, ZoneId.of("Asia/Tokyo"));
// InstantとZoneDateTimeの相互変換
Instant i3 = z2.toInstant();
ZonedDateTime z3 = i3.atZone(ZoneId.of("Europe/London"));
// ZonedDateTimeの利用方法
System.out.println("東京:" + z2.getYear() + z2.getMonth() + z2.getDayOfMonth());
System.out.println("ロンドン:" + z3.getYear() + z3.getMonth() + z3.getDayOfMonth());
if(z2.isEqual(z3)) {
System.out.println("これらは同じ瞬間を指しています");
}
}
}
コード15-15
Main.java
import java.time.*;
public class Main {
public static void main(String[] args) {
// LocalDateTimeの生成方法
LocalDateTime l1 = LocalDateTime.now();
LocalDateTime l2 = LocalDateTime.of(2020, 1, 1, 9, 5, 0, 0);
// LocalDateTimeとZoneDateTimeの相互変換
ZonedDateTime z1 = l2.atZone(ZoneId.of("Europe/London"));
LocalDateTime l3 = z1.toLocalDateTime();
}
}
コード15-16
Main.java
import java.time.*;
import java.time.format.*;
public class Main {
public static void main(String[] args) {
// 文字列からLocalDateを生成
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate ldate = LocalDate.parse("2020/09/22", fmt);
// 1000日後を計算する
LocalDate ldatep = ldate.plusDays(1000);
String str = ldatep.format(fmt);
System.out.println("1000日後は" + str);
// 現在日付との比較
LocalDate now = LocalDate.now();
if(now.isAfter(ldatep)){
System.out.println("1000日後は過去日付です");
}
}
}
コード15-17
Main.java
import java.time.*;
public class Main {
public static void main(String[] args) {
LocalDate d1 = LocalDate.of(2020,1,1);
LocalDate d2 = LocalDate.of(2020,1,4);
// 3日間を表すPeriodを2通りの方法で生成
Period p1 = Period.ofDays(3);
Period p2 = Period.between(d1, d2);
// d2のさらに3日後を計算する
LocalDate d3 = d2.plus(p2);
}
}