91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      當前位置:首頁  >  技術干貨  > 在Java中比較字符串和等于比較

      在Java中比較字符串和等于比較

      來源:千鋒教育
      發(fā)布人:syq
      時間: 2022-09-30 14:52:46 1664520766

        今天我們將討論一個非常重要和有趣的話題,即比較對象與對象(比較字符串和等于)。那么在Java中,對象A究竟什么時候等于對象B呢?讓我們嘗試寫一個例子:控制臺輸出:假等待,停止。為什么這兩輛車不相等?我們?yōu)樗鼈兎峙淞讼嗤膶傩裕容^的結果是假的。答案很簡單。該運算符比較對象引用,而不是對象屬性。兩個對象甚至可能有 500 個具有相同值的字段,但比較它們?nèi)匀粫a(chǎn)生 false。

      11

        ==汽車1和汽車2指向兩個不同的對象,即指向兩個不同的地址。想象一下,你正在比較人們的情況。當然,在世界的某個地方,有一個人和你有同樣的名字,眼睛的顏色,年齡,身高,頭發(fā)顏色等。這讓你們在很多方面都很相似,但你們?nèi)匀徊皇请p胞胎——你們顯然不是同一個人。

        當我們使用它來比較兩個對象時,運算符使用大致相同的邏輯。但是,如果您需要程序使用不同的邏輯,該怎么辦?例如,假設您的程序執(zhí)行 DNA 分析。它比較了兩個人的遺傳密碼,并確定他們是否是雙胞胎。 控制臺輸出:false 我們得到相同的邏輯結果(因為我們沒有太大變化),但現(xiàn)在這個邏輯不好!畢竟,在現(xiàn)實生活中,DNA分析應該給我們100%的保證,我們有雙胞胎站在我們面前。但是我們的程序和操作員告訴我們相反的情況。我們?nèi)绾胃淖冞@種行為,并確保程序在DNA匹配時輸出正確的結果?Java對此有一種特殊的方法:==

      12

        ==等于().喜歡到字符串()方法,我們之前討論過,等于()屬于對象class — Java 中最重要的類,所有其他類派生自的類。但等于()不會自行更改程序的行為: 控制臺輸出: false 完全相同的結果,那么我們需要此方法做什么呢?:/一切都很簡單。這里的問題是,我們目前正在使用此方法,因為它是在

      13

        對象類。如果我們進入代碼對象類并查看方法的實現(xiàn),這就是我們將看到的:這就是程序行為沒有改變的原因!完全相同的運算符(用于比較引用)在

      14

        ==等于()方法對象類。但是這種方法的訣竅在于我們可以覆蓋它。覆蓋方式編寫自己的等于()我們的方法男人類,給它我們需要的行為!目前,我們不喜歡這樣一個事實:人1.等于(人2)本質上等效于人1 == 人2.以下是我們在這種情況下將執(zhí)行的操作: 控制臺輸出:true 現(xiàn)在我們得到了一個完全不同的結果!通過編寫我們自己的

      15

        等于()方法并使用它而不是標準方法,我們已經(jīng)產(chǎn)生了正確的行為:現(xiàn)在,如果兩個人具有相同的DNA,程序報告“DNA分析已證明他們是雙胞胎”并返回真實!通過覆蓋等于()方法在你的類中,你可以很容易地創(chuàng)建任何你需要的對象比較邏輯。事實上,我們剛剛談到了對象比較。在我們面前,關于這個主題仍然有一個很大的獨立課程(如果你有興趣,你現(xiàn)在瀏覽一下)。

        在 Java 中比較字符串

        為什么我們要將字符串比較與其他所有內(nèi)容分開考慮?現(xiàn)實情況是,字符串本身就是編程中的一個主題。首先,如果你把所有曾經(jīng)編寫的Java程序都拿來,你會發(fā)現(xiàn)其中大約25%的對象是字符串。所以這個話題非常重要。其次,比較字符串的過程確實與其他對象非常不同??紤]一個簡單的例子:控制臺輸出:false 但是為什么我們得到假呢?畢竟,字符串完全相同,逐字逐句:/您可能已經(jīng)猜到了原因:

      16

        這是因為運算符比較引用==!清楚s1和s2內(nèi)存中具有不同的地址。如果你想到這一點,那么讓我們重新制作我們的例子:現(xiàn)在我們又有兩個引用,但結果恰恰相反:控制臺輸出:真的無助地困惑?讓我們弄清楚發(fā)生了什么。操作員確實比較了內(nèi)存地址。這總是正確的,你不需要懷疑它。這意味著如果

      15

        ==s1 == s2返回 true,則這兩個字符串具有相同的地址。這是真的!現(xiàn)在是時候向您介紹用于存儲字符串的特殊內(nèi)存區(qū)域:字符串池

      01

        字符串池是用于存儲您在程序中創(chuàng)建的所有字符串值的區(qū)域。為什么創(chuàng)建它?如前所述,字符串表示所有對象的巨大百分比。任何大型程序都會創(chuàng)建大量字符串。創(chuàng)建字符串池是為了節(jié)省內(nèi)存:字符串被放置在那里,然后創(chuàng)建的字符串引用相同的內(nèi)存區(qū)域 - 無需每次都分配額外的內(nèi)存。每次你寫字符串 = “.....”程序檢查字符串池中是否有相同的字符串。如果有,則不會創(chuàng)建新字符串。新的引用將指向字符串池中的相同地址(相同字符串所在的地址)。所以當我們寫

      19

        s2指向 與 相同的位置s1.第一條語句在字符串池中創(chuàng)建新字符串。第二個語句僅引用與s1.您可以再制作500個相同的字符串,結果不會改變。等一會。如果這是真的,那么為什么這個例子以前不起作用呢? 我認為你的直覺已經(jīng)告訴你原因=)在進一步閱讀之前嘗試猜測。您可以看到這兩個字符串以不同的方式聲明。一個帶有新操作員,另一個沒有新操作員。原因就在這里。當

      20

        新增功能運算符用于創(chuàng)建對象,它強制為對象分配新的內(nèi)存區(qū)域。以及使用新增功能不會最終出現(xiàn)在字符串池中 — 它成為一個單獨的對象,即使它的文本與字符串池中的字符串完全匹配。也就是說,如果我們編寫以下代碼:在內(nèi)存中,它看起來像這樣:

      21

      02

        每次使用創(chuàng)建新對象時新增功能,則分配一個新的內(nèi)存區(qū)域,即使新字符串內(nèi)的文本是相同的!看來我們已經(jīng)找到了操作員。但是我們的新認識呢,==等于()方法? 控制臺輸出:真正有趣。我們確信

      23

        s1和s2指向內(nèi)存中的不同區(qū)域。但是等于()方法仍然告訴我們它們是相等的。為什么?請記住,我們之前說過等于()方法可以被覆蓋以比較我們想要的對象?這就是他們所做的字符串類。它覆蓋等于()方法。它不是比較引用,而是比較字符串中的字符序列。如果文本相同,則它們是如何創(chuàng)建的或存儲在何處并不重要:無論是在字符串池中還是在單獨的內(nèi)存區(qū)域中。比較的結果將為真。順便說一句,Java允許您執(zhí)行不區(qū)分大小寫的字符串比較。通常,如果其中一個字符串具有全部大寫字母,則比較的結果將為 false:控制臺輸出:false 對于不區(qū)分大小寫的比較,

      24

        字符串類具有等于虛無案例()方法。如果您只關心比較特定字符的順序而不是字母大小寫,則可以使用它。例如,這在比較兩個地址時可能會有所幫助:在這種情況下,我們顯然是在談論相同的地址,因此使用

      25

        等于虛無案例()方法。

        字符串.實習生() 方法

        這字符串類還有一個棘手的方法:實習生();這實習生()方法直接與字符串池一起工作。如果您撥打實習生()方法在一些字符串上:

        它檢查字符串池中是否有匹配的字符串

        如果有,它將返回對池中字符串的引用

        如果不是,它將字符串添加到字符串池并返回對它的引用。

        使用后實習生()字符串引用上的方法,該方法使用新增功能,我們可以使用運算符將其與字符串池中的字符串引用進行比較。 控制臺輸出:true 當我們之前比較這些字符串時,沒有==

      26

        實習生(),結果是錯誤的?,F(xiàn)在實習生()方法檢查字符串“CodeGym是學習Java的最佳站點!”是否在字符串池中。當然,它是:我們創(chuàng)建它與我們檢查

        String s1 = "CodeGym is the best website for learning Java!";

        s1和返回的引用s2.實習生()指向內(nèi)存的同一區(qū)域。當然,他們確實:)總之,記住并應用這個重要的規(guī)則:始終使用等于()比較字符串的方法!在比較字符串時,我們幾乎總是想比較它們的字符,而不是引用,內(nèi)存區(qū)域或其他任何東西。這等于()方法完全符合您的需要。

      tags:
      聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
      10年以上業(yè)內(nèi)強師集結,手把手帶你蛻變精英
      請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
      免費領取
      今日已有369人領取成功
      劉同學 138****2860 剛剛成功領取
      王同學 131****2015 剛剛成功領取
      張同學 133****4652 剛剛成功領取
      李同學 135****8607 剛剛成功領取
      楊同學 132****5667 剛剛成功領取
      岳同學 134****6652 剛剛成功領取
      梁同學 157****2950 剛剛成功領取
      劉同學 189****1015 剛剛成功領取
      張同學 155****4678 剛剛成功領取
      鄒同學 139****2907 剛剛成功領取
      董同學 138****2867 剛剛成功領取
      周同學 136****3602 剛剛成功領取
      相關推薦HOT
      大數(shù)據(jù)測試工程師需要具備哪些技能?

      一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

      2023-10-14 23:43:03
      為什么SpringBoot的 jar 可以直接運行?

      一、JAR文件的結構與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

      2023-10-14 23:01:49
      站群服務器是什么?

      站群服務器的含義與用途站群服務器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

      2023-10-14 22:46:12
      自編碼器是什么?

      一、自編碼器原理自編碼器的設計靈感源于神經(jīng)科學中關于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

      2023-10-14 22:41:10
      什么是云網(wǎng)融合?

      一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡技術相結合,實現(xiàn)資源的共享、業(yè)務的協(xié)同,將網(wǎng)絡與云端服務深度融合,提供更靈活、高效、安全的...詳情>>

      2023-10-14 22:31:47