<input id="0qass"><u id="0qass"></u></input>
  • <input id="0qass"><u id="0qass"></u></input>
  • <menu id="0qass"><u id="0qass"></u></menu>

    java 中操作字符串都有哪些類?它們之間有什么區別?面試篇(第七天)

    面試題 專欄收錄該內容
    12 篇文章 0 訂閱

    初級回答:

    String、StringBuilder、Stringbuffer ,區別是String是不可變對象,每次都需要生成一個新的對象,StringBuilder、Stringbuffer是可變對象,每次都在同一個對象上進行操作。

    中級回答:

    String是不可變對象,假如String a = “1”; a=“2”; a=“3”; a=“4” ;這里我們給a不斷的賦值,那么a肯定等于最后賦值的值4,這肯定是對的,但是前面賦值的1、2、3并沒有銷毀,他們還存在與堆內存中,堆空間中存放了值,在棧中存儲了該數據的引用地址。如圖。
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    通過這里我們可以看到每一次賦值堆內存都會重新開辟一塊新的內存空間用來存放新值,然后將新值的地址如“A00001”給棧內存,然后棧內存將引用地址改變就可以獲得新值了,所以說如果對String類型的值重復進行很多次操作,會占用大量的堆內存空間。

    高級回答

    StringBuilder、Stringbuffer這兩個類對字符串操作就沒有以上那種情況,這兩個類只在堆內存開辟一塊空間,每次都只在這一塊空間中修改,但是他們和String類型對值的操作方法有所不同,如圖。
    在這里插入圖片描述
    我們同樣對字符串先進行+“1”的操作,再進行+“2”的操作,String類型是直接用=號來進行賦值,+號來進行連接操作,而Stringbuilder和StringBuffer是使用append()方法來進行追加操作的,這是他們對值的操作方法有所不同,而Stringbuilder比StringBuffer的效率高,那么StringBuffer有什么過人之處呢,就是StringBuffer是線程安全的,也就是再多線程中可以使用Stringbuffer來對字符串進行操作。

    整理

    • String:對字符串不進行重復操作時選擇用String。
    • StringBuilder:在單線程中對字符串進行重復操作時選擇用StringBuilder。
    • StringBuffer:在多線程中對字符串進行重復操作時選擇用StringBuffer。

    總結

    如果大家想了解更多的有關JAVA方面的面試題與答案詳解請搜索關注我的微信公眾號《小奇JAVA面試》里面每天都會更新JAVA面試題,希望能夠幫助到大家。
    在這里插入圖片描述

    • 0
      點贊
    • 0
      評論
    • 0
      收藏
    • 一鍵三連
      一鍵三連
    • 掃一掃,分享海報

    ??2020 CSDN 皮膚主題: 1024 設計師:白松林 返回首頁
    實付
    使用余額支付
    點擊重新獲取
    掃碼支付
    錢包余額 0

    抵扣說明:

    1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
    2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

    余額充值
    多乐彩