java核心API之String,StringBuffer和StringBuilder以及equals与==的区别和联系

String类:
构造方法:

A:String() 空构造创建字符串。
B:String(byte[] bytes) 把字节数组转成字符串
C:String(byte[] bytes, int index, int length) 把字节数组的一部分转成字符串
D:String(char[] value) 把字符数组转成字符串
E:String(char[] value, int index, int count) 把字符数组的一部分转成字符串
F:String(String original) 把字符串转成字符串

字符串的拼接:

String s = new String();
 System.out.println("s:" + s); // 说明重写了toString()方法 不然会打印地址值
String s="hello";     s+="world";  字符串的拼接非常耗费内存"hello" "world"依然

问题:
String s1 = new String(“hello world”); String s2 = “hello world” 比较区别?
答:
前者创建了两个对象 后者只创建了一个对象,对于后者下次在创建同样的内容(以同样的方法)不会再在内存中生成新的
String str = “hello”;
str是一个引用,指向了常量池中的”hello”这个对象。
对于new String(“…”)
在堆中new出来的这个对象自己有一个成员char []value来指向这个在常量池中字符串的。

s1==s2 //返回flase 因为对于引用类型 比较的是地址值
s1.equals(s2) //返回 true 因为 String重写了equals方法 所以只比较值而不比较地址
内存图解:
这里写图片描述

String s1 = "hello";
String s2 = "hello";
s1==s2; 
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值