2 qq 32454729 qq_32454729 于 2016.04.10 13:26 提问

为什么new int[4]== new int[4]的boolean值为flase

如题为什么new int[4]== new int[4]的boolean值为flase。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

8个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.10 13:31

这个比较的是两次new int[4]的地址,比较的是地址啊。。。
当然会不一样了

qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
qq_32454729
qq_32454729 完美
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.10 13:32

int [][]a=new int[4][4]
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

qq_31484859
qq_31484859   2016.04.10 13:31

因为是不同地址呀,new产生了int数组,返回了该数组的开头地址,很显然,调用了两次new,是在不同地方开辟的数组,所以地址不同呀

zcw1994
zcw1994   2016.04.10 13:40

这个比较的是地址,调用了两次new,地址不同,和字符串比较类似

MikoGodZd
MikoGodZd   2016.04.10 14:26

==比较的是内存地址,new是创建一个新的内存当然不一样啦

H_JinXian
H_JinXian   2016.04.10 15:31

两次new方法,创建两个对象,它们所对应的内存空间的地址是不一样的,而==这个比较,比较的是地址,所以返回的是false

qq_34108945
qq_34108945   2016.04.10 15:31

这还不简单,你输出两个的值看看就只知道了;int[] 属于引用类型,引用类型有一个共同的父类Object,在这里就调用了Object的toString方法,获得了两个不同对象的句柄(地址),所以你用==判断两个不同的地址肯定会返回false啦,希望能帮到你
System.out.println(new int[4]);
System.out.println(new int[4]);

msdnwolaile
msdnwolaile   2016.04.10 15:17

给你一段代码(C++的,但是基本上是通的):

 #include <iostream>                                                                                                                             
using namespace std;

int main()
{
        int *p,*q;
        p = new int[4];
        q = new int[4];
        cout<<p<<endl;
        cout<<q<<endl;
        cout<<&p<<endl;
                cout<<&q<<endl;

        return 0;
}

运行结果(linux-64):
0x16d8010
0x16d8030
0x7fffd019ecf0
0x7fffd019ecf8

嗯嗯,这里面涉及到堆栈的问题
栈区存放的是:函数的参数以及函数中的局部变量(如上题中的:p和q,都在栈区中)
堆区存放的是:程序运行过程中再次申请的空间也就是常用的(New,malloc,free,delete)函数
至于为什么由:0x16d8010跳到0x16d8030
只是因为在堆区分配了四个整形字节分别为:
0x16d8010
0x16d8014
0x16d8018
0x16d801c
又因为指向的堆区分配空间是不连续的,所以下一次分配到了
0x16d8030处,

至于后面两个值,是因为指针在linux-64位占8字节

所以他们不相等,是在正常不过的事情了!!!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!