国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Sind st1 und st2 gleich?

" >Sind st1 und st2 gleich?

到底創(chuàng)建了幾個(gè)對(duì)象? " >到底創(chuàng)建了幾個(gè)對(duì)象?
st1和st2是否相等? " >st1和st2是否相等?
判斷一下st2和st3是否相等 " >判斷一下st2和st3是否相等
Heim Java JavaInterview Fragen 5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)

Aug 23, 2023 pm 02:49 PM
Java -Interviewfragen

Werfen wir einen Blick auf diesen Artikel über 5 Interviewfragen in der Kategorie Java StringJava String類的 5 道面試題,這五道題,我自己在面試過(guò)程中親身經(jīng)歷過(guò)幾道題目,本篇就帶你了解這些題的答案為什么是這樣。

st1和st2是否相等?

public class Demo2_String { 
  public static void main(String[] args) {
    String st1 = "abc";
    String st2 = "abc";
    System.out.println(st1 == st2);
    System.out.println(st1.equals(st2));
  }
}

輸出結(jié)果:

  • 第一行:true
  • 第二行:true

分析

先看第一個(gè)打印語(yǔ)句,在Java中==這個(gè)符號(hào)是比較運(yùn)算符,它可以基本數(shù)據(jù)類型和引用數(shù)據(jù)類型是否相等,如果是基本數(shù)據(jù)類型,==比較的是值是否相等,如果是引用數(shù)據(jù)類型,==. Ich habe pers?nlich mehrere dieser fünf Fragen w?hrend des Interviewprozesses erlebt. Dieser Artikel wird Ihnen helfen zu verstehen, warum die Antworten auf diese Fragen so sind.

Sind st1 und st2 gleich?

String st1 = new String(“abc”);
??Ausgabeergebnis: ??
  • Erste Zeile: true
  • Zweite Zeile: true
?? Analyse????Erster Blick auf die erste Druckanweisung in Java ==Dieses Symbol ist ein Vergleichsoperator, der bestimmen kann, ob der Basisdatentyp und der Referenzdatentyp gleich sind. Wenn es sich um einen Basisdatentyp handelt, == vergleicht, ob die Werte gleich sind. Wenn es sich um Referenzdatentypen handelt, == vergleicht, ob die Speicheradressen von zwei Objekte sind gleich. ????Strings geh?ren nicht zu den 8 Grunddatentypen. Oben wird ?abc“ gleichzeitig den beiden String-Objekten st1 und st2 zugewiesen, die auf dieselbe Adresse verweisen 1. Das Ausgabeergebnis des ==-Vergleichs in einer print-Anweisung ist wahr Dann schauen wir uns den Vergleich von ?equals“ in der zweiten print-Anweisung an. Wir wissen, dass ?equals“ eine Methode der übergeordneten Klasse ?Object“ ist und diese ?equals“-Methode in der String-Klasse überschrieben wird. ??????

在JDK API 1.6文檔中找到String類下的equals方法,點(diǎn)擊進(jìn)去可以看到這么一句話“將此字符串與指定的對(duì)象比較。當(dāng)且僅當(dāng)該參數(shù)不為null,并且是與此對(duì)象表示相同字符序列的String 對(duì)象時(shí),結(jié)果才為 true?!?注意這個(gè)相同字符序列,在后面介紹的比較兩個(gè)數(shù)組,列表,字典是否相等,都是這個(gè)邏輯去寫代碼實(shí)現(xiàn)。

由于st1和st2的值都是“abc”,兩者指向同一個(gè)對(duì)象,當(dāng)前字符序列相同,所以第二行打印結(jié)果也為true。下面我們來(lái)畫一個(gè)內(nèi)存圖來(lái)表示上面的代碼,看起來(lái)更加有說(shuō)服力。

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)

內(nèi)存過(guò)程大致如下:

1)運(yùn)行先編譯,然后當(dāng)前類Demo2_String.class文件加載進(jìn)入內(nèi)存的方法區(qū)

2)第二步,main方法壓入棧內(nèi)存

3)常量池創(chuàng)建一個(gè)“abc”對(duì)象,產(chǎn)生一個(gè)內(nèi)存地址

4)然后把“abc”內(nèi)存地址賦值給main方法里的成員變量st1,這個(gè)時(shí)候st1根據(jù)內(nèi)存地址,指向了常量池中的“abc”。

5)前面一篇提到,常量池有這個(gè)特點(diǎn),如果發(fā)現(xiàn)已經(jīng)存在,就不在創(chuàng)建重復(fù)的對(duì)象

6)運(yùn)行到代碼 Stringst2 =”abc”, 由于常量池存在“abc”,所以不會(huì)再創(chuàng)建,直接把“abc”內(nèi)存地址賦值給了st2

7)最后st1和st2都指向了內(nèi)存中同一個(gè)地址,所以兩者是完全相同的。

到底創(chuàng)建了幾個(gè)對(duì)象?

String st1 = new String(“abc”);

答案是:在內(nèi)存中創(chuàng)建兩個(gè)對(duì)象,一個(gè)在堆內(nèi)存,一個(gè)在常量池,堆內(nèi)存對(duì)象是常量池對(duì)象的一個(gè)拷貝副本。

分析

我們下面直接來(lái)一個(gè)內(nèi)存圖。

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)

當(dāng)我們看到了new這個(gè)關(guān)鍵字,就要想到,new出來(lái)的對(duì)象都是存儲(chǔ)在堆內(nèi)存。然后我們來(lái)解釋堆中對(duì)象為什么是常量池的對(duì)象的拷貝副本。

“abc”屬于字符串,字符串屬于常量,所以應(yīng)該在常量池中創(chuàng)建,所以第一個(gè)創(chuàng)建的對(duì)象就是在常量池里的“abc”。

第二個(gè)對(duì)象在堆內(nèi)存為啥是一個(gè)拷貝的副本呢,這個(gè)就需要在JDK API 1.6找到String(String original)這個(gè)構(gòu)造方法的注釋:初始化一個(gè)新創(chuàng)建的 String 對(duì)象,使其表示一個(gè)與參數(shù)相同的字符序列;換句話說(shuō),新創(chuàng)建的字符串是該參數(shù)字符串的副本。所以,答案就出來(lái)了,兩個(gè)對(duì)象。

st1和st2是否相等?

package string;
public class Demo2_String {
   public static void main(String[] args) {
     String st1 = new String("abc");
     String st2 = "abc";
     System.out.println(st1 == st2);
     System.out.println(st1.equals(st2));
   }
}

答案:false 和 true 由于有前面兩道題目?jī)?nèi)存分析的經(jīng)驗(yàn)和理論,所以,我能快速得出上面的答案。

==比較的st1和st2對(duì)象的內(nèi)存地址,由于st1指向的是堆內(nèi)存的地址,st2看到“abc”已經(jīng)在常量池存在,就不會(huì)再新建,所以st2指向了常量池的內(nèi)存地址,所以==判斷結(jié)果輸出false,兩者不相等。

第二個(gè)equals比較,比較是兩個(gè)字符串序列是否相等,由于就一個(gè)“abc”,所以完全相等。

內(nèi)存圖如下

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)

st1和st2是否相等?

public class Demo2_String { 
   public static void main(String[] args) {
     String st1 = "a" + "b" + "c";
     String st2 = "abc";
     System.out.println(st1 == st2);
     System.out.println(st1.equals(st2));
   }
}

答案是:true 和 true 分析:“a”,”b”,”c”三個(gè)本來(lái)就是字符串常量,進(jìn)行+符號(hào)拼接之后變成了“abc”,“abc”本身就是字符串常量(Java中有常量?jī)?yōu)化機(jī)制),所以常量池立馬會(huì)創(chuàng)建一個(gè)“abc”的字符串常量對(duì)象,在進(jìn)行st2=”abc”,這個(gè)時(shí)候,常量池存在“abc”,所以不再創(chuàng)建。所以,不管比較內(nèi)存地址還是比較字符串序列,都相等。

判斷一下st2和st3是否相等

public class Demo2_String {
 
   public static void main(String[] args) {
     String st1 = "ab";
     String st2 = "abc";
     String st3 = st1 + "c";
     System.out.println(st2 == st3);
     System.out.println(st2.equals(st3));
   }
}

答案:

  • falsefalse
  • true
true

Analyse

Die erste Antwort oben ist falsch, die zweite ist wahr und die zweite ist wahr. Wir k?nnen es leicht verstehen, weil einer der Vergleiche ?abc“ ist und der andere ?abc“ ist, der durch Splei?en erhalten wird, also der Gleichheitsvergleich , das ist die Ausgabe wahr, wir verstehen es sehr gut.

Warum das erste Urteil falsch ist, sind wir verwirrt. In ?hnlicher Weise erkl?ren wir im Folgenden anhand von API-Kommentaren und Speicherdiagrammen, warum dies nicht gleich ist.

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)?ffnen Sie zun?chst die Einführung von String in JDK API 1.6 und suchen Sie den Satz im Bild unten.

Der entscheidende Punkt ist der Satz im roten Kreis. Wir wissen, dass alle Daten und Zeichenfolgen der Pluszeichen-Operation (+) unterzogen werden und das Endergebnis eine gesplei?te neue Zeichenfolge ist. Was genau bewirkt die +-Operation? Empfohlen zum Lesen.

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort)Der obige Kommentar erkl?rt, dass das Prinzip dieses Splei?ens darin besteht, dass die StringBuilder- oder StringBuffer-Klasse und die darin enthaltene Append-Methode das Splei?en implementieren und dann toString () aufrufen, um das gesplei?te Objekt in ein String-Objekt umzuwandeln und schlie?lich die Adresse zuzuweisen des String-Objekts in eine Variable. Basierend auf diesem Verst?ndnis zeichnen wir ein Speicherdiagramm zur Analyse.

über den Speicherprozess

1) Der Konstantenpool erstellt das ?ab“-Objekt und weist es st1 zu, sodass st1 auf ?ab“ zeigt

2) Der Konstantenpool erstellt das ?abc“-Objekt und weist es zu zu st2, also zeigt st2 auf ?abc“

3) Da hier die + Splei?methode verwendet wird, besteht der dritte Schritt darin, die Append-Methode der StringBuffer-Klasse zu verwenden, um ?abc“ zu erhalten Beachten Sie, dass es sich nicht um ein String-Objekt handelt.

4) Die toString-Methode von Object wird aufgerufen, um das StringBuffer-Objekt in ein String-Objekt zu ersetzen.

5) Weisen Sie st3 das String-Objekt (0x0022) zu.????Das ==-Beurteilungsergebnis von st3 und st2 ist also nicht gleich, da die Speicheradressen der beiden Objekte unterschiedlich sind. ??

Zusammenfassung

Diese Interviewfrage erfordert die Beherrschung einiger Anmerkungen und Prinzipien in der JDK-API sowie der Speicherdiagrammanalyse, um die richtigen Ergebnisse zu erhalten. Ich gebe zu, dass mir das Zeichnen des Speicherdiagramms geholfen hat, das zu verstehen Antwort. Warum ist das so?

Das obige ist der detaillierte Inhalt von5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Interviewer: Allgemeine Anmerkungen und Ausführungssequenz von Spring Aop Interviewer: Allgemeine Anmerkungen und Ausführungssequenz von Spring Aop Aug 15, 2023 pm 04:32 PM

Sie müssen Spring kennen, also lassen Sie uns über die Reihenfolge aller Benachrichtigungen von Aop sprechen. Wie wirkt sich Spring Boot oder Spring Boot 2 auf die Ausführungsreihenfolge von Aop aus? Erz?hlen Sie uns von den Fallstricken, auf die Sie bei AOP gesto?en sind?

Interview mit einer bestimmten Gruppe: Wie sollten Sie das Problem beheben, wenn Sie online auf OOM sto?en? Wie kann man es l?sen? Welche Optionen? Interview mit einer bestimmten Gruppe: Wie sollten Sie das Problem beheben, wenn Sie online auf OOM sto?en? Wie kann man es l?sen? Welche Optionen? Aug 23, 2023 pm 02:34 PM

OOM bedeutet, dass im Programm eine Sicherheitslücke vorliegt, die durch den Code oder die JVM-Parameterkonfiguration verursacht werden kann. In diesem Artikel erfahren die Leser, wie sie Fehler beheben k?nnen, wenn ein Java-Prozess OOM ausl?st.

Die schriftlichen Testfragen von Ele.me scheinen einfach zu sein, aber sie verblüffen viele Leute Die schriftlichen Testfragen von Ele.me scheinen einfach zu sein, aber sie verblüffen viele Leute Aug 24, 2023 pm 03:29 PM

Untersch?tzen Sie nicht die schriftlichen Prüfungsfragen vieler Unternehmen. Es gibt Fallstricke, in die Sie versehentlich geraten k?nnen. Wenn Sie auf eine solche schriftliche Testfrage zu Zyklen sto?en, empfehle ich Ihnen, ruhig zu denken und Schritt für Schritt vorzugehen.

Letzte Woche hatte ich ein Vorstellungsgespr?ch bei XX Insurance und es war cool! ! ! Letzte Woche hatte ich ein Vorstellungsgespr?ch bei XX Insurance und es war cool! ! ! Aug 25, 2023 pm 03:44 PM

Letzte Woche ging ein Freund aus der Gruppe zu einem Interview mit Ping An Insurance. Das Ergebnis war etwas bedauerlich, aber ich hoffe, Sie lassen sich nicht entmutigen, im Grunde genommen alle Fragen, auf die Sie sto?en Das Interview kann durch Auswendiglernen der Interviewfragen gel?st werden, also arbeiten Sie bitte hart!

5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort) 5-String-Interviewfragen, weniger als 10 % der Leute k?nnen sie alle richtig beantworten! (mit Antwort) Aug 23, 2023 pm 02:49 PM

?In diesem Artikel werden fünf Interviewfragen zur Java-String-Klasse behandelt. Ich habe w?hrend des Interviewprozesses mehrere dieser fünf Fragen pers?nlich erlebt. Dieser Artikel wird Ihnen helfen zu verstehen, warum die Antworten auf diese Fragen so sind.

Anf?nger k?nnen auch mit BAT-Interviewern konkurrieren: CAS Anf?nger k?nnen auch mit BAT-Interviewern konkurrieren: CAS Aug 24, 2023 pm 03:09 PM

Das Extrakapitel der Java-Concurrent-Programming-Reihe, C A S (Compare and swap), ist nach wie vor in einem leicht verst?ndlichen Stil mit Bildern und Texten gehalten und erm?glicht den Lesern eine verrückte Konversation mit dem Interviewer.

Eine Frage, die in fast allen Java-Interviews gestellt wird: Sprechen Sie über den Unterschied zwischen ArrayList und LinkedList Eine Frage, die in fast allen Java-Interviews gestellt wird: Sprechen Sie über den Unterschied zwischen ArrayList und LinkedList Jul 26, 2023 pm 03:11 PM

Die Datenstruktur von Java steht im Mittelpunkt des Interviews. Jeder, der an einem Java-Interview teilgenommen hat, muss über einige Erfahrung verfügen. Wenn Interviewer solche Fragen stellen, m?chten sie oft überprüfen, ob Sie die zugrunde liegenden Strukturen h?ufig verwendeter Datentypen in Java studiert haben, anstatt einfach auf der Ebene des ?Wissens, wie man sie verwendet“ zu bleiben.

Interviewer: Erz?hlen Sie mir etwas über den Klassenladeprozess (10 Diagramme) Interviewer: Erz?hlen Sie mir etwas über den Klassenladeprozess (10 Diagramme) Aug 23, 2023 pm 03:05 PM

Wenn wir eine Klasse verwenden m?chten, müssen wir die Klasse über ClassLoader in den Speicher laden.

See all articles