Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen

Vorwort

Normalerweise entwickle ich in C #, aber ich habe noch keine Schnittstelle für C # in der API, sodass ich mit der Entwicklung in Java begonnen habe. Ich habe Java nicht so sehr berührt, deshalb habe ich versucht, "xxxx" in C # als "xxxx" in Java zusammenzufassen. Es konzentriert sich auf die reservierten Wörter und Implementierungsmethoden, die ich oft benutze. Daher werden nicht alle Unterschiede abgedeckt.

Unterschiede zwischen C # und Java reservierten Wörtern und Implementierungsmethoden

Unterschied in reservierten Worten

Ich habe die Unterschiede zwischen reservierten Wörtern in C # und Java und die Punkte zusammengefasst, die sich nicht ändern. Vergleichen wir dieselben und ähnliche Elemente nebeneinander.

Unterschied C# Java Bemerkungen
namespace package
using import
Keiner class class
: extends Klassenvererbung
Keiner interface interface
Keiner abstract abstract
virtual Keiner Wenn die Funktion am Vererbungsziel überschrieben werden soll, wird C.#はvirtualを付与、JavaはKeiner
override @Override C#Ist in der Definition enthalten, aber Java ist eine Anmerkung(C#Attribut, Attribut)
readonly final Schreibgeschütztes Feld
const final Konstante
sealed final Klassenvererbung verboten, Java auch als Funktionsüberschreibung verboten
Keiner Enum Enum Aufzählungstyp
struct Keiner Struktur

Java hatte nicht "struct", "virtual". Es scheint kein Problem zu geben, da "struct" so durch class ersetzt werden kann, aber ohne "virtual" scheint es ein wenig mühsam zu sein. Stöbern Sie für "virtuell" am Ende der Seite mit dem Titel unten. ・ "C # virtuell und Java final"

Außerdem enthielt Javas "final" mehrere C # -Funktionen. Nicht nur das, es gibt auch nur Java-Verwendung, daher werde ich diesen Unterschied am Ende der Seite mit dem Titel unten untersuchen. ・ "Unterschiede in der konstanten Deklaration und Einstellungsmethode"

Unterschied in der Montagemethode

Ich habe versucht, die Implementierungsmethode in C #, die Implementierungsmethode in Java und die Implementierungsmethode, die nur in beiden zu finden sind, zusammenzufassen. Vergleichen wir dieselben Elemente, von denen ich dachte, dass sie nebeneinander ähnlich sind.

Was du machen willst C# Java
Attribut selbst gemacht Vererbung von Attributen @Klassendefinition in der Schnittstelle
Erweiterungsmethode public static class Keiner
Standardimplementierung der Schnittstelle ~~Keiner~~
C#8.0 (.NET Core 3.0)Fügen Sie mit hinzu
Schnittstelle erben und standardmäßig Mitglieder definieren
Automatische Freigabe von Ressourcen using(Stream stream = new Stream()) try-with-resources
Geben Sie Parametereinschränkungen ein where T: int <T extends Number>
Oben Beispiel)void Test<T>(T arg) void Test<T>(T arg) where T : int <T extends Number> void Test(T arg)
Null-tolerante Deklaration Nullable<T>,T? Optional<T>
Lambda-Stil ()=>{ } ()->{ }
Kein Rückrufargument Action Runnable
Gleich wie oben 1 Argument Action<T> Consumer<T>
Gleich wie oben 2 Argumente Action<T1,T2> BiConsumer<T,U>(Bis zu 2 Argumente)
Gleich wie oben Es gibt einen Rückgabewert Function<R> Supplier<T>
~~API-SpezifikationFunktionsschnittstelleKeine Grenze zu sehen~~
Wie oben, 1 Argument, mit Rückgabewert Function<T,R> Function<T,R>
Wie oben, 2 Argumente mit Rückgabewert Function<T1,T2,R> BiFunction<T,U,R>(Bis zu 2 Argumente)

In Bezug auf die diesmal aufgeführten Funktionen wurde festgestellt, dass sowohl C # als auch Java dieselben Funktionen haben, obwohl die Benutzerfreundlichkeit unterschiedlich ist.

Wie Sie im Kommentarbereich ausgeführt haben, wurde C # seit C # 8.0 die Standardimplementierungsfunktion der Schnittstelle hinzugefügt. Ich war verwirrt über Abstract und Interface und habe es in letzterem implementiert, aber ich bin sicher, dass es Leute gibt, die dieselbe Implementierung im Vererbungsziel haben. ~~ Ich bin ~~ Ich möchte das auf jeden Fall nutzen.

Auch die Verwendbarkeit von "Action" und "Function" in C #, sogenannte Callbacks, scheint ganz anders zu sein. Stöbern Sie für "Rückruf" am Ende der Seite mit dem Titel unten. ・ Unterschiede bei der Verwendung von Rückrufen

Tauchen Sie ein in die Ähnlichkeiten und Unterschiede zwischen C # und Java

Wir werden uns mit den drei Punkten befassen, die unter "Unterschiede in reservierten Wörtern" und "Unterschiede in den Implementierungsmethoden" aufgeführt sind.

C # virtuell und Java final

In C # aktiviert "virtuell" das Überschreiben (um genau zu sein als virtuelle Methode implementiert), und Java verbietet das Überschreiben mit "final". Mit anderen Worten, wenn Sie einer Java-Funktion nicht "final" hinzufügen, wird sie immer als "virtuell" im Sinne von C # implementiert. Es wurde überschrieben, bevor ich es wusste! ?? Wenn Sie nicht in einer solchen Situation sein möchten, sollten Sie auf jeden Fall "final" hinzufügen. ..

Unterschiede in der Verwendung von Rückrufen

Der Unterschied zwischen C # - und Java-Rückrufen ist ungefähr so. Wenn Sie diesen Unterschied verstehen, werden Sie nicht durch C # und Java verwechselt.

※1 Die in diesem Artikel erwähnten Java-Rückrufe können nur Referenztypen als Argumente verwenden. Daher kann Java im Gegensatz zu C # keinen numerischen Typ als Argument verwenden. ~~ Ich war verwirrt, weil ich den Wert nicht einstellen konnte ~~ Stattdessen gibt es einen Rückruf für den numerischen Typ, der durch den folgenden Namen definiert wird. Verwenden Sie diesen. ・ Verbraucher "Numerischer Typ" ・ Obj "Numerischer Typ" Verbraucher ・ "Numerische Funktion" ・ Zur Funktion "Numerischer Typ" ・ Zu "Numerischer Typ" BiFuction

Unterschiede in der konstanten Deklaration und Einstellungsmethode

Wir haben die Unterschiede zusammengefasst, wenn C # "const", "readonly" und Java "final" als Konstanten und schreibgeschützt verwendet werden.

Konstante Deklaration, Zuweisungsmethode const readonly final
Deklaration im konstanten Feld
Zuordnung zu einem anderen konstanten Feld als dem deklarierten Ort × 〇 ※1 ×
Deklaration mit lokalen Variablen ×
Andere Zuordnung als der Deklarationsspeicherort in der lokalen Variablen × ×
Gewähren Sie dem Argument × ×
Typbeschränkungen zum Zeitpunkt der Deklaration Ja * 2 Keiner Keiner

Anders als oben ist es der Funktion "final" untersagt, sie neu zuzuweisen, wie im Kommentar ausgeführt. Da C # grundsätzlich keine anderen Zuweisungen als am Deklarationsort vornehmen kann, gibt es keine entsprechende Funktion. Wenn Sie es erzwingen, ist es so etwas wie "schreibgeschützt", das auch mit lokalen Variablen deklariert werden kann? Natürlich gibt es keine solche Funktion, also möchte ich sie definitiv in C #.

Referenzierte Seite

Schließlich

Ich habe gehört, dass C # und Java ähnlich sind, weil sie dieselbe Sprachbasis haben. Als ich recherchierte, hatte ich das Gefühl, dass viele der reservierten Wörter gleich waren und dass sie sicherlich ähnlich waren. Darüber hinaus gab es Unterschiede, die ich nicht bemerkte, wenn ich den Code nicht tatsächlich schrieb (kleine Unterschiede wie das Verwechseln der reservierten Wörter). Daher war es mir wichtig, nicht nur Wissen zu sammeln, sondern auch auszugeben. Obwohl es auf ähnliche Weise geschrieben ist, verhält es sich möglicherweise anders. Daher möchte ich vermeiden, es anzupassen, wenn ein Fehler auftritt.

Vor allem auch Informationsaktualisierungen. .. Vielen Dank an alle, die darauf hingewiesen haben.

Recommended Posts

Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
Unterschiede zwischen "Anfänger" Java und Kotlin
Unterschied zwischen Java, C # und JavaScript (wie man den Grad der Fettleibigkeit findet)
Unterschiede zwischen Java und .NET Framework
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
Lassen Sie uns die Unterschiede zwischen Java-Teilzeichenfolgen und C # -Substrings und deren Portierung untersuchen.
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
[Java] Verstehe den Unterschied zwischen List und Set
Ein Hinweis zu den Unterschieden zwischen Schnittstellen und abstrakten Klassen in Java
Organisieren Sie den Unterschied im Schreibkomfort zwischen dem Java-Lambda-Ausdruck und dem Kotlin-Lambda-Ausdruck.
Java-Sprache aus der Sicht von Kotlin und C #
[Java] Unterschied zwischen == und gleich
Unterschiede zwischen IndexOutOfBoundsException und ArrayIndexOutOfBoundsException
C # und Java überschreiben Story
[Java Bronze-Lernen] Unterschied zwischen Kapselung, Ausblenden von Daten und Ausblenden von Informationen
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
[Java] Unterschied zwischen Hashmap und HashTable
Eine Person, die C ++ schreibt, hat versucht, Java zu schreiben
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Beziehung zwischen H2DB und JDBC
[Java] Unterschied zwischen Array und ArrayList
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
Mit Java verschlüsseln und mit C # entschlüsseln
[Java] Unterschied zwischen Länge, Länge () und Größe ()
Die Beziehung zwischen strenger Java-Datumsprüfung und Sommerzeit
Informationen zur Beziehung zwischen dem Java String Equality Operator (==) und der Initialisierung. Anfänger
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
[Java] Was ist der Unterschied zwischen Form, Entität und dto? [Bohne]
Konvertierung zwischen Kotlin nullable und Java Optional
Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren
Unterschied zwischen final und Immutable in Java
Java-Kern: HotSpot-Compiler und C-Heap
Verknüpfen Sie Java- und C ++ - Code mit SWIG
Unterschied zwischen Vorwort und Postfix von Operatoren
Der Inhalt des Rückgabewerts von executeBatch unterscheidet sich zwischen 11g und 12c
[Für Anfänger] Unterschied zwischen Java und Kotlin
Interpretieren Sie die Beziehung zwischen Java-Methoden und Argumenten in biochemischen Formeln
[Java] Lesen und Schreiben von Dateien mit OpenCSV
Lassen Sie uns eine grobe Vorstellung von den Unterschieden zwischen Protokollen, Klassen und Strukturen bekommen!
[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)
[Java 7] Teilen Sie die Java-Liste und führen Sie den Prozess aus
Über den Unterschied zwischen irb und pry
Die Geschichte des Schreibens von Java in Emacs
Unterschied zwischen Ruby-Zeichenketten und Symbolen [Anfänger]
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Verstehen Sie den Unterschied zwischen int und Integer und BigInteger in Java und float und double
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
Die Richtung von Java in "C ++ Design and Evolution"
Von Java nach C und von C nach Java in Android Studio
Lesen und Schreiben von GZIP-Dateien in Java
Unterschied zwischen int und Integer in Java
HashMap # putAll () verhält sich zwischen Java 7 und Java 8 unterschiedlich