[Java] Résumé des opérateurs (opérateur)

Type d'opérateur

Opérateur arithmétique

+ Opérateur

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) throws Exception {
    System.out.println("a"+LocalDateTime.now()); //a2020-10-29T…
    }
}
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        var builder = new StringBuilder();
        for (var i=0;  i<100000; i++){
        	builder.append("mohu");
            //result += "mohu" ; 
        	}
        var result = builder.toString();
        System.out.println(result);
    }
}

Opérateur d'incrément

Faites attention au type lors de la division

//NG **Puisqu'il s'agit d'un calcul entre des entiers, le résultat est également un entier**
System.out.println( 3 / 4 ); //0

//NG **C'est le timing du calcul qui est converti en entier!**
double result = 3 / 4 ;
System.out.println(result); //0.0

//OK **Explicitement doubler l'un des opérants
System.out.println( 3d / 4 ); //0.75

Traitement de zéro

//NG **L'accélération de la constante 0 est une erreur**
System.out.println( 5 / 0 ); //0

//OK **L'opérant est à virgule flottante**
System.out.println( 5d / 0 ); //Infinity(Infini)

//OK 
System.out.println( 5d % 0 ); //NaN (Not a number:Non numérique)

Attention en arithmétique flottante

System.out.println(Math.floor(( 0.7 + 0.1 )*10 )); //7.0
import java.util.*;
import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) throws Exception {
    var bd1 = new BigDecimal("0.7");
    var bd2 = new BigDecimal("0.1");
    var bd3 = new BigDecimal("10");
    System.out.println(bd1.add(bd2).multiply(bd3)); //8.0
    }
}

Opérateur d'assignation

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
    var x = 1;
    var y = x;
    x += 10;
    System.out.println(x); //11
    System.out.println(y); //1

    var builder1 = new StringBuilder("abc");
    var builder2 = builder1; //Copier l'adresse
    builder1.append("de");
    System.out.println(builder1.toString()); //abcde
    System.out.println(builder2.toString()); //abcde
    }
}

Substitution à constante

//Exemple NG
final int VALUE = 10;
VALUE = 15; 
final int[] VALUES = { 10, 20, 30 } ;
//NG **La constante elle-même ne peut pas être réaffectée
VALUES = new int[] { 10, 20, 30 } ; 

//OK
VALUES[0] = 100;
System.out.println(Arrays.toString(VALUES));  //[100, 20, 30]

Opérateur de relation (opérateur de comparaison)

Différence entre == et égal

var builder1 = new StringBuilder("neko");
var builder2 = new StringBuilder("neko");
System.out.println(builder1 == builder2); //false
var str1 = "neko";
var str2 = "neko";
System.out.println(str1 == str2); //true
System.out.println(str1 == "ne" + "ko"); //vraie chaîne(Objet String)Dans le cas de, il est considéré comme identique à la même valeur

Comparaison des fractions flottantes

System.out.println( 0.2*3 == 0.6 ); //false
//BigDecimal
import java.util.*;
import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) throws Exception {
    var bd1 = new BigDecimal("0.2");
    var bd2 = new BigDecimal("4");
    var bd3 = new BigDecimal("0.8");
    System.out.println(bd1.multiply(bd2).compareTo(bd3)); //0
    }
}
//Utiliser l'unité d'arrondi
public class Main {
    public static void main(String[] args) throws Exception {
    final double EPSILON = 0.00001;  //Garanti jusqu'à la 5e place
    var x = 0.2 * 4;
    var y = 0.8;
    System.out.println(Math.abs(x - y) < EPSILON); //true
    }
}

Comparaison de séquence

public class Main {
    public static void main(String[] args) throws Exception {
    var data1 = new String[] { "a", "b", "c" };
    var data2 = new String[] { "a", "b", "c" };
    
    var data3 = new int[][] {
      { 1, 2, 3 },
      { 4, 5, 6 },
      { 7, 8, 9 },
    };
    var data4 = new int[][] {
      { 1, 2, 3 },
      { 4, 5, 6 },
      { 7, 8, 9 },
    };
    
    System.out.println(Arrays.equals(data1, data2)); //true
    System.out.println(Arrays.deepEquals(data3, data4)); //true
    
    }
}
//Comparer la méthode
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
    var data1 = new int[] {1, 3};
    var data2 = new int[] {1, 2, 3};
    var data3 = new int[] {1, 2, 3};
    var data4 = new int[] {1, 3, 1};
    var data5 = new int[] {0, 0, 6};
    var data6 = new int[] {6, 0, 0};
    System.out.println(Arrays.compare(data1, data2)); //1
    System.out.println(Arrays.compare(data3, data4)); //-1
    System.out.println(Arrays.compare(data2, data3)); //0
    System.out.println(Arrays.compare(data3, data5)); //1
    System.out.println(Arrays.compare(data3, data6)); //-1
    }
}

Opérateur conditionnel (opérateur ternaire)

public class Main {
    public static void main(String[] args) throws Exception {

    var age = 20;
    System.out.println(age >= 20 ? "adulte" : "les enfants"); //adulte

    }
}

Opérateur logique

Opération de raccourci (opération de court-circuit)

//chèque nul
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

    String str = "http://hoge";
    if (str != null && str.startsWith("http://")) {
    // if(str.startsWith("http://")) {
      System.out.println("「http://Cela commence par "...".");  //「http://Cela commence par "...". 
    }
  }
}
//Le contrôle nul est également possible avec la méthode suivante
 if(!Objects.isNull(str)&&str.startsWith("http://"))
        {...}
 if(Objects.nonNull(str)&&str.startsWith("http://"))
        {...}

Opérateur de bits

Opérateur logique de bits

Opérateur de décalage de bits

Priorité de l'opérateur

[Priorité la plus élevée]
argument, [] , .
++(Postscript), --(Postscript)
++(Préfixe), +(unaire), ! , ~
* , / , %
+ , -
> , >=
== , !=
&
^
&&
?:
= , += , &=

Loi de connexion

Recommended Posts

[Java] Résumé des opérateurs (opérateur)
Résumé du support Java 2018
[Java11] Résumé du flux -Avantages du flux-
[Java] Résumé des expressions régulières
Résumé des bases du langage Java
Résumé de la classe Java Math
[Java] Résumé de la syntaxe de contrôle
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
Résumé du package [Java Silver Study]
Résumé de la programmation orientée objet utilisant Java
[Java Silver] Résumé des points de modification d'accès
Résumé de la session d’étude interne des recrues [Java]
Résumé des connaissances Java
Résumé relatif à Java
Récapitulatif des modifications autres que JEP de Java10
Résumé du document Java 8
[Java] [Maven3] Résumé de l'utilisation de Maven3
Résumé Java des conversions de types fréquemment recherchées
Résumé du document Java 11
[Java] Présentation de Java
Résumé de Java Math.random et import (calendrier)
[java] Résumé de la gestion des chaînes de caractères
Récapitulatif des paramètres de l'environnement Java pour moi-même [mac]
[Java] Résumé personnel des classes et méthodes (basique)
[Java] Résumé de la façon d'omettre les expressions lambda
Collection expirée de java
Caractéristiques prévues de Java
Résumé des nouvelles fonctionnalités de Java 12
[Java] Importance de serialVersionUID
[Résumé] Par exemple, préparation de l'environnement Java
NIO.2 examen de Java
Avis sur Java Shilber
Résumé des nouvelles fonctionnalités de Java 13
Résumé des sources OpenJDK
java --Unification des commentaires
vue d'ensemble du fichier jar
Opérateur de fusion nul Java
À propos de l'évaluation des opérateurs logiques
Java statique [Résumé personnel]
Histoire des annotations Java
Résumé sur la sécurité de l'information
Résumé de l'utilisation de FragmentArgs
java (mérites du polymorphisme)
Résumé des threads sûrs ~ Java ~
Résumé de la spécialisation des primitives Java
Résumé du lien de développement Java
Résumé personnel sur Java
Examen NIO de Java
Résumé des nouvelles fonctionnalités de Java 10
résumé des expressions régulières java
[Java] Trois fonctionnalités de Java
Résumé de l'utilisation de DBFlow
Résumé des nouvelles fonctionnalités de Java 14
Résumé du modèle de conception Java
Résumé du mot réservé Java
Résumé approximatif du flux Java8
[Java] Résumé de base de Java non couvert par Progate ~ Partie 1 ~