国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Java基礎之StringBuffer詳解

瀏覽:23日期:2022-08-13 14:25:45
一、前言

StringBuffer是可變長的字符串

1.append 追加

2.delete 刪除

3.insert 插入

4.reverse 反轉

二、用法

String str1 = 'let there ';StringBuffer sb = new StringBuffer(str1); //根據str1創建一個StringBuffer對象sb.append('be light'); //在最后追加System.out.println(sb);sb.delete(4, 10);//刪除4-10之間的字符 不包括4,包括10System.out.println(sb);sb.insert(4, 'there ');//在4這個位置插入 there 在4的位置后面插入System.out.println(sb);sb.reverse(); //反轉 字符串的內容倒序System.out.println(sb);三、結果

let there be light let be light let there be light thgil eb ereht tel

注意:

對于插入insert和append

邊界條件判斷

插入之前,首先要判斷的是一些邊界條件,比如插入位置是否合法,插入的字符是否為空

擴容

1.要判斷是否需要擴容,如果插入的字符串加上原來的總長度超過了初始容量,就需要擴容。

2.數組的長度是固定且不能改變的,所以數組本身不支持擴容。這時需要其他方式解決問題------------------

根據需要插入的字符串的長度和已經存在的內容的長度,計算出一個新的容量,再根據這個容量創建一個新的數組,把原來數組中的內容復制到新的數組中,讓value這個引用指向新的數組,從而達到擴容的效果。

插入字符串

1.找到要插入字符串的位置,從這個位置開始,把原數據看成兩段,把后半段向后挪動一個距離,這個距離剛好是插入字符串的長度。

2.然后把要插入的數據,插入這個挪出來的,剛剛好的位置里。

修改length的值

最后修改length的值,是原來的值加上插入字符串的長度

insert(int, char)

參數是字符的insert方法,通過調用insert(int, String) 也就實現了。

append

追加,就是在最后位置插入。 所以不需要單獨開發方法,直接調用insert方法,就能達到最后位置插入的效果

四、長度 容量

和String內部是一個字符數組一樣,StringBuffer也維護了一個字符數組,但這個數組留有多余的長度,以便于在現有的數組上調用插入和追加,例如

String str = new StringBuffer('the'),//內部的字符數組的長度是19而不是3,如果追加的長度超過了19,就會分配一個新的數組,長度比原來多,把原來的數據復制到新的數組中,看上去數組長度就變長了

不同的JDK數量不一樣

五、IStringBuffer接口

public interface IStringBuffer {public void append(String str); //追加字符串public void append(char c); //追加字符public void insert(int pos,char b); //指定位置插入字符public void insert(int pos,String b); //指定位置插入字符串public void delete(int start); //從開始位置刪除剩下的public void delete(int start,int end); //從開始位置刪除結束位置-1public void reverse(); //反轉public int length(); //返回長度}六、value和capacity

value: 用于存放字符數組

capacity: 容量

無參構造方法: 根據容量初始化value

public class MyStringBuffer implements IStringBuffer{int capacity = 16;int length = 0;char[] value;public MyStringBuffer(){ value = new char[capacity];} @Overridepublic void append(String str) { // TODO Auto-generated method stub } @Overridepublic void append(char c) { // TODO Auto-generated method stub } @Overridepublic void insert(int pos, char b) { // TODO Auto-generated method stub } @Overridepublic void delete(int start) { // TODO Auto-generated method stub } @Overridepublic void delete(int start, int end) { // TODO Auto-generated method stub } @Overridepublic void reverse() { // TODO Auto-generated method stub } @Overridepublic int length() { // TODO Auto-generated method stub return 0; }}

以下是 StringBuffer 類支持的主要方法:

序號 方法描述 1 public StringBuffer append(String s) 將指定的字符串追加到此字符序列。 2 public StringBuffer reverse() 將此字符序列用其反轉形式取代。 3 public delete(int start, int end) 移除此序列的子字符串中的字符。 4 public insert(int offset, int i) 將 int 參數的字符串表示形式插入此序列中。 5 replace(int start, int end, String str) 使用給定 String 中的字符替換此序列的子字符串中的字符。

**注意:**String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了

string1.concat(string2);字符串連接

'我的名字是 '.concat('Runoob');

更常用的是使用’+’操作符來連接字符串,如:

'Hello,' + ' runoob' + '!'

Java 中 StringBuffer 和 String 是有一定的區別的,首先,String 是被 final 修飾的,他的長度是不可變的,就算調用 String 的 concat 方法,那也是把字符串拼接起來并重新創建一個對象,把拼接后的 String 的值賦給新創建的對象,而 StringBuffer 的長度是可變的,調用StringBuffer 的 append 方法,來改變 StringBuffer 的長度,并且,相比較于 StringBuffer,String 一旦發生長度變化,是非常耗費內存的!

String 長度大小不可變

StringBuffer 和 StringBuilder 長度可變

StringBuffer 線程安全 StringBuilder 線程不安全

StringBuilder 速度快

到此這篇關于Java基礎之StringBuffer詳解的文章就介紹到這了,更多相關java StringBuffer詳解內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 欧美日韩精品一区二区三区高清视频 | 欧美视频在线网站 | 可以看毛片的网址 | 99爱视频| 国产精品每日更新在线观看 | 欧美视频一区二区专区 | 中文字幕在线日韩 | 成人a毛片视频免费看 | 99久久国产免费中文无字幕 | 99爱视频免费高清在线观看 | 国产日产久久 | 久夜色精品国产一区二区三区 | 久青草青综合在线视频 | 91成人免费 | 日本免费在线 | 日韩麻豆 | 久久综合日韩亚洲精品色 | 国产精品理论片在线观看 | 亚洲第一免费视频 | 九九99久麻豆精品视传媒 | 韩日一区二区 | 亚洲成a人v | 成人免费毛片网站 | 悟空影视大全免费影视 | 久久欧美 | 国产精品高清在线观看地址 | 在线观看免费视频网站色 | 99视频免费播放 | 国产一级毛片在线 | 亚洲日韩中文字幕 | 日韩精品一区二区三区免费视频 | 男女扒开双腿猛进入爽爽视频 | 特黄特色一级特色大片中文 | 免费一级a毛片在线 | 91久久亚洲精品国产一区二区 | 精品视频 久久久 | 亚洲日本高清影院毛片 | 在线一区播放 | 看真人视频a级毛片 | 国产一区二区三区久久精品小说 | 九九视频在线观看视频6偷拍 |