String那些事儿

一、字符串是引用类型 ,值一旦确定不可改变。
  String str ="bjsxt";
  str ="good"; //重新开辟空间

 

二、String类常用方法

1)长度 length() 
2)比较 地址与内容
 a)地址 ==
 b)内容
 boolean equals(Object)
 boolean equalsIgnoreCase(String) //不区分大小写
3)截取
 a)String subString(int beginIndex)
 b)String subString(int beginIndex,int endIndex)
4)判断子串存在
 a)查找第一次出现的位置 不存在为-1
  如果传入的为空串,则返回fromIndex
  int indexOf(String)
  int indexOf(String,int fromIndex)
  int lastIndexOf(String)
  int lastIndexOf(String,int fromIndex) 只从子字符串(长度为fromIndex+str.length)中查找
 b)判断是否存在
  boolean contains(String);  

 5)替换  String replaceAll(String regex,String)
  String replace(String substr,String)
   String replaceFirst(String ,String)
 6)去除空格
  String trim()//去除左右 
 7)转换大小写
  String toLowerCase();
  String toUpperCase();
 8)判断开头结尾
  boolean startsWith(String)
  boolean endsWith(String)
 9)返回字符常量池地址
  intern() 

 

三、String的构造器

1、使用字面值构造 String  str ="bjsxt";

2、使用构造器

new String()  这里创建了一个String对象

new String("") 这里创建了一个String对象,并且指向字符串常量池中的“”对象

str1 =new String("bjsxt");
 str2 =new String("bjsxt");这里产生了3个对象,两个String对象,一个“bjsxt”

 

四、String的地址问题

//编译时就能确定值
 String s1 ="a1";
 String s2 ="a"+1;
 这样s1和s2都指向同一个字符串常量

 

//运行确定值 (变量)
String s3 ="a";
s2 = s3+1; // new String(s3+1)

s2创建了一个String对象,指向了“a1"这个常量

 

//常量  与字面值相同  编译时就能确定值
  final String S4 ="a";
  s2 =S4+1;

 

但是注意:方法的返回结果时运行期才能确定值。这时候也相当于先new一个String对象,然后在指向字符串常量

 

四、有一种蛋疼叫做乱码

1、编码与解码

解码:字节------》字符

编码:字符------》字节

 

2、java编码

getBytes() 
getBytes(String charsetName) //使用指定字符集进行编码

 

3、解码

new String(byte[]);
new String(byte[],起始索引,长度)
new String(byte[],解码集)  
new String(byte[],起始索引,长度,解码集)

 

4、

出现乱码的原因
 1、字节数不够
 2、编码集与解码集不统一
 

 五、其他字符串类:StringBuilder StringBuffer

1、String、StringBuilder、StringBuffer区别

1)线程安全 String StringBuffer 线程安全   StringBuilder 不安全

2)String长度不可变,StringBuilder StringBuffer长度可变

3)方法重写: equals
       String:比较内容
       StringBuilder StringBuffer:没有重写equals  比较地址

 

六、分割字符串

1、StringTokenizer——————》迭代器  :不支持正则

用法如下图:
结果为

 

用法2:将分隔符显示出来


结果为

 

2、String的split方法

这个方法支持正则,直接用string对象.split()就可以

 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值