Java之深入数组

先看个例子

例子1

这里输出的结果是:false
这里看下equals的源码

源码1

显而易见,只有当两个if都不通过时,显false


1.所在内存
数组所在内存图

例子2

数组里的值是保存在:堆内存
而图中的String在:常量池   传送门:http://blog.csdn.net/fanfan4569/article/details/51579604
2.
 char[]是引用类型
 String是个类
 所以 无法 instanceof

下面整理数组部分的知识:

1.定义数组时不能指定数组的长度(这里要和C/C++区分开来)
       因为此时数组是一种引用类型的变量,还未指向任何有效的内存
2.指定初始值时,系统按照如下规则进行分配初始化:(数组元素的类型)
  整数类型(byte short int long),—–》0
  浮点类型(float double)—–》0.0
  字符类型(char)—–》’\u0000’
  布尔类型(boolean)—–》false
  引用类型(类 接口 数组)—–》null
3.使用foreach循环迭代数组元素时,并不能改变数组元素的值
       如果删除操作,则可能引发ConcurrentModificationException异常
4.char[][] 定义了二位字符数组。在Java中,使用字符串对char数组赋值,必须使用toCharArray()方法进行转换。

补充:

真数组:也是Java特性之一
(1)在内存中连续分配。
(2)数组所存在的内存空间为数组专用,避免了数据被覆盖的问题。
(3)数组内存放的类型是确定的,唯一的。
详细可查看各种百科,名词。

Java没有多维数组

type[][] arrName;
arrName = new type[length][];

  这个二维数组实际上完全可以当成一维数组使用:使用new type[length]初始化一维数组后,相当于定义了length个type类型的变量;类似的,使用new type[length][]初始化这个数组后,相当于定义了length个type[]类型的变量。

下面判断两个二维数组维度是否一样

public static boolean equals(int[][]a,int[][]b){
            if (a==b)
                return true;
            if (a==null || b==null)
                return false;

            int lengthOfa = a.length;
            int lengthOfb = b.length;

            if (lengthOfa!=lengthOfb)
                return false;

            for (int i=0; i<lengthOfa; i++) {
                if(!Arrays.equals(a[i], b[i]))
                    return false;
            }
            return true;        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值