graph LR
byte-->short
short-->int
char-->int
int-->long
long-->float
float-->double
/*Déclaration de variable*/
boolean varA; //Déclaration uniquement
varA = true; //Substitution uniquement
Class varI //Déclaration uniquement(Type de référence)
varI = new Class() //Substitution uniquement(Type de référence)
/*Déclaration constante*/
static final data_type varJ = valA; // (static + )modificateur final
/*Déclaration*/
data_typeA[] arrayA = new data_typeA[index_max_value];
data_typeB[] arrayB = {valA, valB, valC, valD, valE};
data_typeC[] arrayC = new data_typeC[] {valF, valG, valH};
data_typeD arrayD[]; //Dans le nom de la variable[]Peut être attaché
// X arrayD = {valI, valJ, varl}
arrayD = new data_typeD[]{valI, valJ, varl}
data_type[][] arrayE; //Tableau 2D → date_type[] arrayE[]C'est possible.
arrayE = new date_typeE[i][]; //Le deuxième indice peut être omis. Le premier n'est pas possible.
/*classe de tableaux*/
Arrays.toString(arrayD); // "[valI, valJ, vall]"
Arrays.sort(arrayD); // {vall, valJ, valI}
/* List(interface) */
// X List<data_typeA> listA = new List<>();
List<data_typeA> listA = new ArrayList<>();
List<data_typeB> listB = new LinkedList<>();
List<data_typeC> listC = new CopyOnWriteArrayList<>();
List<data_typeD> listD = Arrays.asList(valA, valB); //Lecture seule
listD.add(valD); //Ajouter à la fin
listD.add(indexA, valE); //Insérer au milieu
listD.set(indexA, valF); //Remplacement
listD.get(indexA); //Obtenez de la valeur
listD.indexOf(valF); //Obtenir la position
listD.size(); //Obtenez le nombre d'éléments
listD.contains(valF); //Confirmation d'existence
listD.remove(valF); //Effacer
/* ---Voici la classe d'implémentation de List------------------------------- */
/* ArrayList ..Fort en recherche*/
//Si vous souhaitez utiliser une méthode qui n'existe que dans ArrayList, déclarez-la ci-dessous.(La même chose s'applique ci-dessous)
ArrayList<data_typeE> listE = new ArrayList<>();
ArrayList listF = (ArrayList<data_typeE>)listE.clone(); //copie
/* LinkedList ..ajouter à/Fort contre la suppression*/
LinkedList<data_typeG> listG = new LinkedList<>();
listG.push(); //Ajouter au début
listG.pop(); //Supprimer depuis le début
/* CopyOnWriteArrayList ..Aucune synchronisation requise/Fort contre le multithreading*/
CopyOnWriteArrayList<data_typeH> listH = new CopyOnWriteArrayList<>();
/* Map(interface) */
// X Map<Integer, data_typeA> mapA = new Map<>();
Map<Integer, data_typeA> mapA = new HashMap<>();
Map<Integer, data_typeB> mapB = new LinkedHashMap<>();
Map<Integer, data_typeC> mapC = new ConcurrentHashMap<>();
Map<Integer, data_typeD> mapD = new TreeMap<>();
mapA.put(keyA, valA); //Ajouter à la fin
mapA.put(keyA, valB); //Remplacement
mapA.get(keyA); //Obtenez de la valeur
mapA.size(); //Obtenez le nombre d'éléments
mapA.containsKey(keyA); //Recherche clé
mapA.containsValue(valB); //Recherche de valeur
mapA.remove(keyA); //Effacer
/* ---Mappez la classe d'implémentation ci-dessous------------------------------- */
/* HashMap ...Fort en recherche*/
HashMap<Integer, data_typeE> mapE = new HashMap<>();
/* LinkedHashMap ..Gardez l'ordre d'insertion*/
LinkedHashMap<Integer, data_typeF> mapF = new LinkedHashMap<>();
/* ConcurrentHashMap ..Aucune synchronisation requise/Fort contre le multithreading*/
ConcurrentHashMap<Integer, data_typeG> mapG = new ConcurrentHashMap<>();
/* TreeMap ..Sous-ensemble conscient de la taille de la clé*/
TreeMap<Integer, data_typeH> mapH = new TreeMap<>();
// X Set<data_typeA> setA = new Set<>();
Set<data_typeA> setA = new HashSet<>();
Set<data_typeB> setB = new LinkedHashSet<>();
Set<data_typeC> setC = new TreeSet<>();
Set<data_typeD> setD = new HashSet<>(ListA); // List->Set
setD.add(valA); //Ajouter de la valeur/Écraser
setD.remove(valB); //Supprimer la valeur
setD.size(); //Obtenez le nombre d'éléments
setD.contains(valC); //Recherche de valeur
/* ---La classe d'implémentation Set suivante------------------------------- */
/* HashSet ..Fort en recherche*/
HashSet<data_typeA> setA = new HashSet<>();
/* LinkedHashSet ..ajouter à/Fort contre la suppression*/
LinkedHashSet<data_typeB> setB = new LinkedHashSet<>();
/* TreeSet ..Sous-ensemble conscient de la taille de la clé*/
TreeSet<data_typeC> setC = new TreeSet<>();
Queue<data_typeA> queueA = new ArrayBlockingQueue<>(intA);
queueA.offer(valA); //ajouter à
queueA.peek(); //production
queueA.poll(); //production/Effacer
//LinkedList est une implémentation de List et Deque
Deque<data_typeA> dequeA = new LinkedList<>();
dequeA.offerFirst(valA); //Ajouter de la valeur au début
dequeA.offerLast(valB); //Ajouter de la valeur à la fin
dequeA.peekFirst(valC); //Sortie de la première valeur
dequeA.peekLast(valD); //Sortie de la valeur de fin
dequeA.pollFirst(valE); //Sortie de la première valeur/Effacer
dequeA.pollLast(valF); //Sortie de la valeur de fin/Effacer
Référence: [Java] Mémo de la file d'attente de la pile
if (conditionA){
statementA //Relevé, traitement
} else if (conditionB) {
statementB //Relevé, traitement
} else if (!conditionC) {
statementC //Relevé, traitement
} else {
statementD //Relevé, traitement
}
/* {}réduction...Une seule ligne peut être écrite dans le nid*/
if (conditionA)
statementA //Relevé, traitement
else
statementB //Relevé, traitement
switch (varA) {
case valA: // varA =Pour valA
statementA //Relevé, traitement
//déclaration break...Fin de l'exécution du bloc de code
break;
case valB:
case valC: // varA = valB,Pour valC
statementB //Relevé, traitement
break;
case default // varA = valA,valB,Autre que valC
statementC //Relevé, traitement
break;
/*Il n'y a pas de limite à l'ordre des affaires. la valeur par défaut peut être au début(non recommandé) */
}
/*Répétez la phrase un certain nombre de fois*/
for (data_type varA = valA; varA <= valB; valC++) {
statementA //Relevé, traitement
}
/* for(int a, int b, a < 3, a++, method()){comme
Plusieurs valeurs initiales et valeurs de mise à jour peuvent être définies. La valeur mise à jour peut également être appelée une méthode) */
/*Répéter à partir de la collection de tableaux*/
for (data_type varB : collectionA) {
statementB //Relevé, traitement
}
/*Combinaison de for Each et expression lambda(Sortir les éléments de collectionB) */
collectionB.forEach(varC -> System.out.println(varC));
/*Répéter tant que l'expression conditionnelle est vraie*/
while (conditionA) {
statementA //Relevé, traitement
}
do {
statementB //Relevé, traitement
} while (conditionB);
/*Lors de la répétition jusqu'à ce que l'expression conditionnelle devienne True*/
while (!conditionC){
statementC //Relevé, traitement
}
do {
statementD //Relevé, traitement
} while (conditionD);
X: //étiquette
while (conditionA) {
switch(varA){
case valA: // statementA,Passer par B
statementA //Relevé, traitement
case valB: //Seule l'instruction B réussit
statementB //Relevé, traitement
/*déclaration break...Fin de l'exécution du bloc de code*/
break;
case valC:
break X; //1ère ligne "X:Sauter à(Quitter pendant)
default:
statementC //Relevé, traitement
/*continue déclaration...Déplacer le contrôle d'exécution vers l'itération suivante*/
continue;
}
}
/* try ...Traitement cible*/
try{
statementA
/* catch ...Gestion des exceptions*/
} catch (xxxException e){
e.printStackTrace(); //Message d'exception(Basique ceci)
e.getClass().getName(); //Nom de classe d'exception uniquement
e.getMessage(); //Message de détail d'exception uniquement
StackTraceElement[] ste = e.getStackTrace(); //Liste des exceptions
/* finally ... try/Après la capture(try/Même s'il y a un retour dans la capture)Un processus qui doit être exécuté.*/
} finally{
statementB //Relevé, traitement
}
// try-catch-L'ordre de finalement ne peut pas être modifié. essayer-catch, try-Facultatif comme enfin.
/*clause throw...Génération forcée d'exceptions*/
throw new ExceptionClassA();
/*clause throws...Transmettre l'erreur à l'appelant*/
public class Main throws Exception { //Si vous l'attachez à main, il y aura quelques exceptions
classe | Aperçu | Moment de l'événement |
---|---|---|
Error | Erreurs qui ne peuvent pas être traitées par le programme, telles que des problèmes dans l'environnement d'exécution | Durée(Élément sans inspection) |
Exception - RuntimeException | Exception qui peut être évitée si le programme est écrit correctement | Durée(Élément sans inspection) |
Exception -Autre que ceux ci-dessus | Exception qui ne peut être évitée même si le programme est correctement écrit. lancers requis | Au moment de la compilation(Article d'inspection) |
package scope1.packageA; //Déclaration de colis
import scopeB.libC; //Importer la libC d'un autre package B
import static scopeC.libD.methodA; //Importation statique de méthode Une méthode de libD d'un autre package C
public class ClassA{
/*Méthode appelée au début*/
//Autres modèles d'argument pour main(String... args), (String args[])
public static void main(String[] args){
ClassB instanceA = new ClassB("naiyo");
System.out.println(instanceA.getMethodA());
}
}
private class ClassB{
private data_type _fieldA;
/*initialiseur statique...Accès statique, instanciation, etc.
Première exécution lorsque la classe est chargée pour la première fois*/
static {
//Processus d'initialisation, etc.
}
/*Bloc d'initialisation...Première exécution à chaque fois qu'une instance est créée*/
{
//Processus d'initialisation, etc.
}
/*constructeur...Première exécution à chaque fois qu'une instance est créée*/
Class2(){
this._fieldA = "";
}
/*L'ordre est un initialiseur statique->Bloc d'initialisation->constructeur*/
/*Setter*/
data_type setMethodA(data_type varB){
this._fieldA = varB; //L'argument et le nom du champ sont identiques
}
/*Getter*/
data_type getMethodA(){
return this._fieldA;
}
}
/*Modificateur d'accès*/
private class1{} //Uniquement accessible à partir de la même classe
protected class class1{} //Uniquement de la même classe et sous-classe
class class1{} //Seulement à partir du même paquet
public class class1{} //De toutes les classes
/*Autres modificateurs*/
abstract //Classe abstraite, méthode abstraite
static //nom de la classe.Peut être appelé par un membre,Inaccessible aux membres non statiques
final //Ne sera pas écrasé(constant)
synchronized //Contrôle exclusif pour plusieurs processus
native //Classe native, méthode native
strictfp //Calculer des nombres à virgule flottante selon IEEE754
transient //Exclus de la sérialisation
volatile //Supprimer la mise en cache des valeurs de champ
const //Modificateur de constante multilingue, non utilisé en Java
/*Annotation*/
@Deprecated //Clarifié comme obsolète
@Override //Précisez que vous écrasez
@SuppressWarning //Supprimer l'affichage d'avertissement
/*Commande*/
@Annotation
public protected private
abstract static final synchronized native strictfp
/*Classe parent*/
protected class ClassA{
protected data_type fieldA;
protected Class1(data_type varA){ //Constructeur de classe parent
this.fieldA = varA;
}
protected void methodA(data_type varB){ //Méthode de classe parent
statementA
}
}
/*Classe enfant*/
public class ClassB extends ClassA{
public ClassB(data_type varC){ //Constructeur de classe enfant
super(varC); //Appelez le constructeur de classe parent
}
@Override //Modifier le modificateur(Comme mentionné ci-dessus)
public void methodA(data_type var2){
statementB //Relevé, traitement
}
}
/*Classe abstraite*/
protected abstract class ClassA{
protected data_type fieldA;
public Class1(data_type varA){
this.fieldA = varA
}
//Méthode prérequise à remplacer(Méthode abstraite)
public abstract void methodA(data_type varB);
}
/*Classe enfant*/
protected abstract class ClassB{
@Override
public abstract void methodA(data_type varB){
statementA //Relevé, traitement
}
}
/*interface*/
public interface InterfaceA{
/*Fondamentalement, les types sont répertoriés comme suit.*/
data_type CONST_A = "CONST_A"; //public static final est facultatif
data_type methodA(data_type varA);
/* ----Ajouté à partir de Java 8 ci-dessous. Personnellement obsolète(Parce que c'est compliqué) ---- */
//méthode par défaut...Quelque chose comme une méthode régulière d'une classe abstraite
default void methodB(data_type varB){
statementA //Relevé, traitement
}
//méthode statique...Peut être appelé sans instance
public static methodC(data_type varC){
statementB //Relevé, traitement
}
}
/*Classe enfant*/
public class ClassB extends InterfaceA{
public static void main(String[] args){
@Override
public static methodB(data_type varB){
// X ClassB.methodC
// X @Override methodC
InterfaceA.methodC(Interface1.CONST_A);
}
}
public class GenericClassA<TYPE>{
private TYPE _fieldA;
GenericClassA(TYPE varA){
this._fieldA = varA;
}
TYPE setMethodA(TYPE varB){
this._fieldA = varB;
}
TYPE getMethodA(){
return this._fieldA;
}
}
/*Méthode générique*/
public class ClassA{
public static <TYPE> ArrayList<TYPE> GenericMethodA(TYPE val1){
}
}
public class ClassA{
/*classe de membre statique... */
static class MemberClassA{}
/*Classe de membre non statique... */
class MemberClassB{}
public static void main(String[] args) {
/*Classe locale... */
class LocalClassC{
public void localMethod(){}
}
LocalClassC localClassC = new LocalClassC();
localClassC.localMethod();
/*Classe anonyme...Peut être défini et instancié en même temps*/
//Classe anonyme qui hérite du type ArrayList
List<data_typeC> list = new ArrayList<data_typeC>() {
public data_typeC method3() {
statements //Relevé, traitement
}
};
}
}
public class ClassB{
public static void main(String[] args){
//appel de classe de membre statique
ClassA.MemberClassA cAcA = new ClassA.MemberClassA();
//Appel de classe de membre non statique
ClassA cA = new ClassA();
ClassA.MemberClassB cAcB = cA.new MemberClassB();
}
}
module-info.java
module moduleA{ // module-info.Décrit dans un fichier appelé java.
export moduleA.lib; //Publiez la bibliothèque dans ce module
requires moduleB; //Décrivez les modules requis par ce module
}
Référence: Apprendre le système de modules / Modules Java
public enum EnumA{
/*De base*/
elmA, elmB;
/*application-Ajouter des membres, des variables et des méthodes*/
elmC(0), elmD(1);
private final int fieldA;
private setElmA(int varA){
this.fieldA = varA;
}
public int getVal(){
return fieldA;
}
public void outVal(){ // values() ..Liste de tous les éléments d'énumération
for (Enum2 enums : values()) {
System.out.println(enums.getVal()); // 0, 1
}
}
}
/* (args) -> { statements //Relevé, traitement} */
//Dans un cas, args-> statements
Collections.sort(listA, (a,b) -> {return b - a;});
/*Méthode statique(class::method)*/
// list.forEach(i -> String.toString(i)));
list.forEach(String::toString);
/*Méthode membre(this::method) */
// list.forEach(i -> this.toString(i)));
list.forEach(this::toString);
/*Méthode générique(class::<type> method) */
// list.forEach(i -> ClassA<typeA> methodA(i);));
list.forEach(ClassA::<typeA> methodA);
/*Méthode d'instance(object::method) */
// list.forEach(i -> System.out.print(i));
list.forEach(System.out::print);
/*constructeur(class::new) */
ClassA instanceA = classA::new;
@FunctionalInterface
public interface FuncInterfaceA {
public data_typeA method(data_typeA varA);
}
/*Interface fonctionnelle standard majeure*/
// Function.apply()Convertir la valeur
Function<String, Integer> func = x -> x.length();
System.out.println(func.apply("mojisu")); // 6
// Predicate.test()Faire un jugement
Predicate<Integer> condA = i -> i != 0 ;
Predicate<Integer> condB = i -> i % 2 == 0 ;
condA.test(2); // true
condA.negate().test(1); // false (negate..le déni)
condA.or(condB).test(1); // true (ou jugement)
condA.and(condB).test(1); // false (et jugement)
// Supplier.get()Renvoie une valeur sans argument
Supplier nowTime = () -> LocalDateTime.now();
System.out.println(nowTime.get()); // 2020-01-22 12:34:56
// Consumer.accept()Processus basé sur des arguments
Consumer<String> printA = str -> {
System.out.println("printA: " + str);
}
Consumer<String> printA = str -> {
System.out.println("printB: " + str);
}
Consumer<String> printAll = printA.andThen(printB); //Joindre
printAll.accept("" + System.currentTimeMillis());
Référence: Understanding Java 8 lambda expressions / [interface fonctionnelle Java](http://www.ne.jp/asahi/hishidama/home/ tech / java / Functionalinterface.html)
//Générer un flux
Stream<data_typeA> streamA = listA.stream(); // stream()Mettez
IntStream intStreamA = IntStream.range(1,5); //Créer un flux à partir de nombres
//Fonctionnement intermédiaire
streamA.filter(p -> p.length() > 5); //Rétrécir
streamA.map(p -> "[" + p + "]"); //remplacer
//Opération de terminaison
List<data_typeB> listB = streamA.collect(Collectors.toList()); //conversion
//production
listB.forEach(System.out::println);
/*Bon mot*/
listA.stream()
.filter(p -> p.length() > 5)
.map(p -> "[" + p + "]")
.collect(Collectors.toList())
.forEach(System.out::println);
Méthode | Traitement du contenu | Exemple |
---|---|---|
map | Remplacer l'élément par une autre valeur | .map(s-> s.getMethod()) |
flatmap | Combinez des flux d'éléments | .flatmap(s -> s2.stream()) |
filter | Affiner les éléments correspondants | .filter(s -> s.equals(1) |
limit | Limiter au nombre spécifié | .limit(2) |
distinct | Limitez-vous aux éléments uniques | .distinct() |
sorted | Trier les éléments | .sorted((s1,s2) -> s2-s1) |
range | Créer une colonne numérique sans inclure la dernière valeur | IntStream.range(1,5) |
rangeClosed | Créer une séquence de nombres comprenant la dernière valeur | IntStream.rangeClosed(1,5) |
Méthode | Traitement du contenu | Exemple |
---|---|---|
forEach | Répéter | .forEach(System.out::println); |
collect | Créer des résultats | .collect(Collectors.toList()); |
toArray | Convertir en tableau | .toArray(String[]::new); |
reduce | Valeurs agrégées | .reduce((val1,val2) -> val1.add(val2)); |
toList | Retourner comme liste | .collect(Collectors.toList()); |
toSet | Retourner comme ensemble | .collect(Collectors.toSet()); |
joining | Combiner avec un délimiteur | .collect(Collectors.joining(",")); |
groupingBy | Éléments de groupe | .collect(Collectors.groupingBy(s -> s.length())); |
Recommended Posts