java初级问题

String str1=new String("abc");和String str2="abc";
==和equals的区别
谢谢!

String str1=new String("abc");和String str2="abc"; 的区别在于内在上的分配,=之后,在内存中分配在堆栈中,而new之后,在内在中分配在堆中,这样会造成访问速度不一样,你要说从表面上来看,无非就是一个是直接赋值,一个是先创建对象后将对象赋给str1。
==和equals的区别:一般来说,对象都可以有这两种操作,是因为对象都有句柄,或者说是一个指针,这样指针本身是要存储在一个内存空间,而指针所指向的值(也可能是多个值),要占用另一块内存区域,那==比较的就是对象的指针值是否相等,就意味着指向的是不是同一个对象,而我们部分情况下并不是想要这样的结果,其实是想知道指针指向的值是否相等,而不管这两个值是否属于同一个对象,那就用equals吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-09
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。

java语言的本意来说:如果没有重写(override)
新类的equals(),则该方法和 == 操作符一样在两个变量指向同一对象时返回真,(即比较的是引用而不是内容)
但是java推荐的是使用equals()方法来判断两个对象的内容是否一样.比如String,Date,File类就已经通过覆盖equals()方法来比较对象内容而不是引用

==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true

参考资料:http://xingshaomin.javaeye.com/blog/111436

第2个回答  2009-05-09
equals比较的是两者的值。
而“==”是比较两者的地址。
如果
System.out.println(str1==str2);
则打印 false
System.out.println(str1.equals(str2));
则打印 true
第3个回答  2009-05-09
用最通俗的方法来判断,你记住了哦:==是用来比较数字类型的,equals是用来比较字符串类型的,它们的返回值都是Boolean类型的,不是TRUE就是FALSE;
相似回答