A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© (_演绎、青春   /  2014-5-26 12:03  /  6707 人查看  /  48 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int[] a=new int[] {2,3,4,5,6}和int [] a1= {2,3,4,5,6} 区别其实是:第一个其实在内存中开辟了两个空间即是指向了两个对象,第二个只指向了一个对象,和字符串String类似,String b="abc"   String c=new String("abc");所以用a.equals(a1)会返回false,但是在字符串中用b.equals(c)会返回true是因为在String类中已经重新定义了Object类中的equals()方法,比较的是其中的值而不是地址了。(参考)
回复 使用道具 举报
夏日蓝雪 发表于 2014-6-12 17:27
亲自试验了一下,代码如下:

class Practise

是因为String类中的equals方法是被覆写过的
回复 使用道具 举报
学习了,这样的帖子恨有价值
回复 使用道具 举报
夏日蓝雪 发表于 2014-6-12 17:27
亲自试验了一下,代码如下:

class Practise

学习了。。。。谢谢
回复 使用道具 举报
int[] arr = int[]{2,3,4,5,6}:在堆内存中先开辟了一个空间,然后这个空间有个默认的长度值,在读取后面{}中的内容,给数组长度重新赋值。

int[] arr = {2,3,4,5,6}:在同样堆内存中开辟一个空间,但是直接就把长度赋值为5
不知道对不对?
回复 使用道具 举报
夏日蓝雪 发表于 2014-5-27 17:59
这个问题应该类同于 String str="abc"与 String str1=new String("abc")的区别吧?String类也相当于数组, ...

String str="abc"其实就等于  String str=new String("abc");   str对象一旦创建,就会在推内存中有个“abc”当你下次再去  str1 =new String("abc")的时候,其实就只是把  内存中已经有的abc的内存地址的引用给了str1
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马