Ich habe Java Gold gestartet (Kapitel 1-1)

Kapitel 1 Java Class Design

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

Ich habe Java Gold gestartet (Kapitel 1-1)
Ich habe Java SE8 Gold genommen.
Was ich mit Java Gold gelernt habe
Effektives Java Kapitel 2
Ich habe Ruby gestartet
Ich habe Angular gestartet
Effektives Java Kapitel 6 34-35
Effektives Java Kapitel 4 15-22
Effektives Java Kapitel 3
Java-Leistung Kapitel 1 Einführung
Ich habe ein Programmiertagebuch gestartet
Ich habe zuerst Java touched berührt
Ich habe zuerst Java touched berührt
Ich habe zuerst Java touched berührt
Java Gold misst: Format
Ich habe zuerst Java berührt
Java Performance Kapitel 3 Java Performance Toolbox
Hinweise zur Java8 Gold-Prüfung
Java Gold misst: Lokalisierung
Erste Schritte mit Java Collection
Was ich über Java 6 recherchiert habe
[Java-Verbesserungsfall] Ich habe mit dem Programmieren begonnen, nachdem ich 30 Jahre alt war.
Beim Übergeben von Java Gold SE 8
Ich habe ein Roulette in Java gemacht.
Was ich über Java 9 recherchiert habe
Ich habe Java-Primitivtypen untersucht
Java-Leistung Kapitel 2 Ansatz für Leistungstests
Ich habe Drools (Java, InputStream) ausprobiert.
Ich habe Rails Anfänger ausprobiert [Kapitel 1]
Was ich über Java 7 recherchiert habe
Ich habe versucht, Java REPL zu verwenden
Erste Schritte mit Java Basics
[Java] Ich habe versucht, die Kombination zu implementieren.
Ich habe Rails Anfänger ausprobiert [Kapitel 2]
Bei der Java-Parallelverarbeitung bin ich mir nicht sicher
Ich habe den Konstruktor (Java) studiert.
Ich habe versucht, Metaprogrammierung mit Java
Was ich über Java 5 recherchiert habe
Woran ich dachte, als ich anfing, von Java nach Kotlin zu migrieren
Ich habe eine E-Mail in Java gesendet
Ich habe PHP- und Java-Konstruktoren verglichen
Ich habe ein PDF mit Java erstellt.
Ich habe eine shopify App @java erstellt
Erhaltener Oracle Certified Java Programmer, Gold SE 8
Die Geschichte von Java Gold SE8
Ich habe Java Flight Recorder (JFR) überprüft.
In Java Silver gefallen (weinend)
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Effektive Java 3rd Edition Kapitel 5 Generika
Ich habe Gordobachs Theorem in Java geschrieben
Ich habe das Java-Framework "Quarkus" ausprobiert.
Ich habe versucht, die Java8 Stream API zu verwenden
Effektive Java 3rd Edition Kapitel 8 Methoden
Ich habe eine Anmerkung in Java gemacht.
Ich habe versucht, JWT in Java zu verwenden
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Was ich mit Java Silver gelernt habe
Was ich über Java-Lernen recherchiert habe
Ich habe jetzt versucht, Java 8 zusammenzufassen