Java était la première fois que je passais du développement iOS au développement Android, je vais donc laisser une note de ce que j'ai appris à l'époque.
Java est un langage de programmation orienté objet développé par Sun Microsystems en 1995. Lorsque nous disons simplement Java, cela peut signifier non seulement Java en tant que langage de programmation, mais également toute la plate-forme, y compris les bibliothèques Java et les environnements de développement. Ci-après, lorsqu'il est simplement décrit comme Java, cela signifie Java en tant que langage de programmation.
Java est un langage de programmation doté des fonctionnalités suivantes.
version | mot-clé |
---|---|
Java5 | Génériques, autoboxing / unboxing, type enum, annotation, étendu pour instruction, utilitaires de concurrence |
Java6 | Accélérer AWT / Swing, JDBC4.0, amélioration des performances, amélioration des utilitaires de concurrence |
Java7 | NIO2、Fork/Rejoignez le framework, essayez-with-Ressources, notation diamant, multi-capture d'exceptions |
Java8 | Notation Lambda, référence de méthode, API Stream, méthode par défaut de l'interface, nouvelle API Time |
JRE (Java Runtime Environment) est un environnement d'exécution Java, c'est-à-dire un ensemble d'environnements requis pour exécuter un programme écrit en Java. Le JRE se compose d'une machine virtuelle Java (JVM) et d'une API (Application Programming Interface), qui est un ensemble de bibliothèques de classes Java standard.
D'autre part, JDK (Java Development Kit) est un environnement de développement Java. Le JDK est un binaire pour les développeurs Java sur chaque système d'exploitation et est publié par Oracle. Le JDK comprend un JRE et fournit l'environnement nécessaire au développement de Java.
Les types Java sont grossièrement divisés en types primitifs et types de référence. Il existe les huit types suivants qui appartiennent au type primitif.
Nom du modèle | Commentaire | valeur | Valeur par défaut |
---|---|---|---|
boolean | Valeur booléenne | true, false | false |
byte | Entier 8 bits | -128〜127 | (byte)0 |
short | Entier 16 bits | -32768〜32767 | (short)0 |
int | Entier 32 bits | -2147483648〜2147483647 | 0 |
long |Entier 64 bits| -9223372036854775808L〜9223372036854775807L | 0L
char | UTF-16 points de code| 'a'、'Ah'、'Mots'、'\u03b1'Tel| '\u0000' (caractère nul)
float |Nombre à virgule flottante 32 bits| 1.54f etc.| 0.0f
double |Nombre à virgule flottante 64 bits| 2.45d etc.| 0.0d
Il existe quatre types de types de référence: type de classe, type d'interface, paramètre de type et type de tableau. Chacun est décrit séparément.
Un littéral est une méthode de représentation pour décrire les valeurs de type primitif, les chaînes de caractères et les valeurs nulles dans le champ de code. Les littéraux de chaque type sont indiqués ci-dessous.
Types de littéraux | Type de valeur générée | Méthode de description | Exemple |
---|---|---|---|
Entier (décimal) | int | Énumérer les nombres | 128 |
Entier (hexagone) | int | Préfixez le nombre avec 0x ou 0X | 0xab |
Entier (nombre 8-aire) | int | Préfixez le nombre avec 0 | 012 |
Entier (binaire) | int | Préfixez le nombre avec 0b ou 0B | 0b11 |
entier | long | Ajouter l ou L à la fin de la valeur entière | 123L |
Nombre à virgule flottante | float | Ajouter f ou F à la fin de la fraction | 2.34f |
Nombre à virgule flottante | double | Représentation fractionnaire ou exponentielle | 3.45、345e-2 |
lettre | char | Mettre les caractères entre guillemets simples | 'a' |
Chaîne | String | Mettez la chaîne entre guillemets | "abc" |
Valeur booléenne | boolean | true, false | true |
valeur nulle | type nul | null | null |
Puisque les bases sont les mêmes opérateurs qu'en langage C, seuls certains des opérateurs de bits rarement utilisés sont décrits.
opérateur | Exemple | Commentaire |
---|---|---|
>> | a>>1 | Décalez un de 1 bit vers la droite. Remplissez le bord gauche avec la même valeur que le bit le plus significatif |
>>> | a>>>1 | Décalez un de 1 bit vers la droite. Remplissez le bord gauche avec 0 |
~ | ~a | Inverser tous les bits d'un |
Comme avec le langage C, les commentaires doivent être écrits comme // des commentaires d'une ligne ou / * des commentaires de bloc * /. Fondamentalement, les commentaires au format Javadoc sont souhaitables.
Puisque le branchement conditionnel est fondamentalement le même qu'en langage C, les détails sont omis, mais seules quelques notes sont décrites.
Il existe trois types d'exceptions en Java, qui sont toutes représentées par des classes qui héritent de la classe Throwable.
Lever une exception est souvent appelé lancer une exception. En Java, vous pouvez lever une exception avec "throw new exception class ()". Lors de la levée d'une exception vérifiée, il est conseillé d'utiliser @throws dans Javadoc pour décrire dans quelles circonstances l'exception est levée. Certaines des exceptions d'exécution les plus couramment utilisées sont:
exception | Cas de jet |
---|---|
IllegalArgumentException | Lorsque la valeur de l'argument au moment de l'appel n'est pas valide |
IllegalStateException | Lorsqu'une méthode est appelée lorsque l'état de l'objet n'est pas valide |
NullPointerException | Lorsque null est passé à un argument qui interdit null |
IndexOutOfBoundsException | Lorsqu'une valeur hors limites est spécifiée dans un argument qui spécifie un index |
Lorsque vous utilisez un traitement basé sur les ressources, comme l'ouverture de fichier, la connexion à la base de données et la connexion réseau, utilisez la syntaxe try-with-resources. Le processus de fermeture de la ressource est automatiquement exécuté lorsque le bloc est quitté, et le processus de fermeture de la ressource est exécuté même si une exception se produit dans le bloc. Si une exception se produit pendant le processus de fermeture de la ressource, vous pouvez écrire un gestionnaire pour l'exception en ajoutant la théorie des captures à la fin.
try (Nom de la classe Nom de la variable=Obtenez des ressources) {
Traitement à l'aide de ressources
}
Les ** modificateurs ** suivants peuvent être spécifiés pour les classes, interfaces, méthodes, constructeurs et variables.
Qualificatif | class | interface | method | constructor | block | var | Classification | La description |
---|---|---|---|---|---|---|---|---|
public | ○ | ○ | ○ | ○ | × | ○ | Modificateur d'accès | Accessible depuis toutes les classes |
[protected](http://www.tohoho-web.com/java/modifier.htm#access)|○|○|○|○|×|○|Modificateurd'accès|<spanstyle="color:rgb(0,0,0);">Protégez l'accès des autres fichiers et classes</span>
[private](http://www.tohoho-web.com/java/modifier.htm#access) | ○ | ○ | ○ | ○ | × | ○ |Modificateur d'accès|Accès uniquement depuis sa propre classe
[static](http://www.tohoho-web.com/java/modifier.htm#access)|○|○|○|×|×|○|modificateurstatique|<spanstyle="color:rgb(0,0,0);">Indique qu'il peut être référencé même s'il n'est pas instancié</span>
[final](http://www.tohoho-web.com/java/modifier.htm#final) | ○ | × | ○ | × | × | ○ |modificateur final|Indique qu'il ne sera pas écrasé. Interdiction d'héritage, de surcharge et de modification
[abstract](http://www.tohoho-web.com/java/modifier.htm#abstract)|○|○|○|×|×|×|Modificateurabstrait|<spanstyle="color:rgb(0,0,0);">Il est abstrait et indique que le contenu est défini et implémenté à la destination d'héritage.</span>
[native](http://www.tohoho-web.com/java/modifier.htm#native)|×|×|○|×|×|×|modificateurnatif|<spanstyle="color:rgb(34,24,21);">Indique qu'il est implémenté dans un langage autre que Java</span>
[synchronized](http://www.tohoho-web.com/java/modifier.htm#synchronized)|×|×|○|×|○|×|Modificateurdesynchronisation|<spanstyle="color:rgb(0,0,0);">Indique qu'un contrôle exclusif est effectué dans le cas du multithreading.</span>
[transient](http://www.tohoho-web.com/java/modifier.htm#transient) | × | × | × | × | × | ○ |Modificateur temporaire|Indique qu'il n'est pas soumis à la sérialisation
[volatile](http://www.tohoho-web.com/java/modifier.htm#volatile)|×|×|×|×|×|○|Modificateurvolatil|<spanstyle="color:rgb(34,24,21);">Supprimez le cache et montrez que les valeurs sont les mêmes dans les threads</span>
[strictfp](http://www.tohoho-web.com/java/modifier.htm#strictfp)|○|○|○|×|×|×|Modificateurdefractionflottantestrict|<spanstyle="color:rgb(0,0,0);">L'arithmétique à virgule flottante est indépendante de la plate-forme et fonctionne strictement</span> |
Annotation signifie «annotation» et est une fonction permettant de saisir des informations supplémentaires pour une classe, une méthode ou un package. Ajouté dans Java SE 5 et utilisé au format "@ + nom d'annotation".
Les annotations suivantes existent dans les annotations.
Les annotations fournies en standard sont expliquées ci-dessous avec des exemples.
import java.lang.annotation.*;
//Spécifiez la quantité d'informations de l'annotation définie qui sont enregistrées (conserver les informations même au moment de l'exécution avec RUNTIME)
@Retention(RetentionPolicy.RUNTIME)
//Spécifiez où attacher l'annotation définie dans le champ de code. Il sera possible de décrire en classe, interface et enum avec TYPE.
@Target(ElementType.TYPE)
//Les informations de l'annotation définie seront également décrites dans Javadoc.
@Documented
public @interface Beta {
String from(); //Il peut prendre un argument de type chaîne nommé from.@Beta(from = "1.0");Etc. Si le nom de l'argument est valeur, la description de valeur peut être omise.
}
Une méthode qui déclare uniquement le nom de la méthode, la signature et le type de retour est appelée une méthode abstraite et est décrite dans le format suivant.
abstract [Type de retour] <Nom de la méthode>(Signature);
Ceux qui peuvent avoir cette méthode abstraite, des constantes, une méthode par défaut et une méthode statique en tant que membres sont appelés interfaces et sont décrits dans le format suivant.
[Qualificatif] interface <Nom de l'interface> {
Nom de la variable de type de données=valeur;
Modificateur Type de données de la valeur de retour Nom de la méthode(Déclaration de type d'argument);
}
Une interface fonctionnelle est une interface qui n'a qu'une seule méthode abstraite définie. Même si la méthode par défaut et la méthode statique sont incluses, s'il n'y a qu'une seule méthode abstraite, elle est incluse dans l'interface fonctionnelle.
Les expressions Lambda sont une syntaxe introduite dans Java SE 8 qui vous permet de décrire brièvement l'implémentation d'une interface fonctionnelle. Dans un appel de méthode qui prend une interface de type de fonction comme argument, une expression lambda peut être utilisée dans la partie argument de l'interface de type de fonction correspondante et est décrite comme suit.
(Arguments d'expression Lambda) -> {En traitement}
URL de référence: http://www.ne.jp/asahi/hishidama/home/tech/java/lambda.html
Référence de la méthode est une syntaxe introduite dans Java SE 8, et la méthode elle-même est ajoutée à la variable de l'interface fonctionnelle. C'est une syntaxe qui peut être attribuée. La référence de la méthode est spécifiée comme suit.
//Pour les méthodes statiques (et dans certains cas les méthodes d'instance)
nom de la classe::Nom de la méthode
//Par exemple les méthodes
Nom de la variable d'instance::Nom de la méthode
Facultatif est une classe introduite dans Java SE 8 et n'englobe qu'une seule valeur. y a-t-il. Facultatif contient simplement la valeur, mais chaque méthode de Optional change son comportement selon que la valeur conservée est nulle ou non. (Fondamentalement, le traitement est effectué uniquement lorsqu'il n'est pas nul)
Une instance facultative devient un objet appelé vide si la valeur contenue est nulle, et s'il y a une valeur, elle devient une instance qui contient normalement la valeur. Le côté qui reçoit l'Optionnel détermine si l'Optionnel est vide et effectue le traitement. Utilisez la méthode isPresent pour déterminer si Optional contient null. Outre isPresent, il existe orElse qui renvoie la valeur spécifiée lorsque la valeur n'est pas stockée, ouElseThrow qui lève une exception lorsque la valeur n'est pas stockée.