JAVA 數組

来源:http://www.cnblogs.com/moxia/archive/2016/08/28/5815252.html
-Advertisement-
Play Games

數組對每門編程語言都是重要的數據結構之一,java語言提供的數組是用來儲存固定大小的同類型元素的。 當你需要保存一組數據類型相同的變數或者對象時,我們不可能給每個變數都定義一個變數名,這樣的操作會使代碼臃腫、工作量大且無意義。這時我們就需要數組來保存這些數據。數組根據需要的不同分為一維數,二維數組和 ...


  數組對每門編程語言都是重要的數據結構之一,java語言提供的數組是用來儲存固定大小的同類型元素的。

  當你需要保存一組數據類型相同的變數或者對象時,我們不可能給每個變數都定義一個變數名,這樣的操作會使代碼臃腫、工作量大且無意義。這時我們就需要數組來保存這些數據。數組根據需要的不同分為一維數,二維數組和多維數組。下麵我們來看下數組的聲明、創建和初始化。

  一、數組的聲明

  要在程式中使用數組,就需要先聲明數組,下麵是聲明數組變數的語法: 

  一位數組的聲明方法: 

  type[] 數組名;(首選方法)

  type  數組名[]; (效果一樣,但不推薦)

  數組在聲明時不能指定器長度(數組中元素的個數) 

  二、數組的創建 

  Java中使用new關鍵字來創建數組的,語法如下: 

   方式1(推薦,更能表現現數組的類型)

  type[]  數組名 = new type[數組中元素個數]; 

   eg:

    int[]  a = new  int[3];

  數組名,也即應用a,指向數組元素的首地址。

   方式2(定義時直接初始化)

  type[] 變數名  =  new type[]{逗號分隔的數組元素} 

  其中紅色部分可以省掉,所以又分兩種:

  1、int[]  num=new int[]{1,2,2,3,3};

  2、int[]  num1= {1,3,6,87,4};

  其中 int[]  num=new int[]{1,2,2,3,3};第二個方括弧不能加數組長度,因為數組個數是由後面花括弧決定的。

  Java中的每個數組都有length屬性,表示數組的長度。

  length屬性是public final int的,即length是只讀的。數組長度一旦確定,就不能改變大小。

  

  二維數組的定義方法:

 1 int[][] table = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 5, 6, 3 } };
 2 
 3         int[][] table1 = null;
 4         table1 = new int[3][3];
 5 
 6         int[][] table2 = new int[3][3];
 7         table2[0][0] = 11;
 8         table2[0][1] = 121;
 9         table2[0][2] = 11;
10         table2[1][0] = 11;
11         table2[1][1] = 121;
12         table2[1][2] = 11;
13         table2[2][0] = 11;
14         table2[2][1] = 121;
15         table2[2][2] = 11;
16         System.out.println();

   二維數組的遍歷

1 for (int row = 0; row < table.length; row++) {
2             for (int column = 0; column < table[row].length; column++) {
3                 System.out.print(table[row][column] + "\t");
4             }
5             System.out.println();
6 }

  三、數組的初始化

 

  1.動態初始化:數組定義與為數組分配空間和賦值的操作分開進行;
  2.靜態初始化:在定義數字的同時就為數組元素分配空間並賦值;
  3.預設初始化:數組是引用類型,它的元素相當於類的成員變數,因此數組分配空間後,每個元素也被按照成員變數的規則被隱士初始化。

 

  動態實例:

 1 public class Arrays
 2 {  
 3      public static void main(String args[]) {  
 4          int a[] ;  
 5          a = new int[3] ;  
 6          a[0] = 0 ;  
 7          a[1] = 1 ;  
 8          a[2] = 2 ;  
 9          String string[] ;  
10          string= new String[3] ;  
11          string[0] = "張三";  
12          string[1] = "李四" ;  
13          string[2] =  "小明";  
14      }  
15 }  

   靜態實例:

1 public class Arrays     
2 {     
3      public static void main(String args[]) {     
4          int a[] = {0,1,2} ;     
5          String[]  string = {"張三","李四","小敏"} ;     
6      }     
7 }   

    預設實例:

1 public class Arrays     
2 {     
3      public static void main(String args[]) {     
4          int[]  a  = new int [5] ;     
5          System.out.println("" + a[3]) ;     
6      }     
7 }   

    處理數組:

  數組的元素和數組大小是確定的,並且數組的元素有多個,所以當處理數組時,我們通常使用基本for迴圈和增強for迴圈 

  示例:

  該實例完整地展示瞭如何創建、初始化和操縱數組:

 1 public class Array {
 2  2 
 3  3    public static void main(String[] args) {
 4  4       double[] List = {1.9, 2.9, 3.4, 3.5};
 5  5 
 6  6       // 列印所有數組元素
 7  7       for (int i = 0; i <List.length; i++) {
 8  8          System.out.println(List[i] + " ");
 9  9       }
10 10       // 計算所有元素的總和
11 11       double total = 0;
12 12       for (int i = 0; i < List.length; i++) {
13 13          total += List[i];
14 14       }
15 15       System.out.println("Total is " + total);
16 16       // 查找最大元素
17 17       double max = List[0];
18 18       for (int i = 1; i < List.length; i++) {
19 19          if (List[i] > max) {
20 20             max = List[i];
21 21          }
22 22       }
23 23       System.out.println("Max is " + max);
24 24    }
25 25 }
Array1.java

   增強for迴圈遍曆數組

    JDK 1.5 引進了一種新的迴圈類型,它能在不使用下標的情況下遍曆數組。

   該實例用來顯示數組myList中的所有元素:

 1 public class Array {
 2 
 3    public static void main(String[] args) {
 4       int[] List = {1,9,2,9,3,4,3,5};
 5 
 6       // 列印所有數組元素
 7       for (int a:List) {
 8          System.out.println(a);
 9       }
10    }
11 }

 

   數組的複製

   1、使用for迴圈複製

 1 public class ArrayCopy {
 2   
 3       public static void main(String[] args) {
 4           int[] number = { 11, 2, 23, 12, 4, 34, 5 };
 5           int[] number1 = new int[number.length];
 6   
 7           if (number != null && number.length > 0) {
 8               for (int i = 0; i < number.length; i++) {
 9                  number1[i] = number[i];
10              }
11  
12              for (int value : number1) {
13                  System.out.print(value + "\t");
14              }
15          }
16      }
17  }
Array2.java

    2、copyOf方法複製數組

 1 public class Text {
 2     public static void main(String[] args) {
 3         int[] a={2,5,2,2,2,6,2,3};
 4         
 5         Text t=new Text();
 6         int[] m=t.copyOf(a, a.length);
 7         for(int n :m){
 8             System.out.print(n+" ");
 9         }
10         
11         System.out.println();
12         
13         int[] b=Arrays.copyOf(a, a.length);
14         for(int n : b){
15             System.out.print(n+" ");
16         }
17     }
18     public static int[] copyOf(int[] b,int newLength){
19         return b;
20     }
21 }
Array3.java

   3、將指定數組的指定範圍複製到一個新數組(copyOfRange)

1 public class Text {
2     public static void main(String[] args) {
3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
4         int[] b = Arrays.copyOfRange(a, 0, 3);
5         for (int n : b) {
6             System.out.print(n + " ");
7         }
8     }
9 }

 

  數組排序

 1 public class Bubble {
 2 
 3     public static void main(String[] args) {
 4         int a = 100;
 5         int b = 46;
 6         /*
 7          * int temp = 0; temp = a; a = b; b = temp;
 8          */
 9         /*
10          * a = a + b; b = a - b; a = a - b;
11          */
12         /*
13          * a = a ^ b; b = a ^ b; a = a ^ b;
14          */
15 
16         System.out.println("a=46,b=100 " + "\t" + a + " " + b);
17 
18         // 冒泡排序
19         int[] number = { 11, 2, 23, 12, 4, 34, 5 };
20         // 11, 2, 23, 12, 4, 34, 5
21 
22         System.out.println("排序前:");
23         for (int num : number) {
24             System.out.print(num + "\t");
25         }
26 
27         for (int i = 0; i < number.length; i++) { // 控制拿出數組中的第幾個元素
28             for (int k = 0; k < number.length; k++) {
29                 if (number[i] > number[k]) {
30                     int temp = 0;
31                     temp = number[i];
32                     number[i] = number[k];
33                     number[k] = temp;
34                 }
35             }
36         }
37 
38         System.out.println("\n排序後:");
39         for (int num : number) {
40             System.out.print(num + "\t");
41         }
42     }
43 }
Array4.java

   使用sort方法排序

 1 public class Text {
 2     public static void main(String[] args) {
 3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
 4         Arrays.sort(a);
 5         for(int b:a){
 6             System.out.print(b+" ");
 7         }
 8     }
 9     
10 }

 

   產生一個不重覆的隨機數組

 1 public class NoRepeatArray {
 2     public static void main(String[] args) {
 3         System.out.println();
 4         Random rd = new Random();
 5         System.out.println(rd.nextInt(5) + 1); // 0-9之間的隨機數
 6 
 7         // 從1-5之間生成5個不重覆的隨機數
 8         int[] numbers = new int[5];
 9         // 定義存儲值數組的索引
10         int index = 0;
11         System.out.println("---------------------------------\n");
12         for (int i = 1; i <= 5; i++) {
13             Random rd1 = new Random();
14             int num = rd1.nextInt(5) + 1;
15 
16             if (numbers[0] != 0) {
17                 boolean flag = false; // 控制是否存在重覆元素
18 
19                 // 遍歷生產數組中的元素
20                 for (int j = 0; j < numbers.length; j++) {
21 
22                     if (num != numbers[j]) {
23                         flag = true;
24                     } else {
25                         flag = false;
26                         break;
27                     }
28                 }
29 
30                 if (flag == true) {
31                     numbers[index++] = num;
32                 } else {
33 
34                     // 發現有重覆元素重新產生新的隨機數
35                     i--;
36                 }
37 
38             } else {
39                 numbers[index++] = num;
40             }
41 
42         }
43 
44         for (int val : numbers) {
45             System.out.print(val + "\t");
46         }
47     }
48 }
Array5.java

 

 

  數組的比較

   如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。此外,如果兩個數組引用都為 null,則認為它們是相等的。

 1 public class Text {
 2     public static void main(String[] args) {
 3         int[] a = { 2, 4, 2, 77, 22, 777, 34 };
 4         int[] b = { 2, 4, 2, 77, 22, 777, 34 };
 5         int[] c = { 4, 2, 22, 77, 2, 777, 34 };
 6         
 7         boolean flag = Arrays.equals(a, b);
 8         System.out.println(flag);
 9         
10         boolean flag1=Arrays.equals(a, c);
11         System.out.println(flag1);
12     }
13 }

  以上實例編譯運行結果如下:

true
false

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • C# 為支持LINQ添加了許多語言特性: 隱式類型局部變數 對象初始化器 Lambda表達式 擴展方法 匿名類型 瞭解這些新特性是全面瞭解LINQ的重要先解條件,因此請不要忽視它們. (一) 隱式類型局部變數 processData這個類中的亮點是 {get;set;} 它是一個新特性, 系統會自動 ...
  • 摘一段模式的說明, F#的: msdn是這麼描述它的:“模式”是用於轉換輸入數據的規則。模式將在整個 F# 語言中使用,採用多種方式將數據與一個或多個邏輯結構進行比較、將數據分解為各個構成部分,或從數據中提取信息。 模式匹配自有其定義,同時也有很多種類,這裡針對相對複雜的【結構比較】和【數據抽取】進 ...
  • 早上下起了暴雨 鬧鐘還未響起就聽到雨滴嘩啦啦擊打窗戶的聲音,被吵醒了。起床上班,在樓下的十字路口,暴雨大到完全看不清對面,兩個穿著雨衣的交警站在路口中間指揮著過往的車輛,大家都慌慌張張、急急忙忙的打著各式各樣的雨傘在走,有的往地鐵站,有的往公交站,而我,站在樓下等車來... 這是前兩天的看到了,不是 ...
  • 原因: 因為在網上下載視頻教程,有的名字特別長,一般都是機構或者網站的宣傳,不方便直接看到視頻的簡介,所以做了下麵的第一個功能。 因為老師發的課件中,文件夾太多,想把docx都放在同一個文件夾下麵,一個一個找出來太麻煩,所以做了第二個功能。 最近剛剛學了Java文件和流的知識,所以正好練練手,這也是 ...
  • 搞了個簡單的Excel導入, 用的是PHPExcel(百科:用來操作Office Excel文檔的一個PHP類庫, 基於微軟的OpenXML標準和PHP語言) 好, 不說了, 開始吧... 首先得有PHPExcel類庫, 點這裡下載 https://github.com/Zmwherein/PHPE ...
  • ...
  • 序列(sequence)【題目描述】蛤布斯有一個序列,初始為空。它依次將 1-n 插入序列,其中 i插到當前第 ai 個數的右邊 (ai=0 表示插到序列最左邊)。它希望你幫它求出最終序列。【輸入數據】第一行一個整數 n。第二行 n 個正整數 a1~an。【輸出數據】輸出一行 n 個整數表示最終序列... ...
  • 由於使用DriverManager獲取資料庫連接時,由於DriverManager實現類中有一段靜態代碼塊,可以直接註冊驅動,且可以同時管理多個驅動程式 所以當換資料庫連接時需要指定不同的資料庫,那麼就需要反覆修改properties配置文件(雖然並不麻煩),所以我想將每種驅動連接程式的proper ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...