String a = "test";
String c = "te"+"st";
a==c 是等于 true 还是等于 false
为什么?
String c = "te"+"st";
a==c 是等于 true 还是等于 false
为什么?
解决方案 »
- IO流中子类为什么要重新write(int c)方法才行?
- OAViewRowImpl,OAViewObjectImpl 引入有错吗
- 在servlert无法用 String str = config.getInitParameter("email");返回为null?
- 系统是怎么实现Runnable接口的?
- JAVA基础问题!
- 救命啊!!!
- 抛出异常出错的程序!
- 用了swt的程序,能在unix下运行吗?
- 学习 Thanking in java 中的问题!请高手进来帮帮我!!!先谢谢了~
- 很简单的问题,解决完,立即结贴!
- 我是一个菜鸟,谁能告诉我“文档注释”到底怎么用,它有什么用?谢谢
- 在线等啊!!进来看下啊~!!!
String s="string", string被保存在常量池中,之后指向string的引用都指向该字符串在常量池的入口
String a = "test";
String c = "te"+"st";
这里总共产生了3个string对象,test,te,st,a和c都指向test
上面两个大侠说的对,
如果在定义的时候用String c=new String("test")那么这两个值就不相等了。因为在new 的过程中就会新建一个对象
ps答对了的要给分哦
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
但是用new 在堆中则一定创建一个新的,不共享对象
public static void main(String []args){
String a = "test";
String c = "te"+"st";
if(a==c)
System.out.println("a==c!");
if(a.equals(c))
System.out.println("a.equals(c)!");
}
}
用它以测试就知道,确实是 true
但是String a = "test";
String c = "te"+"st"; 有很大的差距String a = "test"; 创建了两个对象
而String c = "te"+"st"; 创建了三个对象
用==来比较是比较是否指向同一个对象,那应该比较对象a和c是否相等吧!
用equals()方法是比较内容,那应该比较字符串"test"和"te"+"st"是否相等吧!
你说String a="test"是那2个对象啊?
String c="te"+"st"是那3个对象啊?
String c="te"+"st";一个"te",一个"st",另一个是指向"test"的引用对象c
你和你弟弟是一个妈生的!!可是毕竟你还是你 你弟弟还是你弟弟不是同一个人@!!
叫你的名字!!比如你叫张三 张三就是你 你就是张三 都是同一个人!!
提倡 用对象比较!~!!同是顶上面的!!