Les types de données qui peuvent être utilisés dans l'instruction case
・ Octet ・ Char · Court ・ Int ・ Énumération · Chaîne · Personnage ・ Octet · Court ・ Entier
Les types de données de base ci-dessus et leurs classes wrapper. Cependant, il semble que seuls enum, String, char et int soient réellement utilisés.
Vous pouvez utiliser décimal, octogone, hexadécimal, binaire et trait de soulignement (_).
public class Sample {
public static void main(String[] args) {
int v1 = 10; //Nombre décimal
int v2 = 072; //8 base
int v3 = 0x1a; //Hexadécimal
int v4 = 0b1111; //Nombre binaire
int v5 = 100_000; //Pour améliorer la lisibilité
}
}
Gardez à l'esprit que les traits de soulignement ne peuvent pas être utilisés pour le ** début, la fin et avant et après le symbole ** du littéral.
Java dispose des modificateurs suivants pour définir la plage d'accès, appelée portée.
Qualificatif | Lieu applicable | La description |
---|---|---|
public | Classes, méthodes, variables, constructeurs | Peut être utilisé dans n'importe quelle classe |
protected | Méthodes, variables, constructeurs | Seuls le même package et les mêmes classes héritées peuvent être utilisés |
Par défaut (non spécifié) | Classes, méthodes, variables, constructeurs | Ne peut être utilisé qu'à partir du même emballage |
private | Méthodes, variables, constructeurs | Ne peut être utilisé que dans la même classe |
** À propos du public **
Une seule classe publique peut être créée dans un fichier comme indiqué ci-dessous.
Sample.java
public class Sample { //C'est acceptable
public static void main(String[] args) {
System.out.println("Sample");
}
}
public class Sample2 { //Cela entraînera une erreur de compilation
public static void main(String[] args) {
System.out.println("Sample2");
}
}
** À propos de protégé et privé **
En raison de la limitation que protected ne peut être utilisé qu'à partir du même package et des mêmes sous-classes Il semble qu'il soit habituellement attaché aux «méthodes que vous voulez remplacer».
Il semble que le privé soit souvent utilisé pour l'encapsulation. Le but de l'encapsulation semble être d'éviter que les champs ne soient modifiés sans discernement. Après cela, je pense que ce serait bien de pouvoir facilement comprendre où la valeur est fixée et où elle est acquise.
Est-ce comme ça lorsqu'il est utilisé comme source?
Sample.java
public class Sample {
public static void main(String[] args) {
Cat zakiyama = new Cat();
zakiyama.setName("Zakiyama");
System.out.println(zakiyama.getName());
}
}
abstract class Animal {
private String Name;
protected abstract String getName();
protected abstract void setName(String newName);
}
class Cat extends Animal {
private String Name;
@Override
protected String getName() {
return this.Name;
}
@Override
protected void setName(String newName) {
this.Name = newName;
}
}
Le modificateur final peut être appliqué aux variables, méthodes et classes. Lorsqu'il est appliqué à chacun, le mouvement est le suivant.
Lieu applicable | La description |
---|---|
classe | そのclasseを継承できなくなる |
Méthode | そのMéthodeをオーバーライドできなくなる |
variable | そのvariableの中身を変更できなくなる(定数化) |
** ・ À propos de la finale ** L'une des classes Java standard, la classe String est la classe finale. (Voir JavaDoc) Quand ajouter final, quand l'héritage n'est pas nécessaire. C'est génial d'empêcher le dessin de s'effondrer.
Ce n'est pas vraiment une classe qui hérite et s'étend S'il est hérité, le rôle qu'il devrait avoir n'a pas de sens.
L'article ici décrit les mérites de l'ajout de final, il est donc très utile.
** ・ À propos de l'électricité statique ** Les variables et méthodes avec statique ont des zones de mémoire différentes des instances. Vous pouvez utiliser les variables et les méthodes sans les instancier.
Comme ça.
Sample.java
public class Sample {
public static void main(String[] args) {
Animal zakiyama1 = new Animal();
Animal zakiyama2 = new Animal();
zakiyama1.SetName("C'est Zakiyama 1");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
zakiyama2.SetName("C'est Zakiyama 2");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
}
}
class Animal {
private static String Name;
public String getName() {
return Animal.Name;
}
public void SetName(String newName) {
Animal.Name = newName;
}
}
Résultat d'exécution
C'est Zakiyama 1
C'est Zakiyama 1
C'est Zakiyama 2
C'est Zakiyama 2
Parce que les variables statiques sont pour les classes Il n'a pas de contenu pour chaque variable d'instance.
Par conséquent, si vous modifiez la variable dans zakiyama1, le contenu est modifié lorsque vous l'appelez dans zakiyama2. Si le contenu de la variable est conservé pour chaque instance, la variable n'est pas affectée par plusieurs instances.
Dans le cas des variables d'instance, cela ressemble à ceci.
Sample.java
public class Sample {
public static void main(String[] args) {
Animal zakiyama1 = new Animal();
Animal zakiyama2 = new Animal();
zakiyama1.SetName("C'est Zakiyama 1");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
zakiyama2.SetName("C'est Zakiyama 2");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
}
}
class Animal {
private String Name;
public String getName() {
return this.Name;
}
public void SetName(String newName) {
this.Name = newName;
}
}
résultat
C'est Zakiyama 1
null
C'est Zakiyama 1
C'est Zakiyama 2
Plus à ce sujet.
Recommended Posts