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

Grundlegende Java-Interviewfragen (1)

(*-*)浩
(*-*)浩Original
2019-11-30 13:25:052156Durchsuche

Grundlegende Java-Interviewfragen (1)

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

Es kann mehrere Klassen geben, es kann jedoch nur eine öffentliche Klasse geben, und der Name der öffentlichen Klasse muss mit dem Dateinamen übereinstimmen. (Empfohlene Studie: Java-Interviewfragen)

2. Hat Java goto?

Ein reserviertes Wort in Java, das derzeit nicht in Java vorkommt verwenden.

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

& und && können als logische UND-Operatoren verwendet werden, was ein logisches UND (und) anzeigt. Wenn die Ergebnisse der Ausdrücke auf beiden Seiten des Operators wahr sind, ist das gesamte Operationsergebnis wahr Solange eine der Parteien falsch ist, ist das Ergebnis falsch.

&& hat auch die Funktion des Kurzschließens, das heißt, wenn der erste Ausdruck falsch ist, wird der zweite Ausdruck nicht mehr ausgewertet, zum Beispiel 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 Bitoperator verwendet werden, wenn & Wenn die Ausdrücke auf beiden Seiten des Operators nicht vom booleschen Typ sind, stellt & eine bitweise UND-Operation dar. Wir verwenden normalerweise 0x0f, um die &-Operation mit einer Ganzzahl durchzuführen, um beispielsweise das Ergebnis zu erhalten von 0x31 & 0x0f ist 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 herausspringen.

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;
   }
}

Außerdem verwende ich persönlich normalerweise keine Beschriftungen, sondern lasse das Ergebnis des bedingten Ausdrucks der äußeren Schleife von der inneren Schleife beeinflussen Bedingter Ausdruck. Steuerung des Schleifenkörpercodes, um beispielsweise eine Zahl in einem zweidimensionalen Array zu finden.

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;
              }
        }
}

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

In switch (In e) kann e nur eine ganze Zahl sein Ausdruck oder Aufzählungskonstante (größere Schriftart) Der Integer-Ausdruck kann der int-Basistyp oder der Integer-Verpackungstyp sein, da Byte, Short und Char implizit in int konvertiert werden können möglich.

Offensichtlich entsprechen weder die Typen long noch String der Syntax von switch und können nicht implizit in den Typ int konvertiert werden, sodass sie nicht in switch-Anweisungen verwendet werden können. (Nach Java1.7 kann es für den String-Typ sowie für char byte short int und deren Verpackungsklassen verwendet werden.)

6 short s1= 1; s1+1 ist int-Typ, und die linke Seite des Gleichheitszeichens muss erzwungen werden) 1 + 1; Was ist falsch? 🎜>Für short s1= 1; s1 = s1 + 1; da der Typ des Ausdrucks während der s1+1-Operation automatisch heraufgestuft wird, wird der Compiler dies melden Der Typ muss fehlerhaft umgewandelt werden.


Kurz gesagt: s1= 1; s1 += 1; da += ein von der Java-Sprache angegebener Operator ist, wird er vom Java-Compiler speziell behandelt, damit er korrekt kompiliert werden kann.


Kann ein chinesisches Zeichen in einer char-Variablen gespeichert werden?

Char-Typ-Variablen werden zum Speichern von Unicode-kodierten Zeichen verwendet Der Codierungszeichensatz enthält chinesische Zeichen, daher können chinesische Zeichen natürlich in char-Variablen gespeichert werden. 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-Codierung belegt zwei Bytes, daher belegt die Variable vom Typ char auch zwei Bytes.


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

2<< weil Das Verschieben einer Zahl um n Bits nach links entspricht der Multiplikation von 2 mit 8. Um 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 am effizientesten. Daher ist 2<<3 der effizienteste Weg, um herauszufinden, was 2 mal 8 ist.


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("");

Beim Ausführen der folgenden Anweisung wird jedoch kompiliert:

a.append(" broken!");

Jemand definiert eine Methode. Wenn Sie Parameter übergeben, möchten Sie möglicherweise das folgende Formular verwenden, um zu verhindern, dass die Methode das übergebene Parameterobjekt ändert:

public void method(final  StringBuffer param){
}

Eigentlich ist dies nicht möglich. Sie können den folgenden Code trotzdem hinzufügen die Methode zum Ändern des Parameterobjekts :

 param.append("a");

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