String类

Java中String类的常用方法:

public char charAt(intindex)

返回字符串中第index个字符;
public int length()
返回字符串的长度;
public int indexOf(Stringstr)
返回字符串中第一次出现str的位置;
public int indexOf(Stringstr,int fromIndex)
返回字符串从fromIndex开始第一次出现str的位置;
public booleanequalsIgnoreCase(String another)
比较字符串与another是否一样(忽略大小写);
public Stringreplace(char oldchar,char newChar)
在字符串中用newChar字符替换oldChar字符
public booleanstartsWith(String prefix)
判断字符串是否以prefix字符串开头;
public booleanendsWith(String suffix)
判断一个字符串是否以suffix字符串结尾;
public StringtoUpperCase()
返回一个字符串为该字符串的大写形式;
public StringtoLowerCase()
返回一个字符串为该字符串的小写形式
public Stringsubstring(int beginIndex)
返回该字符串从beginIndex开始到结尾的子字符串;
public Stringsubstring(int beginIndex,int endIndex)
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
public String trim()
返回该字符串去掉开头和结尾空格后的字符串
public String[]split(String regex)
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组

 

 

注意点:

  1. String c = “blue”

Stringb = “blue”

两个指向的是同一块区域


  1. String s1 =null;

    String s2 = new String()

这两个是不一样的,一个是null ,另一个是”\0”;


  1. String s3 = “您好!”

    String s2 = new String(s3);

这里的s3 != s4了,因为这里的s4开辟了一个新的区域,内容是您好!

所以 s3 == s4得到的是false

    S2 == “您好!”得到的也是false;


  1. String s1 = “ABC”

    String s2 = “XYZ”

    S1 = s1.concat(s2);

我们都知道concat的意思是在s1后面接上s2得到一个新的String

那么是原来的s1被替代了吗?

当然不是!!

是又开辟了一块新的空间,写入”ABCXYZ”,然后s1指向原来的现在这快区域!(但如果它只是s1.concat(s2);,,那么s1还是指向原来的ABC)

并且原来的那块区域还是保留着的,为”ABC”



但是如果是字符串调用toString() 的方法 , 并不会创建新的字符串对象,而是直接返回当前对象的引用

在调用方法System.out.println 或 System.out.print 时,如果他们的参数不是字符串类型,一般会自动的调用方法toString()  ,

 

 

 

 

 

那么这里主要的问题就是,如果想要修改s1,那么就得开辟一块新的空间出来,修改的越多,开辟的越多,那么有没有办法解决这个问题呢?

 

Java爸爸给了我们一个stringbuffer的类,这个类与string不同的就是它能对自己本身进行修改。

 

StringBuffer 呢,就是在他加入了内容以后,再额外添加16个空间

 

String s1 = “YZR”

String s2 = s1.append('D')      执行这个操作的以后,s2变成 了YZRD!!!1

StringBuffer strb = new StringBuffer(s1);  ( append() )

String放到StringBuffer里面以后就可以进行各种操作

然后最后再转换回String类型( tostring()







==equals

==比较两个对象是不是同一个对象

equals 是比较内容是否相同

String str = ‘123’

String str1 = ‘123’

Str2 = new string(“123”)

 

If(str2 == str)  判断出来是false

If(str == str1)  判断出来是true

If(str.equals(str1))  判断出来就是true

 

length() capacity()

length()是字符串的长度!

capacity()是整个的容量

String str = “123”

StringBufffer strb = “123”

str.length()         3;

strb.length()       3;

strb.capacity()     3+16; (本身要扩展16单位的容量)

 

 

 

而且StringBuffer的速度要比String的速度快很多!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值