java字符串string_Java字符串String详解

1、String字符串

实例化String对象:

(1)直接赋值,如:String str="hello";

(2)使用关键字 new,如:String str=new String("hello");

6d515cc4ec6b77b70e0f6a0373e48be0.png

由图可知:使用 new 的方式在堆内存中开辟了两个空间,

第一个 "hello",对象 str 没有指向,无用等待回收,

第二个 "hello",被 str 指向,有用。

所以 直接赋值(只开辟了一个空间) 的方式更常用和合理,可以节省一些空间。

字符串的内容不可更改

如:

f64c71b1a3031fc42a54dd9a34d2c357.png

2、String字符串常用方法

String字符串的方法较多,可以根据API给出的方法去做测试,下面是常用方法:

(1)字符串长度:length() 「数组中的是 length 属性」

(2)字符串转换数组:toCharArray()

(3)从字符串中取出指定位置的字符:charAt()

(4)字符串与byte数组的转换:getBytes()

(5)过滤字符串中存在的字符:indexOf()  返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。(可以用在判断多位数是否包含某个数字时,先转成string再判断)

(6)去掉字符串的前后空格:trim() 「空格易影响到对字符串的判断,需适时去掉」

(7)从字符串中取出子字符串:subString()

(8)大小写转换:toLowerCase() toUpperCase()

(9)判断字符串的开头结尾字符:startWith() endsWith()

(10)替换String字符串中的一个字符:replace()

3、StringBuffer的常用方法:

append() insert() replace() indexOf()

StringBuffer类的应用:

为什么有的时候要用StringBuffer,而不用String:

String是不可变的,所以要对String作改动不能直接改那个String本身,而是要创建新的String,所以如果改动次数多,用String就效率不高,而StringBuffer(如果是单线程则建议用StringBuilder,不用考虑线程安全性,效率更高点)。有朋友说1.5后StringBuffer和String的拼接性能差不多则不敢苟同,如下测试在我的机器上用JDK1.8测试:

1 public classdemo {2 public static voidmain(String[] args) {3 long l =System.currentTimeMillis();4 String s = "";5 for (int i = 0; i < 100000; i++) {6 s += "q";7 }8 System.out.println(System.currentTimeMillis() -l);9 System.out.println(s.substring(0, 1));10

11 l =System.currentTimeMillis();12 StringBuffer sb = newStringBuffer();13 for (int i = 0; i < 100000; i++) {14 sb.append("q");15 }16 System.out.println(System.currentTimeMillis() -l);17 System.out.println(sb.toString().substring(0, 1));18 }19 }

输出:

3870q3q

也就是做10万次拼接,String要3.87秒,而StringBuffer则只要0.003秒,差别还是相当大的。(JDK1.6有9s多的差距)

4、StringBuilder

一个可变的字符序列,该类被设计作用StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,建议优先考虑该类,速度比StringBuffer要快

但如果涉及到线程安全方面,建议使用StringBuffer

常用方法:

append() insert() …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值