数组中array==null和array.length==0的区别

//代码public class Test1 {
    public static void main(String[] args) {
        int[] a1 = new int[0];
        int[] a2 = null;
        System.out.println(a1.length);//0
        System.out.println(a2.length);//NullPointerException
} }
//输出结果

"C:\Program Files\Java\jdk1.8.0_191\bin\java"

0
Exception in thread "main" java.lang.NullPointerException
at LinkedList.Test1.main(Test1.java:8)

Process finished with exit code 1

解析:

a1 表示给数组分配了地址,但是还没有存东西;

a2表示连地址都没有分配,就是个空的

而null是不能调用方法的,所以会报空指针异常

原文地址:https://www.cnblogs.com/JohnTeslaaa/p/10534471.html

时间: 2024-10-13 22:37:11

数组中array==null和array.length==0的区别的相关文章

Java 中list==null与list.size( )==0的区别

1.list==null,意味着list压根没有地址,在堆内就不存在. 2.list.size( )= 0,意思是堆内有list,但是还没有放元素,其长度随着元素数量变化而变化,暂时为零. 3.list如果为null的话,说明没有进行初始化.这是list调用任何的方法都会抛出空异常.list.size( )==0说明list已经被new过,但      是里面没有值. 4.判断时一定要注意先后顺序,如果连杯子(list)都没有,直接判断是否有水(list.size( )),是会报NullPoin

CSS中设置border:none和border:0的区别

在我们设置CSS的时候,对标签元素不设置边框属性或者取消边框属性一般设置为:border:none;或border:0;两种方法均可. border:none;与border:0;的区别体现有两点:一是理论上的性能差异:二是浏览器兼容性的差异. 1.性能差异 [border:0;]把border设为"0"像素虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值.[border:none;]把bord

在数组中找出x+y+z=0的组合

就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlogn + n^2 * logn 解法二: 还是先从小到大排序 nlogn 假设数组排序后为 a b c d e f 我们还是要找x+y=-z 会发现-z存在的可能只能是a+f和b+e,不会存在a+e和b+f这种情况(这里很重要,保证了算法的正确性),所以两个指针一头一尾往中间扫,肯定能找出来 fis

二维数组中的查找-牛客网-剑指offer

1.问题描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 2.问题分析 水平方向.垂直方向二重循环查找 3.源代码 package www.nowcoder.com.conquerOffer.array; /** * 二维数组中的查找 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整

数组中次数超过数组长度一半的数字

问题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 分析:看到此题第一反应就是将数组中的数字进行排序,然后统计数字出现的次数.排序的时间复杂度为O(nlogn). 从另一个角度出发,数组中有一个数字出现的次数大于数组长度的一半,也就是说它出现的次数比其他数字出现次数之和还要多.因此可以在遍历数组的时候保存两个值:(1)保存数组中的值:(2)保存数字出现的次数. 步骤:(1)当遍历的下一个数字与之前保存的数字不同时, 将次数减1: (2)当遍历的下一个数字与之前保存的数字相同时,

【剑指offer】面试题51:数组中的逆序对

题目 * 面试题51:数组中的逆序对 * 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对. * 输入一个数组,求出这个数组中的逆序对的总数P. * 并将P对1000000007取模的结果输出. 即输出P%1000000007 思路 1.暴力 ,时间复杂度O(n^2) 2.归并排序的思路 :时间复杂度O(nlogn) * (1) 先将数组分成两半,递归分别计算左半边的逆序对数目leftCnt 和右半边的逆序对数目rightCnt * (2)再计算合并之后新增的逆序对

数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 程序实现: import java.util.Scanner; public class Test38 { public static void main(String[] args) { /**  * 初始化数组,测试数据可以多种途径初始化  */   Scanner in = new Scanner(System.in); /*int[] a = 

软件工程课程作业(四)--返回一个整数数组中最大子数组的和

伙伴链接:http://www.cnblogs.com/haoying1994/ 一.设计思想 本实验要求输入一个正负数混合的整型数组,长度不限,在此数组的所有子数组中找到和最大的数组,并求出相应数组的和,且时间复杂度为O(n).我们在课堂上共同讨论了多种解决方案,这些将在下面可能的解决方案中展示,在听了同学的思路和老师的讲解之后, 我们最终选取了老师课堂上描述的比较简便的思路.如下: 在输入数组的环节,采用for无限循环加if判断截止,直到触发回车键为止,将数组记录到Array中,数组长度记录

课后实验4--返回一个整数数组中最大子数组的和

伙伴链接:http://www.cnblogs.com/chengqiqin07/ 一.设计思想 本实验要求输入一个正负数混合的整型数组,长度不限,在此数组的所有子数组中找到和最大的数组,并求出相应数组的和,且时间复杂度为O(n).我们在课堂上共同讨论了多种解决方案,这些将在下面可能的解决方案中展示,在听了同学的思路和老师的讲解之后, 我们最终选取了老师课堂上描述的比较简便的思路.如下: 在输入数组的环节,采用for无限循环加if判断截止,直到触发回车键为止,将数组记录到Array中,数组长度记