class StringTest
{
public static void main( String[] args )
{
String a = "Hello World";
String b = "Hello World";
String c = a;
System.out.println("a=b?"+( a==b ));
System.out.println("c=a?"+( c==a ));
System.out.println("c=b?"+( c==b ));
}
}结果为
a=b?true
c=a?true
c=b?true但是如果改为
String a = new String( "Hello World" );
String b = new String( "Hello World" );
String c = a;结果就变成了
a=b?false
c=a?true
c=b?false请问为什么会这样子?在定义时是用new好还是不用比较好??
{
public static void main( String[] args )
{
String a = "Hello World";
String b = "Hello World";
String c = a;
System.out.println("a=b?"+( a==b ));
System.out.println("c=a?"+( c==a ));
System.out.println("c=b?"+( c==b ));
}
}结果为
a=b?true
c=a?true
c=b?true但是如果改为
String a = new String( "Hello World" );
String b = new String( "Hello World" );
String c = a;结果就变成了
a=b?false
c=a?true
c=b?false请问为什么会这样子?在定义时是用new好还是不用比较好??
解决方案 »
- StringBuffer str = new StringBuffer( 10 ) ;这里的10是str的容量,我要是想在这10个容量里写东西,要怎么写呢?
- 在内网如何使用JavaMail向外网发送邮件,且不需要验证用户名和密码.
- - -请问能不能用代码实现点击事件
- ip地址的问题
- 有人熟悉jnlp么?怎么实现一个类似java web start的客户端啊?
- 请问什么样的打开的io流需要关闭?
- 新建高级群,J2EE共同学习者进..
- 帮忙解答一下,java的类变量与实例变量在应用中怎么区别?
- 怎样把一个字符串专成file文件类型
- 大家能 告诉我在APPLET里怎么查找数据库吗
- 请问如何能在一个应用程序调用另一个exe文件,在被调用的exe文件结束后捕捉到exe结束的信息?
- 求javascript的树型结构
会现在池里面查找,看是不是已经存在,没有的话才生成String s = new String("ddd");就直接在heap里面生成对象了,不查找String池
String b = "Hello World";
String c = a;
==============================
在内存堆中生成一个String对象,内容是“Hello World”,变量a引用这个对象;变量b也已用这个对象;c=a对象是赋址的,即引用的地址,所以c也引用这个对象;
在java中==是内存对象的比较,即变量是否指向同一个地址
String b = new String( "Hello World" );
String c = a;
==========================
产生一个"Hello World"对象,并赋给a;new就是产生,new同一个非单例的类得到的实例对象是String$..(这里是数字或者字母或者其组合);