string stringbuffer stringbuilder

1string的所有方法只要内容更改就会返回新的string

2第一种:直接赋一个字面量String str1 ="ABCD"; 第二种:通过构造器创建String str2 =newString("ABCD");

String str1 = "ABCD";

最多创建一个String对象,最少不创建String对象.如果常量池中,存在”ABCD”,那么str1直接引用,此时不创建String对象.否则,先在常量池先创建”ABCD”内存空间,再引用.

String str2 = new String("ABCD");

最多创建两个String对象,至少创建一个String对象。new关键字绝对会在堆空间创建一块新的内存区域,所以至少创建一个String对象。

3判断string对象为空a==null&&a.equals(''");

4判断string对象是否相等用equals

5Stringbuilder是线程不安全,效率高。Stringbuffer是线程安全。都在源字符串上进行修改。

6方法

string

1 length()字符串的长度

String a = "Hello Word!";System.out.println(a.length);

输出的结果是字符串长度10。


2 charAt()截取一个字符

String a = "Hello Word";

System.out.println(a.charAt(1));

输出的结果是字符串a的下标为1的字符e。


3 getchars()截取多个字符并由其他字符串接收

String a = "Hello Word";char[] b =newchar[10];

a.getChars(0, 5, b, 0);

System.out.println(b);

输出的结果为Hello,其中第一个参数0是要截取的字符串的初始下标(int

sourceStart),第二个参数5是要截取的字符串的结束后的下一个下标(int sourceEnd)也就是实际截取到的下标是int

sourceEnd-1,第三个参数是接收的字符串(char target[]),最后一个参数是接收的字符串开始接收的位置。


4 getBytes()将字符串变成一个byte数组

String a = "Hello Word";byteb[] = a.getBytes();

System.out.println(newString(b));

输出的结果为Hello Word的byte数组。


5 toCharArray()将字符串变成一个字符数组

String a = "Hello Word";char[]b = a.toCharArray();

System.out.println(b); 

输出的结果为Hello Word字符数组。


6 equals()和equalsIgnoreCase()比较两个字符串是否相等,前者区分大小写,后者不区分

String a = "Hello Word";

String b = "hello word";System.out.println(a.equals(b));

System.out.println(a.equalsIgnoreCase(b));

输出的结果为第一条为false,第二条为true。


7 startsWith()和endsWith()判断字符串是不是以特定的字符开头或结束

String a = "Hello Word";

System.out.println(a.startsWith("ee")); 

System.out.println(a.endsWith("rd"));

输出的结果第一条为false,第二条为true。


8 toUpperCase()和toLowerCase()将字符串转换为大写或小写

String a = "Hello Word";

System.out.println(a.toUpperCase());

System.out.println(a.toLowerCase());

输出的结果第一条为“HELLO WORD”,第二条为“hello word”。


9 concat() 连接两个字符串

String a = "Hello Word";

String b = "你好";

System.out.println(b.concat(a));

输出的结果为“你好Hello Word”。


10 trim()去掉起始和结束的空格

String a ="    Hello Word  ";

System.out.println(a.trim());

输出的结果为“Hello Word”。


11 substring()截取字符串

String a = "Hello Word";

System.out.println(a.substring(0, 5));

System.out.println(a.substring(6));

输出的结果第一条为“Hello”,第一个参数0(beginIndex)是开始截取的位置,第二个参数5(endIndex)是截取结束的位置,输出的结果第二条是“Word”,参数6(beginIndex)是开始截取的位置。


12 indexOf()和lastIndexOf()前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方

String a = "Hello Word";

System.out.println(a.indexOf("o"));

System.out.println(a.lastIndexOf("o"));

输出的结果第一条是4,是o第一次出现的下标,第二条是7,是o最后一次出现的下标。


13 compareTo()和compareToIgnoreCase()按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分

String a = "Hello Word";

String b = "hello word";

System.out.println(a.compareTo(b));

System.out.println(a.compareToIgnoreCase(b));

输出的结果第一条为-32,第二条为0,两个字符串在字典顺序中大小相同,返回0。


14 replace() 替换

String a = "Hello Word";

String b = "你好";

System.out.println(a.replace(a, b));

System.out.println(a.replace(a, "HELLO WORD"));

System.out.println(b.replace("你", "大家"));

输出的结果第一条为“你好”,第二条为“HELLO WORD”,第三条为“大家好”。


StringBuffer 方法

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

序号 方法描述

1public StringBuffer append(String s)

将指定的字符串追加到此字符序列。

2public StringBuffer reverse()

将此字符序列用其反转形式取代。

3public delete(int start, int end)

移除此序列的子字符串中的字符。

4public insert(int offset, int i)

将int参数的字符串表示形式插入此序列中。

5replace(int start, int end, String str)

使用给定String中的字符替换此序列的子字符串中的字符。


下面的列表里的方法和 String 类的方法类似:

序号 方法描述

1int capacity()

返回当前容量。

2char charAt(int index)

返回此序列中指定索引处的char值。

3void ensureCapacity(int minimumCapacity)

确保容量至少等于指定的最小值。

4void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

将字符从此序列复制到目标字符数组dst。

5int indexOf(String str)

返回第一次出现的指定子字符串在该字符串中的索引。

6int indexOf(String str, int fromIndex)

从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。

7int lastIndexOf(String str)

返回最右边出现的指定子字符串在此字符串中的索引。

8int lastIndexOf(String str, int fromIndex)

返回 String 对象中子字符串最后出现的位置。

9int length()

返回长度(字符数)。

10void setCharAt(int index, char ch)

将给定索引处的字符设置为ch。

11void setLength(int newLength)

设置字符序列的长度。

12CharSequence subSequence(int start, int end)

返回一个新的字符序列,该字符序列是此序列的子序列。

13String substring(int start)

返回一个新的String,它包含此字符序列当前所包含的字符子序列。

14String substring(int start, int end)

返回一个新的String,它包含此序列当前所包含的字符子序列。

15String toString()

返回此序列中数据的字符串表示形式。



String的+=会新建一个stringbuilder的对象,非常消耗时间和内存

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,621评论 18 399
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一...
    阿里高级软件架构师阅读 3,286评论 0 19
  • 文/小珞 《我的前半生》,还没来得及听说,就半推半就的看了。 看了第一集就忍不住看第二集,然后就眼巴巴的盼着每天的...
    小珞的碎碎念阅读 668评论 0 1
  • 文/hebe小宋江 猫咪们吃完饭,都安安静静地睡了。 天歌和lucky这才有机会好好的,仔细的观察...
    hebe小宋江阅读 260评论 0 0
  • 赤壁之战期间,刘备和孙权为了对付共同的敌人结成联盟,然后联盟很脆弱,一旦敌人的危险暂时完结,各自的利益发生冲突...
    张墨涵阅读 312评论 1 1