Rückblick auf die Grundlagen von Java

Vorwort

Ich habe Java überprüft, aber ich habe festgestellt, dass der grundlegende Teil subtil war. Halten Sie Ihr Verständnis fest

Als Referenz übergeben und als Wert übergeben

Referenz übergeben → Übergeben Sie den Speicherort im Speicher Wert übergeben → Wert so übergeben, wie er ist

Was ist mit Java?

Nur in Java als Wert übergeben Primitiver Typ → Wert so wie er ist übergeben Objekttyp → Referenz "Wert" übergeben

Was passiert als Referenzwert?

Übergeben eines Zeigers (Informationen darüber, wo Daten im Speicher gespeichert sind) Damit Sie können den ursprünglichen Wert bearbeiten, indem Sie einen Referenzwert an die Methode übergeben

public void sampleMethod(Object o){
	o = 1;
}

Im Neuzustand wird der Referenzwert jedoch neu geschrieben. Selbst wenn danach Änderungen vorgenommen werden, wird der ursprüngliche Wert nicht beeinflusst. Wenn Sie nicht mit zurückkehren, wird ein Referenzwert geboren, der nicht verwendet wird

public void sampleMethod(Object o){
	o =  new Object();
	o = 1;
}

Über String

Da String ein Objekttyp ist, wird er als Referenzwert übergeben Aber selbst wenn Sie den Wert ersetzen, ändert sich der ursprüngliche Wert nicht → Weil es sich um eine Klasse handelt, die nicht geändert werden kann Jedes Mal, wenn Sie eine Änderung an String vornehmen, wird hinter den Kulissen ein neues Objekt erstellt (geändert in einen neuen Zeiger). Daher kann das ursprüngliche Objekt nicht geändert werden Daher ist dies eine andere Bewegung als die Übergabe von Werten, selbst wenn das Ergebnis dasselbe ist.

Komposition

Einbindung einer anderen Klasse in eine Klasse

Warum bist du

Es gibt eine Vererbung für die Verwendung anderer Klassen, aber die Verwendung der Vererbung kann zu unerwartetem Verhalten führen
Vererbung

public class InstrumentedHashSet<E> extends HashSet<E> {
private int addCount = 0;

public InstrumentedHashSet(){
}

@Override
public boolean add(E e){
 addCount++;
 return super.add(e);
}

@Override
//addAll durchläuft das Argument intern und fügt es hinzu
//Daher wird in dieser Klasse das überschriebene Add verwendet und die Anzahl erhöht sich um den Add-Betrag und den Add-All-Betrag.
//Mit anderen Worten, wenn die Zielmethode beim Erben und Überschreiben einer Methode eine andere überschriebene Methode verwendet, ist dies betroffen.
public boolean addAll(Collection<? extends E> c){
 addCount += c.size();
 return super.addAll(c);
}

public int getAddCount(){
 return addCount;
}
}


Zusammensetzung

//Klasse übertragen
//Die Komposition selbst kann gemacht werden, ohne dies separat zu machen.
public class ForwardingSet<E> implements Set<E>{
//Komposition
private final Set<E> s;

//Das hier verwendete Set ist nur dasjenige, das als Argument übergeben wurde
public ForwardingSet(Set<E> s){
 this.s = s;
}

public void clear(){
 s.clear();
}

public boolean add(E e){
 return s.add(e);
}

public boolean addAll(Collection<? extends E> c){
 return s.addAll(c);
}

//Überschreiben Sie die abstrakte Methode von Set(Kürzung)
}


//Wrapper-Klasse
public class RapperSet<E> extends ForwardingSet<E>{
private int addCount = 0;

//Übergeben Sie das Set, auf dem die Superklasse basieren soll
public RapperSet(Set<E> e){
 super(e);
}

@Override
public boolean add(E e){
 addCount++;
 return super.add(e);
}

@Override
public boolean addAll(Collection<? extends E> c){
addCount += c.size();
//AddAll wird hier verwendet()Wird in der Oberklasse addAll verwendet()
//Das heißt, addAll der Klasse, die als Argument übergeben wurde().. rapperSet hinzufügen()Macht nichts
return super.addAll(c);
}

public int getAddCount(){
return addCount;
}
}

Recommended Posts

Rückblick auf die Grundlagen von Java
Rückblick auf JSON von Java
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
Grundlagen der Zeichenoperation (Java)
Zusammenfassung der Grundlagen der Java-Sprache
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
20190803_Java & k8s on Azure Die Geschichte vom Festivalbesuch
Über die Grundlagen der Android-Entwicklung
[Java Edition] Geschichte der Serialisierung
Progate Ruby on Rails5 Rückblick
Die Grundlagen von SpringBoot + MyBatis + MySQL
Hinweis zum Pfad von request.getRequestDispatcher
Der Ursprung von Java-Lambda-Ausdrücken
Java-Grundlagen
Java-Grundlagen
Java-Grundlagen
Das Verhalten von JS auf Java SE 8 Nashorn änderte sich plötzlich
Meine Gedanken zur Equals-Methode (Java)
Zeigen Sie Text über dem Bild an
Holen Sie sich das Ergebnis von POST in Java
[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
Memorandum des neuen Absolventen SES [Java-Grundlagen]
[Java] Ermittelt den Tag eines bestimmten Tages
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
Kick ShellScript auf dem Server von Java
Samshin über den Wert des versteckten Feldes
Installieren Sie OpenJDK (Java) auf dem neuesten Ubuntu
Jetzt habe ich die Grundlagen von RecyclerView zusammengefasst
[# 1 Java] Grundlagen der Java-Major-Prämisse vor dem Studium-
Messen Sie einfach die Größe von Java-Objekten
Ausgabe des Buches "Einführung in Java"
Speichermessung von Java-Apps unter Windows
Führen Sie den in der Zwischenablage gespeicherten Java-Code aus.
Die Geschichte des Schreibens von Java in Emacs
[Java] Überprüfen Sie die Anzahl der Zeichen
[Java] [Spring] Testen Sie das Verhalten des Loggers
Was war keine faire Verwendung der Java-API-Umleitung unter Android?
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.
Rückblick auf die Worte von First Gundam Fat Can, Docker und mir
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
JAVA: jar, aar, zeige den Inhalt der Datei an
Rückrechnung des Übergangs von Randoms internem Seed
Die Geschichte eines gewöhnlichen Othello in Java
[Android] [Java] Verwalten Sie den Status der CheckBox von ListView
Informationen zur Beschreibungsreihenfolge der Java-Systemeigenschaften
[Ruby on Rails] Bis zur Einführung von RSpec
Über die Idee anonymer Klassen in Java
Die Reihenfolge der Java-Methodenmodifikatoren ist festgelegt
[Java] Zugriff auf die signierte URL von s3 (signierte Version 2)
Die Geschichte des Lernens von Java in der ersten Programmierung
Grundlagen der Java-Programmierung
Messen Sie die Größe eines Ordners mit Java