2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

現場で覚えたJava文法知識【備忘録】①

Last updated at Posted at 2022-09-04

初めに

現場で初めて本格的にJavaを扱うことがあり、C#をやっていた時と比較して、結構違う内容があったので、覚えた内容を残していきます。
一部認識齟齬などがあればすみません。

「java.util.Objects」を使用した比較

Objects.isNull(Obj)

オブジェクトがNULLであることをメインでチェックする場合
→ オブジェクトがNULLの場合は、true
→ オブジェクトがNULLでない場合は、false

InputPractice1.java
    // Objectの宣言
    Object obj = null;
    
    // NULLチェック
    if (Objects.isNull(strFruit)) {
        System.out.println("NULL"); // 通る
    } else {
        System.out.println("NULLでない");
    }

Objects.nonNull(Obj)

オブジェクトがNULLでないことをメインでチェックする場合
→ オブジェクトがNULLでない場合は、true
→ オブジェクトがNULLの場合は、false

InputPractice1.java
    // Objectの宣言
    Object obj = null;
    
    // NULLでないチェック
    if (Objects.nonNull(obj)) {
        System.out.println("NULLでない");
    } else {
        System.out.println("NULL"); // 通る
    }

Objects.equals(Obj1, Obj2)

2つのオブジェクトが等価であることをチェックする場合
→ 等価である場合は、true
→ 等価でない場合は、false

InputPractice1.java
    // Objectの宣言
    Object obj1 = 'a';
    Object obj2 = 'a';
    
    // 等価チェック
    if (Objects.equals(obj1, obj2)) {
        System.out.println("等価"); // 通る
    } else {
        System.out.println("等価でない");
    }

BigDecimal系の比較や計算

・Integer型の通常の計算と違って、扱いづらいBigDecimal型(小数点を使用するfloat型に近いイメージ)

BigDecimal同士の比較は「compareTo」を使用する

 → int 比較結果 = 比較元BigDecimal.compareTo(比較先BigDecimal);

    「-1」: 比較元BigDecimalが比較先BigDecimalより小さい、
    「0」: 比較元BigDecimalが比較先BigDecimalが等しい
    「1」: 比較元BigDecimalが比較先Bigecimalより大きい

InputPractice1.java
    // -------------BigDecimal計算--------------
    BigDecimal val1 = new BigDecimal("1.1");
    BigDecimal val2 = new BigDecimal("2.2");
    BigDecimal val3 = 	new BigDecimal("2");
    
    // 「-1」チェック
    if(val1.compareTo(val2) == -1) {
        System.out.println("val1がval2より小さいです。"); // 通る
        System.out.println("val1:" + val1 + " val2:" + val2); // val1:1.1 val2:2.2
    }

    // 「0」チェック
    val1 = new BigDecimal("1.1"); //val1 = 1.1
    val1 = val2.subtract(val1.multiply(val3)); // val1 = 2.2 - (1.1 * 2)

    if(val1.compareTo(BigDecimal.ZERO) == 0) {
        System.out.println("val1は0です。"); // 通る
    }

    // 「1」チェック
    val1 = new BigDecimal("1.1");
    if(val1.compareTo(BigDecimal.ZERO) == 1) {
        System.out.println("val1が0より大きいです。"); // 通る
        System.out.println("val1:" + val1);  // val1:1.1
    }

BigDecimal同士での加算、減算、乗算、除算を使用する場合

    加算: BigDecimal.add
    減算: BigDecimal.subtract
    乗算: BigDecimal.multiply
    除算: BigDecimal.divide

InputPractice1.java
    val1 = new BigDecimal("1.1");
    val2 = new BigDecimal("3.3");
    
    BigDecimal valAdd = val1.add(val2);
    System.out.println("加算結果:" + valAdd); // 加算結果:4.4
    
    BigDecimal valSubstarct = val2.subtract(val1);
    System.out.println("減算結果:" + valSubstarct); // 減算結果:2.2
    
    BigDecimal valMultiply = val1.multiply(val2);
    System.out.println("乗算結果:" + valMultiply); // 乗算結果:3.63
    
    BigDecimal valDivide = val2.divide(val1);
    System.out.println("除算結果:" + valDivide); // 除算結果:3

「CollectionUtils」を使用した比較

CollectionUtils.isEmpty(Collection)

コレクションがNULであることをメインでチェックする場合
→ コレクション内がNULLまたは空の場合は、true
→ コレクション内がNULLまたは空でない場合は、false

InputPractice1.java
    List<String> list = new ArrayList<String>(3);
    list.add("あいうえお");
    list.add("かきくけこ");
    list.add("さしすせそ");

    List<String> branklist = new ArrayList<>();
    
    if(CollectionUtils.isEmpty(list)) {
        System.out.println("リストの内容は未設定①");
    }
    if(CollectionUtils.isEmpty(branklist)) {
        System.out.println("リストの内容は未設定②");  // 通る
    }
    
    // 否定チェック
    if(!CollectionUtils.isEmpty(list)) {
        System.out.println("リストの内容は設定済み①");  // 通る
    }
    // 否定チェック
    if(!CollectionUtils.isEmpty(branklist)) {
        System.out.println("リストの内容は設定済み②");
    }

コレクション内の内容に対して、一致・不一致チェック

allMatch

→ コレクション内の全ての内容と判定が全て一致する場合はtrue
→ コレクション内の全ての内容と判定が全て一致しない場合はfalse

anyMatch

→ コレクション内の内容と判定が一部一致する場合はtrue
→ コレクション内の内容と判定が一部一致しない場合はfalse

noneMatch

→ コレクション内の全ての内容と判定が全て一致しない場合はtrue
→ コレクション内の内容と一部一致する場合はfalse

InputPractice1.java
    // -------------allMatch()、anyMatch()、noneMatch()--------------
    ArrayList<Person> personList = new ArrayList<>();
    personList.add(new Person(165.1));
    personList.add(new Person(166.2));
    
    boolean flg = false;

    // -------------allMatch()---------
    flg = personList.stream().allMatch(person
            -> person.getHeight() > 165.0);
    
    if (flg) {
        System.out.println("①全て165.0より大きい"); // 通る
    }
    
    flg = personList.stream().allMatch(person
            -> person.getHeight() > 165.2);
    
    if (flg) {
        System.out.println("②全て165.2より大きい");
    }
    
    // -------------anyMatch()---------
    flg = personList.stream().anyMatch(person
            -> person.getHeight() > 165.2);
    
    if (flg) {
        System.out.println("③一部が165.2より大きい");// 通る
    }
    
    // -------------noneMatch()---------
    flg = personList.stream().noneMatch(person
            -> person.getHeight() > 169.2);
    
    if (flg) {
        System.out.println("④全て169.2より小さい");// 通る
    }

【Personクラス】

InputPractice1.java
package com.example.demo;

public class Person {
    private double height;

    public Person(double height) {
        this.height = height;
    }

    public double getHeight() {
        return height;
    }
}

JapaneseDateを用いた日付変換

クラスJapaneseDateを用いた変換

InputPractice1.java
    // -------------JapaneseDate-------------
    // Format設定
    final ZoneId tokyo = ZoneId.of("Asia/Tokyo");

    final DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendText(ChronoField.ERA)
            .appendText(ChronoField.YEAR_OF_ERA)
            .appendLiteral("年")
            .appendText(ChronoField.MONTH_OF_YEAR)
            .appendText(ChronoField.DAY_OF_MONTH)
            .appendLiteral("日")
            .toFormatter(Locale.JAPAN);

    final DateTimeFormatter iso = DateTimeFormatter.ISO_DATE;
    
    // 月の先頭に0なし
    try {
          final JapaneseDate meiji = JapaneseDate.of(2021, 4, 30);
          System.out.println(meiji.format(formatter));
          System.out.println("2021/4/30は存在する日付です"); // 通る
        } catch (Exception e) {
          System.out.println(e.getClass().getCanonicalName());
          System.out.println(e.getMessage());
          System.out.println("2021/4/30は存在しない日付です");
        }
    
    // 月の先頭に0あり
    try {
        final JapaneseDate meiji = JapaneseDate.of(2021, 04, 30);
          System.out.println(meiji.format(formatter));
          System.out.println("2021/04/30は存在する日付です"); // 通る
        } catch (Exception e) {
          System.out.println(e.getClass().getCanonicalName());
          System.out.println(e.getMessage());
          System.out.println("2021/04/30は存在しない日付です");
        }

    // 存在しない日付
    try {
          final JapaneseDate meiji = JapaneseDate.of(2021, 06, 31);
          System.out.println(meiji.format(formatter));
          System.out.println("2021/6/31は存在する日付です");
        } catch (Exception e) {
          System.out.println(e.getClass().getCanonicalName());
          System.out.println(e.getMessage());
          System.out.println("2021/6/31は存在しない日付です"); // 通る
        }

終わりに

本当にJava始めたばかりなので、あっさりした書き方になりましたが、また今後も覚えたものは
コードで書いていき、定期的に備忘録として、キャッチアップしていきます。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?