关于String的疑难杂症

String类的复杂性

第一、String的定义

string是一个类并不是一个定义数据类型的修饰符
它可以这样定义

//第一种方式,直接定义
String s="abc";
//第二种方式,new出来
//参数可以是字节数组类型,会直接将二进制数组转换为字符串类型
String s1=new String();

第二、String的字符串常量池

字符串的值不可变,他们的值在创建后不能被更改

 		String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);

输出结果为:true
解析:
用两个==来比较,基本数据类型比较的是数据值,引用数据类型比较的是地址值
当使用双引号来创建字符串的时候,jdk会检查该字符串在字符串常量池中是否存在,存在就不会创建,而是直接复用。也就是说上面两个变量指向同一个地址值

		String s1 = "abc";
        String s2 = new String("abc"); 
        System.out.println(s1 == s2);

输出结果为:false
解析:
new出来的string对象,会在堆内存中分配一个空间,所以上面两个变量值是一样的,但是地址值不一样
所以我们想只比较值是否一致,一般使用spring类的equals方法

第三、string类的几种常用方法在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第四、面试题

String类是否可以继承?
答:不能
原因:String类被final修饰,是最终类,无法被继承

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值