【JavaSE】String-字符串

目录

▮String的基础用法

▮String是什么

▪String是一个类

▪String对象的创建

▮String常用方法

▮String的不可变性

▮可变的String:StringBuilder和StringBuffer

▮常量字符串

▪字符串常量池

▪共用一个对象


 字符串常用方法:http://t.csdn.cn/xTOAm


         欢迎各位在评论区提问或指出问题,请多多赐教   ——海鱼🐟


▮String的基础用法

a65a66ae0d8a400aa2a3d334e5297670.png

         String的两种定义方式就不多说了,String的基础用法里也就“+”和“+=”注意一下。“+”表示拼接;“ str += " word" ”后,str = "hello word",注意word前有个空格,“+”不会自动添加空格。

▮String是什么

▪String是一个类

3ff8f53734c04b39b2ee999eaf405b35.png

        String不是一个基础类型,它是一个类。String里有一个private和final修饰的char[ ]数组,还有若干个public修饰的方法即可。这些方法里有的是类方法,有的是实例方法。

▪String对象的创建

30d8f42c45104f5a8651539da09ab30f.png

         因为String是一个类,所以“str”是一个对象的引用。在str指向的对象里,仅有一个类型为char[ ]的实例变量value。value是一个char[ ]的引用,指向堆区里的char数组。

        从上可以看出,“str”只是一个指向对象的引用;所以,通过“ str1 == str2 ”来比较相同字符串是错误的。“ == ”比较的是字符串对象所在的地址,得用equals( )实例方法来比较字符串是否相同。

▮String常用方法

String常用方法:http://t.csdn.cn/xTOAm

▮String的不可变性

2e91ec5c2ed34a05b925768100c143aa.png

         因为不可修改性的存在,因为final修饰了value;所以,String中很多看似修改了value的方法,其实都是通过创建新的String对象来实现的。比如,字符串连接方法:concat(String str)。

▮可变的String:StringBuilder和StringBuffer

aa2077dcdfbb42ada933ddd7bd63570e.png

         当我们想去改变字符串时,目前还是多多使用StringBuilder。它所有的方法跟String的方法差不多,它的变量里也有value,只多了一个记录已使用字符个数的count。

▮常量字符串

da0f925e55fb467da422f48f60caaa27.png

▪字符串常量池

ff4a4d9a9549415e8504f75a94c5cd9b.png

         关于字符串常量池的内容我们不多讲,只需知道字符串常量池用来存放常量形式的字符串,这些字符串都是String的对象,使用此字符串时,调用的都是常量池中那个对应String对象。

       因为常量也是对象,所以常量也有String的方法,比如,"hello".length();

▪共用一个对象

3c683156cd1743ada525d375f8f3426b.png

        str1 = “hello”,不是new出一个新的对象再传给str,而是直接把对象"hello"的位置传给str1。所以str1 == str2,他们指向同一个常量字符串对象,地址自然相同。但要注意,比较字符串是否相同还是得用equals( )方法,常量字符串这只是一个特殊情况。

        •代码实例

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = "hello";
    if(str1 == str2){ //比较的是对象地址,而不是对象里的char[]数组
        System.out.println("str1 == str2");
    }
}

        •运行截图

549ed859fbf44854b34a17c75d078a8a.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值