Ein Amateurprogrammierer, der Java nicht mag, versucht "10 Fragen zu lösen, um festzustellen, ob er ein Java-Programmierer ist".

Einführung

Wie Sie aus früheren Beiträgen sehen können, verwende ich normalerweise C ++ und Ruby Und wie Sie dem Titel entnehmen können, mag ich Java ** nicht sehr ** Der Grund, warum ich es hasse, ist, dass es schwierig war, das Entwurfsmuster zu verstehen, weil es lange im Paket oder im Namespace war. Es kann auch anfänglichen Widerstand geben, wenn eine objektorientierte Sprache aus der C-Sprache berührt wird Perl ist also besser für Sex geeignet und mit dem aktuellen Ruby verbunden (Perl-Stil und einfach zu schreiben) Es ist so, aber ich habe Java oft berührt und ich lese oft in Java geschriebene Quellen. ** Ich habe getestet, wie gut ich Java verstehe ** Die für den Test verwendete Seite ist die folgende Site 10 Fragen, um festzustellen, ob Sie ein Java-Programmierer sind

Problem

  1. Was ist der Unterschied zwischen dem Operator == und der Methode equals?
  2. Erläutern Sie den Unterschied zwischen der Verkettung von Zeichenfolgen mit dem Operator + und der Verkettung mit StringBuilder.
  3. Was ist der Hauptzweck der Verwendung generischer Typen wie List ?
  4. Unter welchen Hauptbedingungen wird ein Objekt mit Müll gesammelt (GC)?
  5. Erläutern Sie den Unterschied zwischen aktivierten und nicht aktivierten Ausnahmen in Bezug auf Typ und Ausnahmebehandlung.
  6. Erläutern Sie den Hauptgrund dafür, dass eine Entwurfsrichtlinie auf ein Feld verweist, indem Sie den Feldzugriffsmodifikator privat machen und eine Getter / Setter-Methode bereitstellen.
  7. In welchen Hauptsituationen tritt eine NullPointerException auf?
  8. Was ist der Unterschied zwischen Überlastung und Übersteuerung?
  9. Was ist ein Konstruktor?
  10. Erläutern Sie einen Zweck der Verwendung der Schnittstelle

Meine Antwort

"==" Ist ** ein Vergleich, ob die Klassen gleich sind **, und "gleich" ist ** ein Vergleich, ob die internen Daten (gespeicherte Zeichen für String) gleich sind **. In Ruby ist "==" im Grunde dasselbe wie Javas "gleich". 2. "+" ** Erstellt einen neuen String neu, der zwei String-Klassen kombiniert **. StringBuilder ist eine Klasse, die erweitert und verkleinert werden kann. ** Bei Verbindung mit StringBuilder werden Zeichen zu sich selbst erweitert **. Ein Bild wie der Unterschied zwischen zerstörungsfrei und destruktiv in Ruby 3. ** Um es mit verschiedenen Typen (Klassen) verwenden zu können **. Zum Beispiel ist es unpraktisch, dass es int unterstützt, aber nicht float. Das bedeutet nicht, dass es in Ordnung ist, jede Klasse zu definieren, was diese Situation löst. Ich bin ein C ++ - Programmierer und frage mich, ob dies korrekt ist 4. Wann wird die angegebene Breite überschritten, wenn die Speicherzuordnung abgeschlossen ist? ** Ich weiß es erst zum Zeitpunkt ** 5. ** Ich kenne die aktivierten und deaktivierten Ausnahmen nicht, weil ich den Namen selbst nicht gehört habe ** 6. ** Weil ich nicht möchte, dass die Klasse unerwartete Daten verwendet **. Wenn beispielsweise die MyString-Klasse, die die Anzahl der Zeichen und gespeicherten Zeichen enthält, erfüllt ist, kann das gleichzeitige Schreiben der Anzahl der Zeichen und gespeicherten Zeichen zu menschlichen Fehlern führen, bei denen die Daten voneinander inkonsistent sind. Daher muss der Klassenbenutzer bei Verwendung der Setter-Klasse keine detaillierten Operationen kennen, indem er Zeichen speichert und gleichzeitig die Länge der Zeichenfolge ändert. 7. ** Zum Beispiel, wenn auf Null verwiesen wird **, wenn 1 + Null ausgeführt wird usw. Es ist auch Ruby. 8. Überladung ist ** das Erstellen einer Methode mit demselben Namen mit unterschiedlichen Argumenttypen und -nummern in derselben Klasse **. Überladung überschreibt ** eine von der übergeordneten Klasse geerbte Methode **. Ich sage es, ohne zu wissen, warum die Definition überladen ist (ich habe das Gefühl, sie zu überschreiben). 9. ** Erster Prozess beim Erstellen einer Klasse **, Hauptsächlich Initialisierungsprozess 10. ** In Java, wo Mehrfachvererbung nicht zulässig ist, können Methoden in der Schnittstelle von mehreren Klassen ohne übergeordnete Klasse gemeinsam genutzt werden. ** Dies macht es für das Polymorphismus-Design geeignet

abschließend

Ich sagte, ich mag Java nicht, aber ich habe einige grundlegende Probleme gelöst Aber es ist nur oberflächliches Wissen, also ist es wahrscheinlich ganz falsch. Freundliche Java-Programmierer, die bisher gesehen haben, wenn Sie Zeit haben, geben Sie mir bitte einen Bewertungskommentar.

Recommended Posts

Ein Amateurprogrammierer, der Java nicht mag, versucht "10 Fragen zu lösen, um festzustellen, ob er ein Java-Programmierer ist".
Ein Ingenieur, der Java nicht versteht, ging zu JJUG CCC.