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 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
qq_32454729
qq_32454729 完美
2 年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
int [][]a=new int[4][4]
 高人指点:int[4][4] a=new   int[][]; 你只是在栈上申请了一个可以维护 int[4][4]得引用而已,new之后的才是真正要再堆上分配[4][4]内存,你不给他,他怎么会知道呢?回答1: int[] tempt=null; //申明一个整型的数组 tempt=new int[0];//创建一个容量为0的数组,并让tempt指向它 =============
输入 int a[]=new int[] {4,6,8,3,5,10},输出第一大,第二大的数;
输入 int a[]=new int[]{4,6,8,3,5,10},输出第一大,第二大的数; public class Test { public static void main(String[] args) { int[] numbers=new int[]{4,6,8,3,5,10}; sortArr(numbers); System.out.println("第一大的数是
SUN_Java程序员认证考试题库(三)
1.现有:     class TestApp{     public static  void main (String[]  args){     for (int i=0; i     if(i==3)     break;     System. out .print (i);     }     }     }     程序运行后的输出是哪项?     A.0123
js的Boolean对象初始值
Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。 创建 Boolean 对象 使用关键词 new 来定义 Boolean 对象。下面的代码定义了一个名为 myBoolean 的逻辑对象: var myBoolean=new Boolean() 注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那
int和unsigned int的细节问题(重要细节)
[cpp] view plain copy int main()   {       int a = -6;       unsigned int b = 4;       if(a+b > 0)           printf("a+b>0\n");//这句话被打印       else           printf("a+b);       
第4期
1,FixedUpdate(),Update(),LateUpdate()的用法与区别。 9ria游戏开发社区的黄祖祥的文章《关于Unity3D中的Update、LateUpdate、FiexdUpdate》: http://bbs.9ria.com/thread-417976-1-1.html  这个在DC老湿的眼里可以算的上是标准答案了。 当然黄同学也是参考了,博客园的赵青青的
Java笔记(11)-数组和枚举,int [] a,int a[],创建数组,数组遍历,复制数组,排序和二分法,枚举
数组和枚举,创建数组,遍历数组,排序,二分法查找**数组是相同类型变量按顺序组成的一种复合数据类型**,称这些相同的变量为数组的元素或单元。数组通过数组名加索引来使用数组的元素。 **数组属于引用型变量**,创建数组需要经过**声明数组**和**为数组分配变量**这两个步骤。
int *p = new int(5); 和 int *p = new int[5]的区别
int *p = new int(5);  这句是从堆上分配一个int型变量所占的字节内存,这个内存单元存放的整数值为5,然后让一个整形的指针变量p指向它的地址。 释放方式:delete p; int *p = new int[5];  这句相当于从堆上分配一个含有5个元素的整形数组所占的字节内存,然后让一个整形的指针变量p指向它的首址。 释放方式:delete []p;(注意这个[]不
b=i<10 | methodB(4);b=i<10 || methodB(8);
/** * */ package com.mischen.cn; /** * @author mischen * */ public class Test1 { private static int j=0; private static boolean methodB(int k){ j += k; switch(j){ case(4): j+=1;
Android自定义组件系列【15】——四个方向滑动的菜单实现
今天无意中实现了一个四个方向滑动的菜单,感觉挺好玩,滑动起来很顺手,目前还没有见过这样的应用,以后能不能在应用中出现或者说有没有实用价值就不好说了,既然已经做出来了就贴出来让大家也玩弄一下,说不定对你有所启发。一、效果演示(说明:目前没有安装Android模拟器,制作的动态图片太卡了,就贴一下静态图片吧,实际效果可以下载源代码查看)(向上滑动)(向下滑动)(向左滑动)(向右滑动)二、实现过程介绍1