关于java中string字符串的理解

1:String提供了inter()方法。调用该方法时,如果常量池中包括了一个等于此String对象的字符串(由equals方法确定),如果创建一个string对象放在堆栈中 ,如果调用了inter()方法就会把字符串放在常量池中。

2:string a="" ;a+="b"+"c'在此过程中创建一个stringbuilder对象 然后调用二次append方法把b和c拼接

3:stringbuild和stringbuffer的区别 stringbuilder没有线程安全 stringbuffer给方法上加上一个synchronize关键字,保证线程安全,但是降低效率

4:stringbuilder和stringbuffer拼接字符串是创建一个长度为16的char数组,把数据放在里面 如果拼接的字符串长度超出可以理解为新创建一个char数组把原来的数组数据放在里面,丢弃旧的数组,长度可能为两倍

5:string是不可变的 有助于线程安全

6:直接定义一个字符串会放在常量池中,new一个字符串会放在堆栈中;对象的引用地址不一样

7:==比较的是对象的引用地址

8:字符串间的+号拼接字符串内部使用stringbuilder实现的 

9:一个char等于两个byte java9以后stringbuilder的是byte数组

10:新定义一个string如果常量池有则返回,没有就在常量池创建 返回对象引用地址

疑问:String a="A"+"B"+"C";
        String d="ABC";
        System.out.println(a==d);

a内部是stringbuilder拼接的应该放在堆栈中 ,d应该在常量池中 但是输出的结果却是true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值