Java 數組基礎

數組

  數組(Array):相同類型數據的集合。

?

定義數組

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

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

  比如:

  int[] a = new int[10];

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

  方式2(同C語言)

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

  如:

  int a[] = new int[10];

  方式3 定義時直接初始化

  type[] 變量名 = new type[]{逗號分隔的初始化值};

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

  int[] a = {1,2,3,4};

  int[] a = new int[]{1,2,3,4};

  其中int[] a = new int[]{1,2,3,4};的第二個方括號中不能加上數組長度,因為元素個數是由后面花括號的內容決定的。

?

數組運用基礎

數組長度

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

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

equals()

  數組內容的比較可以使用equals()方法嗎?

  如下程序:

  

public class ArrayTest
{public static void main(String[] args){int[] a = {1, 2, 3};int[] b = {1, 2, 3};System.out.println(a.equals(b));}    
}

  輸出結果是false。

  所以證明不能直接用equals()方法比較數組內容,因為沒有override Object中的實現,所以仍采用其實現,即采用==實現equals()方法,比較是否為同一個對象。

  怎么比較呢?一種解決方案是自己寫代碼,另一種方法是利用java.util.Arrays

  java.util.Arrays中的方法全是static的。其中包括了equals()方法的各種重載版本。

  代碼如下:

ArrayEqualsTest.java
import java.util.Arrays;
public class ArrayEqualsTest
{//Compare the contents of two int arrayspublic static boolean isEquals(int[] a, int[] b){if( a == null || b == null ){ return false;}if(a.length != b.length){return false;}for(int i = 0; i < a.length; ++i ){if(a[i] != b[i]){return false;}}return true;}public static void main(String[] args){int[] a = {1, 2, 3};int[] b = {1, 2, 3};System.out.println(isEquals(a,b));System.out.println(Arrays.equals(a,b));}
}

?

數組元素不為基本數據類型時

  數組元素不為基本原生數據類型時,存放的是引用類型,而不是對象本身。當生成對象之后,引用才指向對象,否則引用為null。

  如下列程序:

ArrayTest2.java
public class ArrayTest2
{public static void main(String[] args){Person[] p = new Person[3];//未生成對象時,引用類型均為空System.out.println(p[0]);//生成對象之后,引用指向對象p[0] = new Person(10);p[1] = new Person(20);p[2] = new Person(30);for(int i = 0; i < p.length; i++){System.out.println(p[i].age);}}
}
class Person
{int age;public Person(int age){this.age = age;}
}

?

  輸出:

  null

  10

  20

  30

  也可以在初始化列表里面直接寫:

  Person[] p = new Person[]{new Person(10), new Person(20), new Person(30)};

?

二維數組

  二維數組是數組的數組。

?

二維數組基礎

  基本的定義方式有兩種形式,如:

  type[][] i = new type[2][3];(推薦)

  type i[][] = new type[2][3];

  如下程序:

?

public class ArrayTest3
{public static void main(String[] args){int[][] i = new int[2][3];System.out.println("Is i an Object? "+ (i instanceof Object));System.out.println("Is i[0] an int[]? "+ (i[0] instanceof int[]));}
}

?

  輸出結果是兩個true。

?

變長的二維數組

  二維數組的每個元素都是一個一維數組,這些數組不一定都是等長的。

  聲明二維數組的時候可以只指定第一維大小,空缺出第二維大小,之后再指定不同長度的數組。但是注意,第一維大小不能空缺(不能只指定列數不指定行數)。

  如下程序:

?

public class ArrayTest4
{public static void main(String[] args){//二維變長數組int[][] a = new int[3][];a[0] = new int[2];a[1] = new int[3];a[2] = new int[1];//Error: 不能空缺第一維大小//int[][] b = new int[][3];
    }
}

?

  二維數組也可以在定義的時候初始化,使用花括號的嵌套完成,這時候不指定兩個維數的大小,并且根據初始化值的個數不同,可以生成不同長度的數組元素。

  如下程序:

  

public class ArrayTest5
{public static void main(String[] args){int[][] c = new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}};for(int i = 0; i < c.length; ++i){for(int j = 0; j < c[i].length; ++j){System.out.print(c[i][j]+" ");        }System.out.println();}}
}

?

  輸出:

  1 2 3

  4

  5 6 7 8

轉載于:https://www.cnblogs.com/mengdd/archive/2013/01/04/2844264.html

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

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

相關文章

車輛跟馳模型matlab代碼實現_MATLAB——考慮駕駛員特性及前車速度的快速路模型...

重發一下之前誤刪的一篇~目前大多數元胞自動機模型并沒有考慮前車速度&#xff0c;大多數同向行駛的模型中車輛都是處在一個完全跟車的狀態&#xff0c;無論前車是加速還是減速&#xff0c;后車駕駛者都只是根據自己的車速判斷是減速跟馳還是變換車道來尋求尋求更合理的行駛狀態…

linux nc命令

參考 :http://www.linuxso.com/command/nc.html NC 全名 Netcat (網絡刀)&#xff0c;作者是 Hobbit && ChrisWysopal。因其功能十分強大&#xff0c;體積小巧而出名&#xff0c;又被大家稱為“瑞士軍刀”。nc - TCP/IP swiss army knife nc 常用于溢出、反向鏈接、上傳…

收藏一些自己認為好的網站或博客

月光博客 seo每天一貼 虎嗅網 李巖的博客 中郵閱讀網&#xff0c;專門看電子期刊的&#xff0c;很不錯的免費閱讀期刊網。 seay web安全技術博客: http://www.cnseay.com 陸陸續續編輯中... 轉載于:https://www.cnblogs.com/caoyuanzhanlang/archive/2013/01/05/2846086.html

shell 判斷字符串相等_編程小短文:Bash子字符串還在用==?試試=~性能瞬間飆升100倍...

引言Bash 是 Linux 系統下欽定的 shell。你可以通過cat /etc/shells查看當前系統支持的 shell 種類。Bash 不但是系統管理員與內核交互的利器&#xff0c;且是一種語言&#xff0c;可以編寫大多數系統的自動化腳本&#xff0c;用于簡化運維工作。今天我們學習一個知識點&#x…

linux系統聯網命令,Linux系統常用的網絡命令及使用方法

Linux系統常用的網絡命令及使用方法Linux是一套免費使用和自由傳播的類Unix操作系統&#xff0c;是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。下面小編整理了Linux系統常用的網絡命令及使用方法&#xff0c;希望對大家有幫助!1、pingping命令工作在O…

Xss Csrf 簡介

一、Js在web的執行環境 1.直接觸發 ?在HTML頁中插入<script></script>腳本標記。JS嵌入到HTML中的兩種方式&#xff1a; ?1&#xff09;直接嵌入<script>標簽 <script language“javascript”> document.write(“hello world!”); </script> ?…

Cracking the Coding Interview 5.2

Given a(decimal -e.g. 3.72)number that is passed in as a string, print the binary representation. If the number can not be represented accurately in binary, print "ERROR" 整數部分&#xff1a; 對2取余&#xff0c;然后向右移動一位&#xff0c;重復直到…

python的render函數_帶函數return的Flask render_模板

TL&#xff1b;DR在這種情況下&#xff0c;我想我會選擇使用我現在的4個選項我將介紹4種選擇&#xff0c;其中一些可能比其他更可行。在如果您擔心execute表示的代碼存在代碼重復(DRY)&#xff0c;您可以簡單地定義一個兩個路由都可以調用的函數&#xff1a;def execute():# ex…

Google開源Leak Finder——用于檢測內存泄漏的JavaScript工具

近日&#xff0c;Google開源了Leak Finder&#xff0c;這款工具可以查看JavaScript應用的堆&#xff0c;進而發現內存泄漏。 作為一門垃圾收集語言&#xff0c;JavaScript并不會出現常見的內存泄露情況&#xff0c;特別是像C等語言中所見到的那種。但如果依舊將內存分配給那些不…

linux 定時訪問文件夾,Linux定時同步文件夾

-v, --verbose 詳細模式輸出-q, --quiet 精簡輸出模式-c, --checksum 打開校驗開關&#xff0c;強制對文件傳輸進行校驗-a, --archive 歸檔模式&#xff0c;表示以遞歸方式傳輸文件&#xff0c;并保持所有文件屬性&#xff0c;等于-rlptgoD-r, --recursive 對子目錄以遞歸模式處…

windows apache 開啟 GZIP

從服務端優化來說&#xff0c;通過對服務端做壓縮配置可以大大減小文本文件的體積&#xff0c;從而使加載文本的速度成倍的加快。目前比較通用的壓縮方法是啟用gzip壓縮。它 會把瀏覽器請求的頁面&#xff0c;以及頁面中引用的靜態資源以壓縮包的形式發送到客戶端,然后在客戶端…

python必備插件_5框酷斃的python插件工具

展開全部工欲善其事必先利其器&#xff0c;一個好的工具能讓起到事半功倍32313133353236313431303231363533e59b9ee7ad9431333433646531的效果&#xff0c;Python社區提供了足夠多的優秀工具來幫助開發者更方便的實現某些想法&#xff0c;下面這幾個工具給我的工作也帶來了很多…

Bootstrap3 排版-改變大小寫

通過這幾個類可以改變文本的大小寫。 <p class"text-lowercase">Lowercased text.</p> <p class"text-uppercase">Uppercased text.</p> <p class"text-capitalize">Capitalized text.</p> —–下面有個“頂…

linux系統如何調屏幕亮度,Linux入門教程:Ubuntu筆記本屏幕亮度調節

前天入手一臺Dell筆記本&#xff0c;i7第五代處理器&#xff0c;8G內存&#xff0c;1T硬盤&#xff0c;很符合我對移動工作站的要求。今天果斷將正版win8替換為Ubuntu&#xff0c;DIY的后果就是原來3秒啟動系統變成了現在15秒&#xff0c;忍了。但是另一個問題十分困擾我&#…

Centos7 更新pip和scipy

更新pip&#xff1a; pip install --upgrade pip 更新scipy包&#xff1a; pip install -upgrade scipy 轉載于:https://www.cnblogs.com/leewhite/p/6098211.html

poj 3258 River Hopscotch 【二分】

題目真是不好讀&#xff0c;大意例如以下&#xff08;知道題意就非常好解了&#xff09; 大致題意&#xff1a; 一條河長度為 L&#xff0c;河的起點(Start)和終點(End)分別有2塊石頭&#xff0c;S到E的距離就是L。 河中有n塊石頭&#xff0c;每塊石頭到S都有唯一的距離 問如今…

python的socks5全局代理_Python寫的Socks5協議代理服務器

直接上代碼&#xff1a;#!/usr/bin/python# Filename s5.py# Python Dynamic Socks5 Proxy# Usage: python s5.py 1080# Background Run: nohup python s5.py 1080 &import socket, sys, select, SocketServer, struct, timeclass ThreadingTCPServer(SocketServer.Threadi…

Zencart 給DHL運費模塊增加一個分區的方法

Zencart 給DHL運費模塊增加一個分區的方法 zencart給DHL運費模塊添加一個分區的方法很簡單&#xff0c;因爲該模塊已經做好了允許用戶添加更多分區的設置。 具體方法如下&#xff1a; 首先打開該運費模塊&#xff08;includes\modules\shipping\dhlzones.php 文件&#xff09;&…

linux 如何查看終端格式,你應該還不知道,Linux終端下的 Markdown 文檔查看器

原標題&#xff1a;你應該還不知道&#xff0c;Linux終端下的 Markdown 文檔查看器現在&#xff0c;Markdown 差不多已經成為技術文檔的標準。它可以實現技術文檔的快捷寫作&#xff0c;以及輸出發布。同樣都是標記語言&#xff0c;但Markdown 文檔相比HTML更加簡單。一是體現在…

更換硬盤

更換硬盤 1. 根據管理平臺的信息&#xff0c;找到損壞磁盤的位置 2. 取下壞盤&#xff0c;對比新盤的PN號 3. 將新的硬盤插回到磁盤柜 4. vol status -s 查看Spare Disks信息 &#xff0c;找到識別碼&#xff0c;例如4a.05.15 5. disk assign 4…