コンテンツにスキップ

第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);
  }
}