1. In Java gibt es keine Goto -Aussage. Da die große Anzahl von GOTO -Aussagen die Lesbarkeit und Wartbarkeit des Programms verringert, hebt die Java -Sprache die Verwendung von GOTO ab. Gleichzeitig definiert die Java -Sprache GOTO immer noch als Schlüsselwort, um die Java -Sprache zu vermeiden, um die Verwirrung zu vermeiden, die GOTO selbst verwendet, aber keine Syntax definiert, sodass sie als "reservierte Wörter" bezeichnet wird.
2 Obwohl wahr, false und null in verschiedenen Farben in der IDE angezeigt werden, sind sie keine Schlüsselwörter, sondern "wörtliche Konstanten", genau wie ABC des String -Typs.
3 Versuchen Sie, $ zu vermeiden, wenn Sie einen Namen definieren, denn wenn der Compiler die .java-Datei kompiliert, wird "$" in einen Anschluss des Typs der oberen Ebene und am unteren Typen untergebracht. Siehe das folgende Beispiel:
Beim Kompilieren (Javac test3.java) wird dieser Code den folgenden Fehler melden
4 Unicode Escape -Zeichen werden sehr früh verarbeitet, bevor das Programm analysiert wird. Zum Beispiel:
Diese beiden Zeilen von Codekompilierungsfehlern treten im Programm auf. Diese beiden Unicode -Codes repräsentieren "Line Wrap" bzw. "Wagenrendite". Wenn der Compiler kompiliert, sieht der Code so aus:
5 Unicode-Code wird mit 16-Bit-Zeichen codiert und durch den Zeichen-Typ in Java dargestellt. Unicode hat sich nun auf eine Million Zeichen erweitert, und diejenigen, die die 16-Bit-Grenze überschreiten, werden zu ergänzenden Charakteren. Alle komplementären Zeichen können nicht durch Charakterkonstanten dargestellt werden.
6 Wenn kurz, Byte, char am Vorgang beteiligt ist, ist das Ergebnis int -Typ, nicht der gleiche wie der höhere Typ. Wenn die Variable vom Typ Byte, kurz und Byte ist, wenn sie eine Konstante aus der Kompilierungszeit zugewiesen wird und die Konstante den Wertebereich der Variablen nicht überschreitet, kann der Compiler eine implizite schrumpfende Umwandlung durchführen. Diese implizite Schrumpfkonvertierung ist sicher, da die Schrumpfkonvertierung nur für die Zuordnung von Variablen gilt, nicht für das Aufrufen von Methoden, d. H. Nicht für das Parameterübergang während der Methodenaufruf. (Weitere Informationen finden Sie im kleinen Problem mit der Konvertierung von Standardtypen in Java.)
7 Beachten Sie den Zeichentyp, der ein nicht signierter Typ ist. Daher muss die Konvertierung zwischen Char und Short oder CHAR und Byte unter Verwendung der Typumwandlung angezeigt werden. Die Konvertierung von Byte zu char zu einem erweiterten Schrumpfumbau ist etwas Besonderes, dh die Konvertierung wird zu Byte zu int zuerst erweitert und dann zu char schrumpfen.
8 In der erweiterten Umwandlung zwischen Ganzzahldaten wird der Operand, wenn der Operand vom Typ (nicht signiert) ist, eine nicht signierte Ausdehnung durchgeführt, wobei das Expansionsbit 0 beträgt. Wenn der Operand aus Byte, kurz oder int (signierter Typ) ist, wird die unterschriebene Ausdehnung durchgeführt, wobei das Ausdehnungsbit das Schilderbit des Variablens ist.
9 Die schrumpfende Umwandlung zwischen ganzzahligen Daten besteht einfach darin, die hohen Teile abzuschneiden und zu verwerfen, ohne eine andere Verarbeitung durchzuführen.
10 0,1+0,2 gleich 0,3.System.out.println ((doppelte) 0,1+ (doppelt) 0,2); Das Ausgabeergebnis dieser Aussage ist 0,300000000000000000004. Da Computer binäre Daten verwenden, um Daten zu speichern, und viele Dezimalstellen können nicht genau in binär dargestellt werden (tatsächlich sind die meisten Dezimalstellen ungefähr), genau wie die Verwendung von Dezimalerdezimalern nicht genau 1/3 darstellen. Die meisten schwimmenden Punkttypen speichern ihre Werte nur ungefähr in Computern und nicht genau als ganzzahlige Typen. Ein weiteres Beispiel ist eine tote Schleife: für (float f = 10.1f; f! = 11; f+= 0,1f) {}
11 Der Float -Typ kann 7 bis 8 signifikante Zahlen behalten, während der Doppelart 15 bis 16 signifikante Zahlen behalten kann. Wenn der Wert des INT -Typs oder des langen Typs mehr als die gültige Anzahl von Doppel- oder Schwimmer ist, gehen einige der niedrigsten signifikanten Wertbits verloren, was zum Genauigkeitsverlust führt. Zu diesem Zeitpunkt wird der aktuelle Rundungsmodus IEEE754 verwendet, um den schwimmenden Punktwert zu extrahieren, der dem Ganzzahlwert am nächsten liegt. Obwohl die Umwandlung von Ganzzahl in einen schwebenden Punkttyp eine erweiterte Umwandlung ist, tritt bei großer oder kleiner (der absolute Wert groß) ein bestimmter Genauigkeitsverlust auf.
12 Wie berechnet ich i ++ J? (Diese Frage ist in C/C ++ nicht sehr aussagekräftig), da C/C ++ von der Implementierung der Hardwarestruktur abhängt und die Ergebnisse in verschiedenen Umgebungen unterschiedlich sind. In Java ist dieses Ergebnis jedoch festgelegt und nicht von der Hardware -Umgebung und der Plattform betroffen, auf der es ausgeführt wird). Antwort: Gemäß den Gierregeln ist Front + + + besser als Rücken + +, und das Ergebnis ist (i ++) + J.
13 i ++ und ++ Ich sind zuerst +1 und dann zugewiesen. ++ i, es gibt nichts zu sagen; i ++, nehme j = i ++; Beispielsweise lautet die Implementierung auf der zugrunde liegenden Ebene: temp = i; i = i + 1; J = Temp; Also, i = 15; i = i ++; Das Ergebnis dieses Ausdrucks beträgt 15. (Weil nach dem Hinzufügen einer ein weiterer Zuordnung durchgeführt wird und sich von 16 auf 15 ändert)
14 +0 und -0 im variablen Speicher des Gleitpunkts Typ sind die Vorzeichenbits unterschiedlich. Wenn -0 und +0 an verwandten Operationen von schwimmenden Punkttypen (z. B. Teilung und Restoperationen) teilnehmen, können unterschiedliche Ergebnisse erzeugt werden.
15 Die Phasenabteilung und die Berechnung des Gleitpunkts der Phase und des Gleichgewichts unterscheiden sich von der Phasenabteilung und dem Gleichgewichtsberechnung von Ganzzahlen. Wenn der Divisor 0 ist, erzeugt der schwimmende Punktvorgang keine Arithmexception -Ausnahme.
16 Die String-Klasse ist eine nicht begehrte Klasse, und sobald ihre Objekte erstellt werden, können sie nicht zerstört werden. Die Methoden, die die Zeichensequenz in der String -Klasse zu ändern scheinen, geben das neu erstellte String -Objekt tatsächlich zurück, anstatt ihr eigenes Objekt zu ändern.
17 Da String-Objekte unveränderlich sind, sind sie mit Thread-Sicherheit und können für die Freigabe frei implementiert werden.
18 In der String -Klasse wird ein Zeichenarray (char []) verwendet, um die Zeichensequenz aufrechtzuerhalten. Die maximale Länge einer Schnur ist die maximale Länge des Zeichenarrays. Theoretisch ist die maximale Länge der maximale Wert des Typs vom Typ int, dh 2147483647. In der Praxis ist der maximale Wert, der erhalten werden kann, im Allgemeinen geringer als der theoretische Maximalwert.
19 Die Main () -Methode entspricht im Grunde genommen mit anderen Methoden im Hinblick auf das Leistungsverhalten. Es kann überladen, genannt, erbelt, versteckt oder durch andere Methoden versteckt oder Ausnahmen mit Typparametern geworfen werden. Wir können auch die Hauptmethode (oder eine andere Methode) durch Reflexion in einem Programm aufrufen.
20 Wenn die Namen von zwei oder mehr Methoden gleich sind und die Parameterliste unterschiedlich ist, stellen diese Methoden eine Überlastung aus. Die überladene Methode kann basierend auf dem Typ, der der Parameterliste und der Anzahl der Parameter entspricht, unterschieden werden. Der Name des Parameters, der Rückgabetyp der Methode, die Ausnahmliste und der Typ -Parameter der Methode können jedoch nicht als Bedingungen verwendet werden, um die überlastete Methode zu unterscheiden.
21 Welche Methode für den Anruf auswählen, die Bestellung lautet wie folgt:
22 Der wesentliche Unterschied zwischen Umschreibung und Versteck besteht darin, dass das Umschreiben dynamisch gebunden ist und die Mitglieder der relevanten Klasse auf der Grundlage des tatsächlichen Typs des Objekts bestimmt werden, auf das die Laufzeitreferenz angezeigt wird. Das Verstecken ist statisch gebunden, und die relevanten Mitglieder des Anrufs werden auf der Grundlage des zum Kompilierungszeit verwiesenen statischen Typs bestimmt. Mit anderen Worten, wenn die Unterklasse die Methode der übergeordneten Klasse überschreibt, wird die Unterklasse -Methode, wenn die Referenz der übergeordneten Klasse auf das untergeordnete Klassenobjekt zeigt, durch die Referenz der übergeordneten Klasse aufgerufen. Wenn die untergeordnete Klasse die Methode der übergeordneten Klasse (Mitgliedsvariable) verbirgt, wird die Methode der Elternklasse (Mitgliedsvariable) immer noch durch den Verweis auf die übergeordnete Klasse aufgerufen.
23 Der Konstruktor wird rekursiv bezeichnet. Der Konstruktor der Unterklasse ruft den Konstruktor der übergeordneten Klasse auf, bis der Konstruktor der Objektklasse aufgerufen wird.
24 Der Konstruktor erstellt kein Objekt. Der Konstruktor wird vom System aufgerufen, wenn ein Objekt mit neuem erstellt wird, und wird verwendet, um die Instanzelemente der Klasse zu initialisieren. In der Reihenfolge wird das Objekt zuerst erstellt und dann der Konstruktor aufgerufen. (Der Konstruktor erzeugt keine neuen Objekte)
25 Der Standardkonstruktor ist nicht leer. Dieser Konstruktor ruft den parameterlosen Konstruktor der übergeordneten Klasse auf und kann die Initialisierung von Instanzelementvariablen durchführen. Daher fordert der Standardkonstruktor zumindest den Konstruktor der übergeordneten Klasse auf, und er kann mehr Arbeit erledigen, einschließlich der Initialisierung und Instanzinitialisierungsblöcke der Instanzvariablen, die beide im Konstruktor ausgeführt werden.
26 Wenn die Arten der beiden Operanden des == oder!
27 In Java sind Arrays auch Klassen und Referenzvariablen, die von Arrays deklariert werden, weisen auf Objekte des Array -Typs hin. Alle Arrays erben die Objektklasse und implementieren die Schnittstellen von Java.lang.Clonable und Java.io.Serializable. Zu den Mitgliedern eines Arrays gehören die variable Länge (implizit existiert) und Mitglieder, die aus der Objektklasse geerbt wurden. Klonbar und serialisierbar sind zwei markierte Schnittstellen, und in diesen Schnittstellen werden keine Mitglieder ausdrücklich deklariert.
28 Die Schnittstelle ist ein vollständig abstraktes Design und kann nicht instanziiert werden. Der von A auf neue Art erstellte Entschuldigungstyp besteht darin, eine anonyme Klasse zu erstellen, die den Schnittstellentyp implementiert.
29 Wenn zwei Schnittstellen dieselbe Variable x deklarieren, tritt ein Kompilierungsfehler auf, wenn eine Schnittstelle gleichzeitig die beiden Schnittstellen erbt, oder eine bestimmte Klasse implementiert die beiden Schnittstellen gleichzeitig.
30 If the method m of the same name is declared in both interfaces, and the two methods do not constitute overload, when an interface can inherit the two interfaces at the same time, or a certain class can inherit the two interfaces at the same time, there must be a method signature so that the signature is a sub-signature of the two m method signatures at the same time, and in the return type of the method, there must be a type such that the type is an alternative Typ des Rückgabetyps der beiden m -Methoden.