Java的String类常见的问题

问题1:String是基本数据类型吗?

不是,而是引用类型。数组元素能用下标访问,String则不行,想要访问单个字符时必须借助String类里面的的charAt(intdex)方法,index是字符下标

               String str = new String(“abc”);   (记住这句代码,后面也会用)

0c8e36dca0cb419d97a0c091c4a57a25.png

问题2:String对象创建后能直接修改吗?

不能直接修改,因为String类里面用final修饰(变成了常量),一旦实例化一个String对象,就不能改里面的元素了

问题3:String对象创建后怎么通过其他方式修改?

方法1:把String字符串转换为字符数组再修改

char[] charArray = str.toCharArray();

然后修改后也可以再转换为String类型: str = new String(charArray);

方法2:String字符串转换为StringBuilder类型后再修改

StringBuilder newstr = new StringBuilder(str);

 newstr.setCharAt(2,'d');

其中2是“abc”中‘c’的下标,修改后字符串由“abc”变成“abd”

方法3:String字符串转换为StringBuffer类型后再修改

StringBuffer newstr = new StringBuffer(str);

问题4:如何判断2个String类型字符串的值是否完全一样?

用String类提供的equals()方法。用(str1==str2)是错误的,str1,str2均为字符串引用,此时判断的是str1和str2所指向的字符串的地址是否相同,而不是字符串的值

问题5:String类能被其他类继承吗?

不能,因为String由final修饰,所以不可被继承

问题6:String  str = "abc"与String  str = new String("abc")一样吗?

不一样,对于String  str = "abc",“abc”字符串被存放在常量池中,编译时编译器首先会在常量池中寻找“abc”字符串,如果有直接取出来,如果没有就new一个“abc”放在常量池中

对于String  str = new String("abc"),编译时编译器直接在堆区里new一个字符串“abc”,不会到常量池里去查询

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值