Java中的String类(总结)

String

String是一个final类,代表不可变的字符序列;

字符串是常量,用双引号括起来表示,他们的值在创建后不能更改;

String对象的字符内容是存储在一个字符数组value[ ]中的;

String实现了Serializable接口:表示字符串是支持序列化的;

​ 实现了Comparable接口:表示String可以比较大小;

String内部定义了 final char[ ] value用于存储字符串数据;

通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中;

字符串常量池中是不会存储相同内容的字符串;

当调用String replace( )方法修改指定字符或字符串时,需要重新指定内存区域赋值,不能在原有的value上进行赋值;

创建字符串的常见3+1种方式

三种构造方法:1. Public String( );创建一个空白字符串,不含有任何内容;

​ 2. Public String( char[ ] array);根据字符数组的内容,来创建对应的字符串;

​ 3. Public String (byte[ ] array) ;根据字节数组的内容来创建对应的字符串;

一种直接创建;

Public Static void main (String[] args){
//使用空参构造;
String str1 = new String( );
//根据字符数组创建字符串;
char[ ] charArray = {'a','b','c'};
String str2 = new String(charArray);
//根据字节数组创建字符串;
brte[ ] byteArray ={97,98,99};
String str3 = new String(byteArray);
//直接创建;
String str4 = "hello";
}

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中;

对于基本类型来说:== 是进行数值的比较;

对于引用类型来说:==是进行地址值的比较;

//判断
String s1 = "hello";
String s2 = "world";
String s3 = "hello" + "world";
String s4 = s1 + "world";
String s5 = s1 + s2;
String s6 = (s1+s2).inter();
System.out.printfln(s3==s4);//flase
System.out.printfln(s3==s5);//flase
System.out.printfln(s4==s5);//flase
System.out.printfln(s3==s6);//true
结论

- 常量与常量的拼接结果在常量池中;且常量池中不会存在相同内容的常量;
- 只要其中有一个是变量,结果就在堆中;
- 如果拼接的结果调用intern( )方法,返回值就在常量池中;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3TGWCRu-1600525612153)(C:\Users\海阔天空\Pictures\Saved Pictures\字符串.png)]

字符串的截取方法

Public String substring (int beginindex);截取从参数位置一直到字符串末尾,返回新字符串;

Public String substring (int beginIndex,int endIndex):截取从beginIndex开始,一直到endIndex结束,中间的字符串(左闭右开区间);

String当中获取相关的常用方法

int length( ):获取字符串当中含有的字符个数,拿到字符串长度;

String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串,等价于”+“;

char charAt(int index):获取指定索引位置的单个字符(索引从0开始);

int indexOf(String str):查找参数字符串在本字符串中首次出现的索引位置,如果没有,返回-1值;

boolean isEmpty( ):判断是否是空字符串;

String toLowerCase( ):使用默认语言环境,将String中的所有字符转换成小写;

String toUpperCase( ):使用默认语言环境,将String中的所有字符转换成大写;

String time ( ):返回字符串的副本,忽略前导空白和尾部空白;

boolean equals( Object obj ) :比较字符串的内容是否相等;

boolean equalsIgnoreCase (String anotherString):与equals方法相类似,忽略大小写;

int compareTo ( String anotherString):比较两个字符串的大小;

boolean endWith (String suffix):测试此字符串是否可以指定的后缀结束;

boolean StartWith( String prefix):测试此字符串是否可以指定的前缀开始;

boolean StartWith( String prefix ,int toffset):测试此字符串从指定索引开始的字符串是否以指定前缀开始;

String 、StringBuffer 、StringBuilder三者的区别

String:不可变字符序列;底层使用char[ ]存储;

StringBuffer:可变的字符序列,线程安全,效率低,底层使用char[ ]存储;

StringBuilder:可变的字符序列,线程不安全,效率高,底层使用char[ ]存储;

字符序列;底层使用char[ ]存储;

StringBuffer:可变的字符序列,线程安全,效率低,底层使用char[ ]存储;

StringBuilder:可变的字符序列,线程不安全,效率高,底层使用char[ ]存储;

三者的效率:StringBuilder > StringBuffer > String
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值