Heim  >  Artikel  >  Java  >  Grundlegende Java-Interviewfragen (1)

Grundlegende Java-Interviewfragen (1)

王林
王林Original
2020-08-24 16:08:322301Durchsuche

Grundlegende Java-Interviewfragen (1)

1. Kann eine „.java“-Quelldatei mehrere Klassen enthalten (keine internen Klassen)? Welche Einschränkungen gibt es?

Sie können mehrere Klassen haben, aber es kann nur eine öffentliche Klasse geben, und der Name der öffentlichen Klasse muss mit dem Dateinamen übereinstimmen.

(Weitere Empfehlungen für Interviewfragen: Java-Interviewfragen und -antworten)

2. Hat Java Goto?

Reservierte Wörter in Java werden derzeit nicht in Java verwendet.

3. Sprechen Sie über den Unterschied zwischen & und &&.

& und && können beide als logische UND-Operatoren verwendet werden und stellen logisches UND (und) dar. Wenn die Ergebnisse der Ausdrücke auf beiden Seiten des Operators wahr sind, ist das gesamte Operationsergebnis wahr, solange nur eine Seite wahr ist ist false , das Ergebnis ist falsch.

&& hat auch die Funktion des Kurzschließens, das heißt, wenn der erste Ausdruck falsch ist, wird der zweite Ausdruck nicht mehr ausgewertet. Beispielsweise für if(str!= null&& !str.equals(s)). Ausdruck: Wenn str null ist, wird der folgende Ausdruck nicht ausgeführt, sodass keine NullPointerException auftritt. Wenn && in & geändert wird, wird eine NullPointerException ausgelöst. If(x==33 ++y>0) y wird wachsen, If(x==33 && ++y>0) wird nicht wachsen

& kann auch als bitweiser Operator verwendet werden, wenn beide Seiten des &-Operator Wenn der Ausdruck kein boolescher Typ ist und eine bitweise UND-Operation darstellt, verwenden wir normalerweise 0x0f, um die &-Operation mit einer Ganzzahl durchzuführen, um die niedrigsten 4 Bits der Ganzzahl zu erhalten. Das Ergebnis von 0x31 ist beispielsweise & 0x0f 0x01.

4. Wie komme ich aus den aktuellen mehrfach verschachtelten Schleifen in JAVA heraus?

Wenn Sie in Java aus mehreren Schleifen ausbrechen möchten, können Sie vor der äußeren Schleifenanweisung eine Beschriftung definieren und dann die break-Anweisung mit der Beschriftung im Code des inneren Schleifenkörpers verwenden, um aus der äußeren Schleife zu springen .

Zum Beispiel:

for(int i=0;i<10;i++){
   for(intj=0;j<10;j++){
       System.out.println(“i=” + i + “,j=” + j);
       if(j == 5) break ok;
   }
}

Darüber hinaus verwende ich persönlich normalerweise keine Beschriftungen, sondern lasse das Ergebnis des bedingten Ausdrucks der äußeren Schleife durch den Code des inneren Schleifenkörpers steuern, beispielsweise in einem zweidimensionalen Array. Finden Sie a Nummer.

int arr[][] ={{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length&&!found;i++)       {
        for(intj=0;j<arr[i].length;j++){
              System.out.println(“i=” + i + “,j=” + j);
              if(arr[i][j] ==5) {
                      found =true;
                      break;
              }
        }
}

(Empfohlenes Lernen: Einführung in das Java-Tutorial)

5. Kann die Switch-Anweisung auf Byte wirken, kann sie auf Long wirken, kann sie auf String wirken?

In switch (e), e Es kann nur ein Integer-Ausdruck oder eine Aufzählungskonstante (größere Schriftart) sein. Der Integer-Ausdruck kann der Integer-Wrapper-Typ sein, da Byte, Short und Char implizit in Int konvertiert werden können auch möglich. Offensichtlich entsprechen weder der Long- noch der String-Typ der Switch-Syntax und können nicht implizit in den Int-Typ konvertiert werden, sodass sie nicht in Switch-Anweisungen verwendet werden können.

Ob die Switch-Anweisung auf String verwendet werden kann, ist falsch. Java unterstützt diese Schreibmethode bereits nach Java 1.7!

6. short s1= 1; s1 = (s1+1 ist vom Typ int, und die linke Seite des Gleichheitszeichens muss erzwungen werden) 1 + 1; s1 += 1 ;Was ist los? (Nichts falsch)

Für kurz s1 = s1 + 1; Da der Ausdruckstyp während der s1+1-Operation automatisch heraufgestuft wird, ist das Ergebnis der Typ int dem Kurztyp s1 zugewiesen, meldet der Compiler einen Fehler, der eine Typumwandlung erfordert.

Für kurz s1= 1; s1 += 1; da += ein von der Java-Sprache angegebener Operator ist, führt der Java-Compiler eine spezielle Verarbeitung durch, damit er korrekt kompiliert werden kann.

7. Kann ein chinesisches Zeichen in einer Variablen vom Typ „char“ gespeichert werden? Typvariablen können chinesische Schriftzeichen speichern. Wenn jedoch ein spezielles chinesisches Zeichen nicht im Zeichensatz der Unicode-Codierung enthalten ist, kann das spezielle chinesische Zeichen nicht in dieser char-Variablen gespeichert werden. Zusätzliche Erklärung: Die Unicode-Kodierung belegt zwei Bytes, daher belegen Variablen vom Typ char ebenfalls zwei Bytes.

8. Verwenden Sie die effizienteste Methode, um 2 mal 8 zu berechnen?

2<< Um also eine Zahl mit 8 zu multiplizieren, müssen Sie sie nur um 3 Bits nach links verschieben. Bitoperationen werden direkt von der CPU unterstützt und sind daher die effizienteste Methode, um herauszufinden, wie viel 2 ist mal 8 ist gleich 2<<3 .

9. Kann die Referenz oder das referenzierte Objekt nicht geändert werden, wenn das Schlüsselwort final zum Ändern einer Variablen verwendet wird?

Wenn Sie das Schlüsselwort final zum Ändern einer Variablen verwenden, bedeutet dies, dass die Referenzvariable nicht geändert werden kann, der Inhalt des Objekts, auf das die Referenzvariable zeigt, jedoch dennoch geändert werden kann. Zum Beispiel für die folgende Anweisung:

finalStringBuffer a=new StringBuffer("immutable");

Beim Ausführen der folgenden Anweisung wird ein Fehler bei der Kompilierung gemeldet:

a=new StringBuffer("");

Bei der Ausführung der folgenden Anweisung wird jedoch kompiliert:

a.append(" broken!");

Wenn jemand die Parameter einer Methode definiert, wird er Möglicherweise möchten Sie das folgende Formular verwenden:

public void method(final  StringBuffer param){
}

Tatsächlich ist dies nicht möglich. Sie können der Methode dennoch den folgenden Code hinzufügen, um das Parameterobjekt zu ändern:

param.append("a");

(Lernvideo Empfehlung:

Java-Kurs

) 10. Was ist der Unterschied zwischen statischen Variablen und Instanzvariablen?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class VariantTest{
        publicstatic int staticVar = 0;
        publicint instanceVar = 0;
        publicVariantTest(){
              staticVar++;
              instanceVar++;
              System.out.println(staticVar +instanceVar);
        }
}

Das obige ist der detaillierte Inhalt vonGrundlegende Java-Interviewfragen (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn