Die Datentypen, die in der case-Anweisung verwendet werden können
・ Byte ・ Char ・ Kurz ・ Int ・ Aufzählung ・ String ・ Charakter ・ Byte ・ Kurz ・ Ganzzahl
Die oben genannten grundlegenden Datentypen und ihre Wrapper-Klassen. Es scheint jedoch, dass nur enum, String, char und int tatsächlich verwendet werden.
Sie können Dezimal, Achteck, Hexadezimal, Binär und Unterstrich (_) verwenden.
public class Sample {
public static void main(String[] args) {
int v1 = 10; //Dezimalzahl
int v2 = 072; //8 Basis
int v3 = 0x1a; //Hexadezimal
int v4 = 0b1111; //Binärzahl
int v5 = 100_000; //Zur Verbesserung der Lesbarkeit
}
}
Beachten Sie, dass Unterstriche nicht für den ** Anfang, das Ende und vor und nach dem Symbol ** des Literal verwendet werden können.
Java verfügt über die folgenden Modifikatoren zum Definieren des Zugriffsbereichs, den sogenannten Bereich.
Qualifikation | Anwendbarer Ort | Erläuterung |
---|---|---|
public | Klassen, Methoden, Variablen, Konstruktoren | Kann aus jeder Klasse verwendet werden |
protected | Methoden, Variablen, Konstruktoren | Es können nur dasselbe Paket und dieselben geerbten Klassen verwendet werden |
Standard (nicht angegeben) | Klassen, Methoden, Variablen, Konstruktoren | Kann nur aus demselben Paket verwendet werden |
private | Methoden, Variablen, Konstruktoren | Kann nur innerhalb derselben Klasse verwendet werden |
** Über die Öffentlichkeit **
In einer Datei kann nur eine öffentliche Klasse erstellt werden (siehe unten).
Sample.java
public class Sample { //Das ist in Ordnung
public static void main(String[] args) {
System.out.println("Sample");
}
}
public class Sample2 { //Dies führt zu einem Kompilierungsfehler
public static void main(String[] args) {
System.out.println("Sample2");
}
}
** Über geschützte und private **
Aufgrund der Einschränkung, dass protected nur aus demselben Paket und denselben Unterklassen verwendet werden kann Es scheint, dass es üblicherweise an "Methoden, die Sie überschreiben möchten" angehängt ist.
Es scheint, dass privat oft zur Kapselung verwendet wird. Der Zweck der Kapselung scheint darin zu bestehen, zu verhindern, dass die Felder wahllos geändert werden. Danach wäre es meiner Meinung nach schön zu verstehen, wo der Wert eingestellt ist und wo er erworben wird.
Ist es so, wenn es als Quelle verwendet wird?
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;
}
}
Der letzte Modifikator kann auf Variablen, Methoden und Klassen angewendet werden. Bei jeder Anwendung ist die Bewegung wie folgt.
Anwendbarer Ort | Erläuterung |
---|---|
Klasse | そのKlasseを継承できなくなる |
Methode | そのMethodeをオーバーライドできなくなる |
Variable | そのVariableの中身を変更できなくなる(定数化) |
** ・ Über das Finale ** Eine der Standard-Java-Klassen, die String-Klasse, ist die letzte Klasse. (Siehe JavaDoc) Wann final hinzugefügt werden muss, wenn keine Vererbung erforderlich ist. Es ist großartig zu verhindern, dass das Design zusammenbricht.
Es ist nicht wirklich eine Klasse, die erbt und erweitert Wenn es vererbt wird, ist die Rolle, die es haben sollte, bedeutungslos.
Der Artikel hier beschreibt die Vorzüge des Hinzufügens von final und ist daher sehr hilfreich.
** ・ Über statische ** Variablen und Methoden mit statischer Aufladung haben andere Speicherbereiche als Instanzen. Sie können die Variablen und Methoden verwenden, ohne sie zu instanziieren.
So was.
Sample.java
public class Sample {
public static void main(String[] args) {
Animal zakiyama1 = new Animal();
Animal zakiyama2 = new Animal();
zakiyama1.SetName("Es ist Zakiyama 1");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
zakiyama2.SetName("Es ist 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;
}
}
Ausführungsergebnis
Es ist Zakiyama 1
Es ist Zakiyama 1
Es ist Zakiyama 2
Es ist Zakiyama 2
Weil statische Variablen für Klassen sind Es enthält nicht den Inhalt für jede Instanzvariable.
Wenn Sie die Variable in zakiyama1 ändern, wird der Inhalt daher geändert, wenn Sie sie in zakiyama2 aufrufen. Wenn der Inhalt der Variablen für jede Instanz beibehalten wird, wird die Variable nicht von mehreren Instanzen beeinflusst.
Bei Instanzvariablen sieht es so aus.
Sample.java
public class Sample {
public static void main(String[] args) {
Animal zakiyama1 = new Animal();
Animal zakiyama2 = new Animal();
zakiyama1.SetName("Es ist Zakiyama 1");
System.out.println(zakiyama1.getName());
System.out.println(zakiyama2.getName());
zakiyama2.SetName("Es ist 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;
}
}
Ergebnis
Es ist Zakiyama 1
null
Es ist Zakiyama 1
Es ist Zakiyama 2
Mehr dazu.
Recommended Posts