在<em>java</em>中,最常用的类基本上非String莫属了。String虽然不是八大基础类型之一,但是各种常用类型、自定义的类都能够转换成字符串表示。就连<em>java</em>中的所有类的父类Object,也有一个方法叫做“toString”,由
2021-05-23 22:31:09
在java中,最常用的類基本上非String莫屬了。String雖然不是八大基礎類型之一,但是各種常用類型、自定義的類都能夠轉換成字元串表示。就連java中的所有類的父類Object,也有一個方法叫做「toString」,由此可見字元串String在java中具有何等重要的地位。
既然字元串String如此常用,那麼使用的過程中就應該注意了。由於String本身是一個final類,一旦其物件被賦值,是不能夠修改的。
有小夥伴可能會提出異議:「我們平時在程式碼裡面不是經常重新對字元串重新賦值嗎?」
注意:對String物件重新賦值並不是修改了原物件的值,而是重新new了個String物件賦值給原變數。不信?咱們來看看程式碼。
我們看上面兩張圖,第一張圖是變數a第一次賦值,它的物件地址值用@466表示,第二張圖的時候,程式運行到變數a第二次賦值完成,物件地址值變為@468。物件地址值是物件在記憶體中的地址,好比房子的地址一般。同一棟房子,地址值是不會變化的。由此可以得出,第二次賦值過後,變數a在記憶體中的物件已經不是第一次時的物件。所以,給String字元串賦值的本質是在記憶體中重新new一個String物件。
這樣做有什麼壞處呢?
我們知道物件的創建會佔用記憶體。這裡的記憶體指的是計算機的運行記憶體,也就是記憶體條的容量。而記憶體條是一種珍貴的資源,受限於系統架構的原因,記憶體條通常是比較小的(相對於硬碟等裝置來說)。一些配置不高的伺服器比如個人網站,最小的甚至只有1個G,如果程式大量創建一些不必要的物件,就會造成記憶體不夠用,而java程式是由jvm幫我們釋放記憶體的,如果程式不合理,jvm來不及回收記憶體垃圾,就會造成記憶體浪費。
基於這個問題的存在,java推出了StringBuffer與StringBuilder兩個類。
這兩個類幾乎是一樣的,操作字元串時都不會重複創建物件,執行緒在操作StringBuffer與StringBuilder物件時,對字元串多次拼接操作的都是同一物件,如此一來就會大量減少字元串物件的創建,從而節省記憶體。
如果我們在需要保證執行緒安全的場景下對字元串進行操作,推薦使用StringBuffer。在不需要嚴格保證執行緒安全的場景下,推薦使用StringBuilder,因為StringBuilder的效率比StringBuffer高(原因是沒有同步鎖)。如圖,使用StringBuffer與StringBuilder的方式是一樣的,這兩個類的方法基本相同。這兩個字元串操作類都使用append方法對字元串進行拼接:
使用reverse方法對字元串進行反轉:
使用delete方法刪除部分字元串:
使用insert方法在某個位置插入部分字元串(如果是非字元串,比如正數1,則插入字元串「1」):
使用replace方法替換指定位置的字元串:
除了這些方法以外,這兩個字元串操作類還有一些String也有的類,小夥伴們,如果你對java感興趣,不放自己開啟電腦來寫一些小demo吧!
#程式語言#
相關文章
在<em>java</em>中,最常用的类基本上非String莫属了。String虽然不是八大基础类型之一,但是各种常用类型、自定义的类都能够转换成字符串表示。就连<em>java</em>中的所有类的父类Object,也有一个方法叫做“toString”,由
2021-05-23 22:31:09
<em>word</em>排版问题千万个,有时候被很多格式问题限制了工作效率,<em>word</em>技巧学不精,要用时都希望成精呀。有的同学写论文,一篇文档几千甚至几万字,却老老实实拖动滚动条拉上拉下,鼠标滚动无数次,千难万难才找到需要
2021-05-23 22:30:03
打开UC<em>浏览器</em>查看更多精彩图片。 尽管许多人知道那不是真的,但从何超莲说话的语气来看,她相信了。看着二人轻声低语的样子,二人真是太甜蜜了! 野营的时候,两个人的互动也很多,窦骁贴心地给何超莲拿吃的,对何
2021-05-23 22:02:42
手机操作环境:iPhone 12 软件版本是14.4.2 微信8.05;电脑操作环境:windows10.0 旗舰版,<em>浏览器</em>是谷歌<em>浏览器</em>;家用商务笔记本 14英寸 R7-3700U 16G 512G 。高度的相对性-海拔高度不等于离地面高度 经常外
2021-05-23 22:02:35
在性能上,努比亚Z30 Pro绝对是拉满的,骁龙888、LPDDR5和UFS3.1性能铁三角,属于<em>安卓</em>阵营中的第一梯队。在屏幕上,努比亚Z30 Pro采用6.67英寸的OLED曲面屏,支持144Hz刷新率,像10bit色深、10.7亿色、护眼认证等旗舰机
2021-05-23 22:02:24
三星note系列曾经是叱咤风云的存在,无论是在国际市场还是国内市场,它都是<em>安卓</em>机皇的代名词,屡屡有三星note发布之后,国产手机品牌纷纷躁动起来,效仿三星note推出一些配件或者设计,可人家的精髓咱就是玩不转,
2021-05-23 22:02:18