1. 程式人生 > >【陣列】判斷陣列為空還是長度為0好?

【陣列】判斷陣列為空還是長度為0好?

1.問題:

判斷陣列為空還是長度為0好

2.原始碼:

public class TestArray {
    public static void main(String[] args) {
        int b[]=null;
        int a[] = new int [10];

        /*1、列印*/
        System.out.println("a陣列的長度:"+a.length);
        //System.out.println("b陣列的長度:"+b.length);//會空指標異常;

        /*2、賦值,遍歷輸出,把a中元素給b*/
for (int i=0;i<a.length;i++){ a[i]=i; System.out.println("a中元素:"+a[i]); b=a; } /*3、列印b:*/ if (null!=b&&0!=b.length){ System.out.println("b陣列的長度"+b.length); } } }

3.截圖:

這裡寫圖片描述

4.總結:

到底哪個好?看使用的場合:
①如果int a[]=null,類似,我沒有房子;
②如果int b[].length=0,類似,我有一套房子,但是是空著的;
兩個效果明顯不一樣,如果無差別的情況下,判斷一個數組為空,建議使用長度length為0來判斷,避免後面呼叫的時候空指標;

③把圖中13行登出掉,再加上圖中“3、列印b”之前的if中的判斷條件,就可以避免if裡面報錯;
④切記:null!=b要放在前面,0!=b.length()要放在後面;因為,如果b為空,就不可能有長度,一定會報
NullPointerException;
這裡寫圖片描述

相關推薦

陣列判斷陣列還是長度0

1.問題: 判斷陣列為空還是長度為0好 2.原始碼: public class TestArray { public static void main(String[] args)

演算法陣列中某兩個數的和目標值

給定一個整型陣列和一個目標值,如果陣列中某兩個數相加等於目標值,請返回這兩個數的下標。 Example: Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7

java判斷各種資料型別是否

一、前言       話說前幾天進行了一次程式碼走查,這次程式碼走查的問題呢,就是要檢查程式碼的漏洞,提升自己寫程式碼的效率。其中就有一個是java判斷資料型別是否為空的了。自己以前寫.Net的程式碼

C#陣列間的取重取餘

string[] arrRate = new string[] { "a", "b", "c", "d" };//A string[] arrTemp = new string[] { "c", "d", "e" };//B string[] arrUpd = arrRate.Inters

bzoj4035[HAOI2015]陣列遊戲

題目連結 SG S G SG函式niubia 設 SG(i) S G

LeetCode215. 陣列中的第K個最大元素 結題報告 (C++)

原題地址:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/submissions/ 題目描述: 在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不

JS山脈陣列的峰頂索引 #二分查詢

我們把符合下列屬性的陣列 A 稱作山脈: A.length >= 3 存在 0 < i < A.length - 1 使得 A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length

Leetcode刪除陣列中的重複項

Leetcode 題目要求 給定一個排序陣列,你需要在原地刪除重複出現的元素,使每個元素最多出現兩次,返回移除後陣列的新長度 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在O(1)額外空間的條件下完成 示例1.給定 nums = [1,1,1,2,2,3] 函

JS 尋找陣列的中心索引 #陣列

給定一個整數型別的陣列 nums,請編寫一個能夠返回陣列“中心索引”的方法。 我們是這樣定義陣列中心索引的:陣列中心索引的左側所有元素相加的和等於右側所有元素相加的和。 如果陣列不存在中心索引,那麼我們應該返回 -1。如果陣列有多箇中心索引,那麼我們應該返回最靠近左邊的那一個。

演算法學習9判斷是否棧的彈出順序

        輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能

LeetCode215. 陣列中的第K個最大元素

題目描述 在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 輸入: [3,2,1,5,6,4] 和 k = 2 輸出:

C指標陣列作main函式的形參

指標陣列的重要應用是作為main函式的形參,在以往的程式中,main函式的第一行一般形式為: int main()或  int main(void) 括號中為空或為“void”,表示main函式沒有引數,呼叫main函式時不必給出引數。 這是一般程式常採用的格式。實

模板字尾陣列SA

參考題目:UOJ35 解析: 這次貼的程式碼有點多,除了最裸的暴力,基本上能夠想到的其他各種複雜度能夠過和不能過的我都去寫了一遍。 但是解析可能要不知道什麼時候更了。。。 之後會把字尾陣列所有用途和性質都更新過來的。 程式碼: 雜湊二分+快速排序(複雜

leetcode刪除陣列中指定要求的重複的數字

1. 給定一個數組和一個值,刪除該值的所有例項,並返回新長度。 不要為另一個數組分配額外的空間,您必須使用常量記憶體來進行此操作。 元素的順序可以改變。 Given an array and a v

pythonnumpy陣列(array)擴充(複製)方法repeat和tile的使用

但是很多情況下不需要使用,在進行矩陣加減運算的時候會自動複製 >>> a array([[1, 2],        [3, 4],        [5, 6]]) &g

字串字元陣列和字串區別詳解

C 語言中並不存在字串這個資料型別,而是使用字元陣列來儲存字串。那麼,字元陣列就一定是字串嗎? 對於這個問題,大多教科書中的回答是“是”。其實不然,字元陣列和字串是完全不相同的兩個概念,千萬不要混淆。分析如下所示的示例程式碼。 1 #include <stdio.h> 2 #incl

C++陣列中唯一出現兩次的數

題:假設你有一個用1001個整陣列成的陣列,這些整數是任意排列的,但是你知道所有的整數都在1到1000(包括1000)之間。此外,除一個數字出現兩次外,其他所有數字只出現一次。假設你只能對這個陣列

PAT1008 陣列元素迴圈右移問題 (20 分)

1008 陣列元素迴圈右移問題 (20 分) 一個數組A中存有N(>0)個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移M(≥0)個位置,即將A中的資料由(A​0​​A​1​​⋯A​N−1​​)變換為(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A

AngularJS過濾陣列中的子集(每一個子項都過濾)

說白了就是filter+repeat; 原始碼: <!DOCTYPE html> <html> <head> <meta charset="utf-8"&

Linuxshell陣列

一、概念     shell陣列就是一個元素集合,它把有限個元素用一個名字來命名,然後用編號對他們分割槽。這個名字稱為陣列名,用於區分不同內容的編號稱為陣列的下標。 二、shell陣列的定義與增刪改查 1.shell陣列的定義 方法1:元素之間使用空格分隔,用小括號將元素括起來