2013.8.7Java語言基礎——數組

  數組是數據類型一致的變量的集合。

一個:變量

一堆(多個):數組

數組語法:

1)數組變量(引用類型變量)

  數組變量通過引用地址引用了數組(數組對象)

2)數組(數組對象)

  數組就是個體,是一個整體

  數組元素的個數叫數組的長度length

  數組元素的范圍:0 1 2…length-1

3)數組元素

  是數組中的每個變量,使用[下標]訪問

  1. 定義數組變量;
  2. 創建數組(數組對象)
  3. 訪問數組元素?
 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         //1)定義數組變量 
 5         int[] ary;//聲明int[] 數組類型的變量ary
 6         int ary1;//也是聲明數組變量,但很少使用!!!
 7         //System.out.println(ary[0]);//編譯錯誤,ary沒有初始化
 8         ary = null;//null 空,沒有
 9         //System.out.println(ary[0]);//運行異常,空指針異常
10         
11         //空指針異常發生原因:引用類型的變量值是null,不引用任何對象
12         //當利用引用變量訪問屬性(數組元素)和方法時,出現空指針異常
13         
14         //2)創建數組(創建 數組對象)
15         ary = new int[3];//數組對象有3個元素
16         //創建數組對象(new int[3]),將對象的引用賦值給ary變量
17         //ary就引用了數組對象,這個對象有3個元素
18         System.out.println(ary[0]);//0
19         //System.out.println(ary[3]);//運行異常,數組下標越界
20         //java數組元素是自動初始化的,初始值為零值,各種零值如下:
21         //0 0.0 \u0000 null false
22         double[] d = new double[3];
23         System.out.println("d[0] = "+d[0]);//d[0] = 0.0
24         char[] c = new char[3];
25         System.out.println("c[0] = "+c[0]);//c[0] = (看不出顯示什么)
26         System.out.println((int)'\u0000');//\u0000的編碼值是0
27         String[] s = new String[3];
28         System.out.println("s[0] = "+s[0]);//s[0] = null(字符串數組初始化是null)
29         boolean[] b = new boolean[3];
30         System.out.println("b[0] = "+b[0]);//b[0] = false
31         
32         //java中數組創建的3種方式
33         //new 類型[長度]
34         //類型是任何類型:基本類型、類類型(String,Integer)
35         //長度:變量或常量值:0~Integer.MAX_VALUE
36         
37         //new 類型[]{元素0,元素1,元素2}
38         //直接給出元素,元素直接初始化,元素的個數就是長度
39         ary =new int[]{2,3};
40         System.out.println(ary[0]);//2
41         
42         //靜態初始化
43         //類型[] 變量={元素0,元素1,元素2}
44         int[] ary4 = {2,3,4};
45         //靜態初始化“只能用于”聲明變量同時初始化!
46         //ary = {4,5,6}//編譯錯誤
47         ary = new int[]{4,5,6};//沒有問題
48         
49         //new int[length]適合創建不知道具體的元素,數量很多
50         //new int[]{2,3,4}適合已經知道具體元素,元素比較少
51         //{4,5,6}只適合知道元素,并只能使用在聲明變量時直接初始化
52         
53         //3)訪問數組元素
54         //數組元素一旦創建,數組的長度是不可以改變的
55         //使用.length屬性可以獲取數組的長度
56         //數組不能越界訪問,會出現運行異常
57         ary = new int[]{5,6,7};
58         System.out.println(ary.length);
59         ary[1]++;
60         System.out.println(ary[1]);//7
61         System.out.println(ary[-1]);//運行異常!下標越界
62         //迭代數組元素,迭代數組也稱為遍歷數組,就是逐一處理元素
63         for(int i=0;i<ary.length;i++){
64             System.out.println(ary[i]);
65         }
66     }
67 }

使用數組非常有用的API方法

(使用API方法:API方法封裝了常用算法功能,使用這些功能簡化開發過程,提高開發效率)

  Arrays.toString:用于字符串表示數組元素

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         String[] str =new String[]{"A","b","c","d"};
 9         System.out.println(Arrays.toString(str));//打印出數組元素[A, b, c, d]
10     }

  Arrays.equals:用于比較兩個數組內容是否相等(便捷)

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         char[] a1 = new char[]{'a','b','c'};
 9         char[] a2 = new char[]{'a','b','c'};
10         char[] a3 = new char[]{'a','c','d'};
11         System.out.println(Arrays.equals(a1, a2));//true
12         System.out.println(Arrays.equals(a1, a3));//false
13     }
14 }

  Arrays.sort:用于實現數組排序

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         char[] a = new char[]{'a','d','f','c','b','g'};
 9         System.out.println(Arrays.toString(a));//[a, d, f, c, b, g]
10         Arrays.sort(a);
11         System.out.println(Arrays.toString(a));//[a, b, c, d, f, g]
12     }
13 }

  Arrays.binarySearch:用于實現有序數組 的二分法查找

只能查找排序后的數組,不然得到的結果不穩定

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         char[] a = new char[]{'a','d','f','c','b','g'};
 9         int index= Arrays.binarySearch(a, 'c');
10         System.out.println(index);//-2負數找不到
11         Arrays.sort(a);
12         index= Arrays.binarySearch(a, 'c');
13         System.out.println(index);//在排序后數組的第2位
14     }
15 }

?數組的復制

最常見用途:數組的擴容算法

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         int[] ary1 = {4,5,6};
 9         int[] ary2 = ary1;//數組變量的賦值,但數組還是同一個。ary1 ary2互相影響
10         ary2[1]++;
11         System.out.println(Arrays.toString(ary1));//[4, 6, 6]
12         System.out.println(Arrays.toString(ary1));//[4, 6, 6]
13     //數組的復制:1)使用for循環實現 2)使用API
14     //將ary1引用數組進行復制
15         int[] ary3 = new int[ary1.length];
16         for(int i=0;i<ary1.length;i++){
17             ary3[i] = ary1[i];
18         }
19         ary3[1]++;
20         System.out.println(Arrays.toString(ary3));//[4, 7, 6]
21         System.out.println(Arrays.toString(ary1));//[4, 6, 6]
22         //使用API System.arraycopy()實現復制,比較早期,用C寫的,性能好
23         int[] ary4 = new int[ary1.length];
24         //參數:源數組,源數組位置,目標數組,目標數組位置,個數
25         System.arraycopy(ary1, 0, ary4, 0, ary1.length);
26         System.out.println(Arrays.toString(ary1));
27         System.out.println(Arrays.toString(ary4));
28         //使用Arrays.copyOf()方法(JDK1.5開始出現),底層就是arraycopy
29         int[] ary5 = Arrays.copyOf(ary1, ary1.length);
30         System.out.println(Arrays.toString(ary1));
31         System.out.println(Arrays.toString(ary5));
32         
33     }
34 }

數組的擴容 與 追加

1) 數組創建以后長度不可改變
2) 利用更換數組的方式實現擴容算法
3) 更換數組時候,利用復制方法保持原數組內容。

?數組擴容是Java API 實現的常用算法!

?

 1 package TestCode;
 2 
 3 import java.util.Arrays;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         // 擴容原理:更換新數組
 9         String[] playlist = { "song1", "song2" };
10         System.out.println(Arrays.toString(playlist));
11         playlist = new String[] { "song1", "song2", "song3" };
12         System.out.println(Arrays.toString(playlist));
13         // 擴容:為playlist擴容并追加 新 歌曲 “song4”
14         playlist = Arrays.copyOf(playlist, playlist.length + 1);
15         playlist[playlist.length - 1] = "song4";
16         System.out.println(Arrays.toString(playlist));
17         // 1) 復制新數組(增加容量)
18         // 2) 替換原數組
19         String[] newOne = new String[playlist.length + 1];
20         System.arraycopy(playlist, 0, newOne, 0, playlist.length);
21         playlist = newOne;
22         System.out.println(Arrays.toString(playlist));
23     }
24 }

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/grape/p/3244159.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377982.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377982.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377982.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ruby array_Ruby中帶有示例的Array.select方法

ruby arrayArray.select方法 (Array.select Method) In the last articles, we have seen how to iterate over the instances of Array class? We have seen that we have got methods like Array.each, Array.reverse_each and Array.map for this purpose. In this article…

十七、輪廓發現

一、輪廓發現原理 輪廓發現是在圖像邊緣提取的基礎上尋找對象輪廓的方法&#xff0c;故邊緣提取的閾值的選定會影響到最終輪廓發現的結果。 其本質是基于二值圖像的&#xff0c;邊緣提取常用Canny進行提取邊緣 輪廓發現也是基于拓撲結構&#xff0c;掃描連通圖&#xff0c;最后…

關于 WebRequest.RegisterPrefix

RegisterPrefix 方法將 WebRequest 子代注冊到服務請求。 WebRequest 后代通常被注冊來處理特定的協議&#xff08;例如 HTTP 或 FTP&#xff09;&#xff0c;但也可能被注冊來處理對特定服務器或服務器上的路徑的請求。 已注冊的預注冊保留類型包括下列類型&#xff1a; htt…

LeetCode 404. 左葉子之和思考分析

題目 計算給定二叉樹的所有左葉子之和。 如果是下面的樹&#xff0c;只有一個左葉子結點4 思考分析 由此我們可以得到左葉子結點的定義&#xff1a; cur->left !NULL && cur->left->leftNULL && cur->left->rightNULL 遞歸遍歷累積操作 …

天王蓋地虎

1&#xff0c;求有序數列中某個元素的個數 思想&#xff1a;二分找上下界&#xff1a; int element_count(int * set, int len, int e) {int f, a, b, t;for(a 0, b len - 1; a < b; set[t a b >> 1] < e ? (a t 1) : (b t - 1));for(f a, b len - 1; a…

ruby array_Ruby中帶有示例的Array.cycle()方法

ruby arrayArray.cycle()方法 (Array.cycle() Method) In this article, we will study about Array.cycle() method. You must be a little more excited to read about Array.cycle method due to its catchy name as I was pretty amazed after reading this method. In the…

十八、對已經找到輪廓的圖像進行測量

圖像輪廓的獲取可參考博文十七 一、相關原理 1&#xff0c;弧長和面積 對于弧長和面積&#xff0c;計算出來的輪廓單位都是像素 2&#xff0c;多邊形擬合 每一個輪廓都是一系列的點&#xff0c;然后通過多邊形進行擬合&#xff0c;無限的接近真實形狀 相關API&#xff1a;…

Linux 終端登錄SSH:解決SSH的Access Denied 和 make xconfig的使用

對于SSH&#xff1a; 可以不是用putty&#xff0c;尤其是putty出現 Access denied 的時候&#xff0c;請換用konsole 或者其他終端 &#xff08;如 terminal&#xff09;在command line中&#xff1a; # ssh 要訪問的主機ip eg &#xff1a; ssh 192.168.111 然后確定…

LeetCode 513. 找樹左下角的值 思考分析

題目 給定一個二叉樹&#xff0c;在樹的最后一行找到最左邊的值。 遞歸解 左下角要滿足兩個條件&#xff1a; 1、深度最大的葉子結點 2、最左結點&#xff1a;使用前序遍歷&#xff0c;優先左邊搜索。 1、確定遞歸函數的參數和返回值 參數&#xff1a;樹的根結點&#xff…

利用MyBatis的動態SQL特性抽象統一SQL查詢接口

1. SQL查詢的統一抽象 MyBatis制動動態SQL的構造,利用動態SQL和自定義的參數Bean抽象,可以將絕大部分SQL查詢抽象為一個統一接口,查詢參數使用一個自定義bean繼承Map,使用映射的方法構造多查詢參數.在遇到多屬性參數(例如order by,其參數包括列名,升序降序類型,以及可以多個列及…

ctype函數_PHP Ctype(字符類型)函數

ctype函數Ctype功能 (Ctype functions) PHP provides some of the built-in functions, which are used to verify the characters in the string i.e. to check whether a string contains the characters of specific types. PHP提供了一些內置函數&#xff0c;這些函數用于驗…

Linux 平臺下 MySQL 5.5 安裝 說明 與 示例

一.下載說明前期的一些準備說明&#xff0c;參考&#xff1a;MySQL 發展史http://blog.csdn.net/tianlesoftware/article/details/6999245Mysql 不同版本 說明http://blog.csdn.net/tianlesoftware/article/details/6723117 MySQL 分為Community Server 和 Enterprise Edition。…

開始python之旅

接觸python緣于工作所需&#xff0c;曾經接觸過C、C等語言&#xff0c;對于編程語言在學習上大體是一個套路&#xff0c;當然套路因人而異&#xff0c;適合就好。接下來&#xff0c;我將不斷分享python的知識和學習技巧&#xff0c;共同學習。 起源 初識一門語言善于先了解語言…

LeetCode 112. 路徑總和 、113. 路徑總和 II 思考分析

目錄112. 路徑總和題目遞歸解遞歸解&#xff0c;其他人的解法迭代解&#xff0c;其他人的解法113. 路徑總和 II題目遞歸解遞歸解&#xff0c;參考別人的思路112. 路徑總和 題目 給定一個二叉樹和一個目標和&#xff0c;判斷該樹中是否存在根節點到葉子節點的路徑&#xff0c;…

kotlin 查找id_Kotlin程序查找矩陣的轉置

kotlin 查找idA transpose of a matrix is simply a flipped version of the original matrix. We can transpose a matrix by switching its rows with its columns 矩陣的轉置只是原始矩陣的翻轉形式。 我們可以通過切換矩陣的行和列來轉置矩陣 Given a matrix, we have to…

[mongodb翻譯]分片和故障轉移

一個配置恰當的mongodb 分片集群不會有單點失效。 本章節描述了集群服務器中可能出現的故障&#xff0c;及相應的對策。 1. 某個mongos路由進程故障 每一個mongos會運行每一臺應用服務器上面&#xff0c;該應用服務器只能通過這個mongos進程和集群進行通信。mongos進程不是…

看張子陽的書真是收獲很多,也醒悟了很多(一)

摘錄&#xff1a; 這是有一次開會時&#xff0c;我的老總跟我們說了這樣一個事例&#xff1a;通常來說&#xff0c;醫生是很高尚的職業&#xff08;暫不考慮國內醫生的負面新聞&#xff09;&#xff0c;尤其是牙科醫生&#xff0c; 他們有著體面的工作并且收入不菲。但是&#…

【C++ grammar】抽象、封裝與this指針

目錄1、Abstraction and Encapsulation&#xff08;抽象與封裝&#xff09;1. Data Field Encapsulation (數據域封裝)2. Accessor and Mutator (訪問器與更改器)2.1. To read/write private data, we need get/set function (為讀寫私有數據&#xff0c;需要get/set函數)2.2. …

java創建臨時文件_用Java創建一個臨時文件

java創建臨時文件The task is to create a temporary file in Java. 任務是用Java創建一個臨時文件。 Creating a temporary file 創建一個臨時文件 To create a temporary file in java – we use createTempFile() method of "File" class. The createTempFile()…

十九、圖像的形態學操作

一、圖像形態學 圖像形態學是圖像處理學科的一個單獨分支學科 主要針對的是灰度圖和二值圖像 是由數學的集合論以及數學中的拓撲幾何原理發展而來 二、膨脹操作&#xff08;dilate&#xff09; 33的卷積核 以33為卷積核從左往右(從上往下)開始運行&#xff0c;若這卷積核…