Eine Person, die C ++ schreibt, hat versucht, Java zu schreiben

Normalerweise schreibe ich C ++, aber aus irgendeinem Grund habe ich mich plötzlich entschieden, Java zu schreiben. Also werde ich einen einfachen Vergleich schreiben, wenn Sie irgendwelche Eindrücke haben. (Ich habe es mit einem viel passenderen Gefühl geschrieben als andere Artikel ...)

zur Aussage

Erstens aus dem gleichen Teil. Beide Sprachen

for (int i = 0; i < size; ++i) {
    a[i] = i;
}

Kann verwendet werden!

Schimmel

Art C++ Java
Logik bool boolean
Brief char char
ganze Zahl (signed) short, int, long, long long byte, short, int, long
Gleitkommazahl float, double, long double float, double

―― Grundsätzlich gibt es viele ähnliche Dinge.

Die hier aufgeführten werden in Java als grundlegende Datentypen, primitive Typen usw. bezeichnet. Es gibt viele andere Dinge, die als Klassen erstellt werden, aber es gibt große Unterschiede zwischen C ++ und Java. Wenn der Typname Test ist

C++ Java (Basisdatentyp) Java (andere Klassen)
Test test; Test test; Keiner
Test* test;,Test& test; Keiner Test test;

Es fühlt sich an wie. In Java ist alles, was kein Basisdatentyp ist, ein Referenztyp, in dem sich eine Adresse befindet. Auf Mitglieder wird in der Form `test.member``` zugegriffen, sie können jedoch im Gegensatz zu C ++ - Referenzen oder durch neue wie` `Test test = new Test ();` ersetzt werden. Es hat auch zeigerähnliche Eigenschaften wie die Initialisierung. Übrigens hat Java eine praktische Spezifikation: Wenn Sie es ohne "Löschen" in Ruhe lassen, wird es automatisch gelöscht (Zählt es die Anzahl der Referenzen wie shared_ptr?).

Klassen und Funktionen

Mit C ++

class Test {
private:
    double _val;
public:
    Test(double val) : _val(val) {}
    double get() const { return _val; }
    void set(double val) { _val = val; }
};

Was geschrieben steht, ist Java

public class Test {
    private double _val;
    Test(double val) {
        _val = val;
    }
    public double get() {
        return _val;
    }
    public void set(double val) {
        _val = val;
    }
} 
// ;Ich brauche nicht

Es wird sein. Grundsätzlich können Sie eine Klasse mit ähnlichen Gefühlen machen. In C ++ befindet sich die Klasse jedoch nur im öffentlichen Status. In Java können Sie jedoch mehrere Typen auswählen. Schreiben Sie außerdem privat / öffentlich von Mitgliedsvariablen / -funktionen für jedes Mitglied. Und es ist sinnvoll, die Zugriffsspezifikation nicht zu schreiben. Auch die Bedeutung von geschützt ist unterschiedlich. Die Zugriffsspezifikationen der Mitglieder in der Klasse lauten wie folgt.

Bezeichnung Bedeutung in Java C++Bedeutung in
private Nur aus der Klasse heraus Nur aus der Klasse heraus
Keiner Nur im selben Paket Gleich wie privat
protected Innerhalb desselben Pakets oder aus einer Unterklasse Aus einer Klasse oder einer abgeleiteten Klasse heraus
public Von überall Von überall

Das Paket ähnelt dem C ++ - Namespace, aber ich denke, es ist ein großer Unterschied zu C ++, da es mithilfe der Verzeichnisstruktur erstellt wird.

Erbe

Vererbung in C ++

class Derived : public Base {
    (members)
};

Aber mit Java

public class Derived extends Base {
    (members)
}

ist. Es gibt keine Zugriffsspezifikation für die Basisklasse. Schreiben Sie einfach "Erweitert die Basis". Mitglieder können überschrieben werden, ohne "virtuell" anzugeben. Verwenden Sie "final", um dies zu verhindern. Neben der bloßen Vererbung gibt es auch eine Schnittstelle,

interface Base {
    void func();
}
class Impl implements Base {
    void func() {
        // implementation
    }
}

Schreiben Sie so. Es sieht einer abstrakten C ++ - Klasse ähnlich. Darüber hinaus können von Java abgeleitete Klassenvariablen (Unterklassenvariablen) normalerweise Basisklassenvariablen zugewiesen werden, und Funktionen, die auf der Seite der abgeleiteten Klasse überladen sind, können von Basisklassenvariablen aufgerufen werden (wie C ++ - Referenz).

Obwohl es verschiedene Unterschiede gibt, könnte die grundlegende objektorientierte Programmierung in Java so wie sie ist durchgeführt werden. Es hat Spaß gemacht, ein Programm normalerweise nur durch den Kauf eines Nachschlagewerks zu schreiben.

Recommended Posts

Eine Person, die C ++ schreibt, hat versucht, Java zu schreiben
Wenn eine Person aus Java PHP lernt
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe versucht, Java in einem Mac-Terminal auszuführen
ABC - 013-A & B & C.
ABC - 023 - A & B & C.
ABC - 036-A & B & C.
ABC - 010 - A & B & C.
ABC - 028 - A & B & C.
[Java] Erstellen Sie einen Filter
ABC - 015 - A & B & C.
ABC - 128 - A & B & C.
ABC - 012-A & B & C.
ABC - 018 - A & B & C.
ABC - 054 - A & B & C.
ABC - 017 - A & B & C.
ABC - 029 - A & B & C.
Java baut ein Dreieck
ABC - 022 - A & B & C.
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
ABC - 019 - A & B & C.
ABC - 020 - A & B & C.
ABC - 030 - A & B & C.
ABC - 127 - A & B & C.
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
ABC - 007 - A & B & C.
ABC - 132 - A & B & C.
ABC - 026 - A & B & C.
ABC - 014 - A & B & C.
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
[Java] Beim Schreiben der Quelle ... Memorandum ①
ABC - 016 - A & B & C.
ABC - 011-A & B & C.
ABC - 031 - A & B & C.
ABC - 021 - A & B & C.
ABC - 025 - A & B & C.
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
Ich habe versucht, C # zu kauen (Dateien lesen und schreiben)
ABC - 024 - A & B & C.
ABC - 027 - A & B & C.
ABC - 080 - A & B & C.
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Aktualisieren Sie Ihre Java-Kenntnisse, indem Sie einen gRPC-Server in Java schreiben (1)
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, eine PDF-Datei mit Java part2 zu verarbeiten
Hinweise zu Java GC
ABC - 129 - A & B & C & D.
ABC - 133 - A & B & C & D.
Erstellen Sie eine Java-Methode [Memo] [java11]
ABC - 122 - A & B & C & D.
Schnellstes Primzahl-Beurteilungsprogramm C # Java C ++
[Java] Erstellen Sie eine temporäre Datei
Ich habe Drools (Java, InputStream) ausprobiert.
Suchen Sie eine Teilmenge in Java