String的知识点

String的知识点

  • String是不可变类, 即一旦一个String对象被创建, 包含在这个对象中的字符序列是不可改变的, 直至该对象被销毁。

  • String类是final类,不能有子类。

  • 常量池概念:Java运行时会维护一个常量池, 常量池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。

    public static void main(String[] args){
        String s1="cf";//创建了一个对象
        System.out.println(s1.hashCode());//
        s1="cs";//s1的地址已经发生了变化
        System.out.println(s1.hashCode());//
        String s11="cf"+"cs"//创建了一个对象cfcs
        //-----------------
        String s2=new String("LOL");//创建了两个对象
        Sting s3=new String("LOL");//只创建了一个对象,因为abcd上面已经创建了
        Sting s4=new String("lol");//创建了两个对象
        //------------------------------------------------------------------
        String str1 = "abc";                       //引用类型比较的是地址
    		String str2 = "abc";
    		System.out.println(str1 == str2);//t    字符串常量池的地址不变
    		System.out.println("-----------------");
    		String str21 = new String("abc");
    		String str22 = new String("abc");
    		System.out.println(str21 == str22);//f    这里比较的是两个对象new String()地址
    		System.out.println("-----------------");
    		String str31 = "ab" + "cd"; // 1个对象
    		String str32 = "abcd";
    		System.out.println(str31 == str32);//t      还是比较字符串常量池里面的地址
    		System.out.println("-----------------");
    		String str41 = "ab"; // 1个对象
    		String str42 = "cd"; // 1个对象
    		String str43 = str41 + str42;
    		String str44 = "abcd";
    		System.out.println(str43 == str44); //false     str41和str42为变量,在运行期才会被解析。
    		System.out.println("-----------------");
    		String str51 = "b";
    		String str52 = "a" + str51;
    		String str53 = "ab";
    		System.out.println(str52 == str53);//f   str51为变量,在运行期才会被解析。       
    		System.out.println("-----------------");
    		final String str61 = "b";
    		String str62 = "a" + str61;
    		String str63 = "ab";
    		System.out.println(str62 == str63);//t   str61为常量变量,编译期会被优化 
    }
    

示意图:在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值