欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)組的聲明與創(chuàng)建示例詳解

 更新時(shí)間:2020年07月22日 17:20:22   作者:scyq  
這篇文章主要介紹了Java數(shù)組的聲明與創(chuàng)建示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

今天在刷Java題的時(shí)候,寫慣了C++發(fā)現(xiàn)忘記了Java數(shù)組的操作,遂把以前寫的文章發(fā)出來溫習(xí)一下。

首先,數(shù)組有幾種創(chuàng)建方式?

Java程序中的數(shù)組必須先進(jìn)行初始化才可以使用,所謂初始化,就是為數(shù)組對(duì)象的元素分配內(nèi)存空間,并為每個(gè)數(shù)組元素指定初始值,而在Java中,數(shù)組是靜態(tài)的,數(shù)組一旦初始化,長(zhǎng)度便已經(jīng)確定,不能再隨意更改。

聲明數(shù)組變量

首先必須聲明數(shù)組變量,才能在程序中使用數(shù)組。下面是聲明數(shù)組變量的語(yǔ)法:

dataType[] arrayRefVar; // 首選的方法
 
或
 
dataType arrayRefVar[]; // 效果相同,但不是首選方法 c++沿用

但是以上只是聲明了數(shù)組,并不能直接使用,因?yàn)闆]有為其分配內(nèi)存空間,此時(shí)必須初始化。

例如以下代碼在Java8中就會(huì)報(bào)錯(cuò)

public class test{
	public static void main(String[] arg) {	
 		int[] a;
		a[0]= 1;
		System.out.println(a[0]);
	}
}
// 系統(tǒng)將報(bào)錯(cuò) 局部變量 a 可能尚未初始化
// 進(jìn)一步加入我個(gè)人的理解,聲明的數(shù)組沒有確定大小,沒有辦法分配內(nèi)存空間,所有必須初始化
// 但是以下代碼在Java中是禁止的
public class test{
	public static void main(String[] arg) {	
 		int[10] a;
		a[0]= 1;
		System.out.println(a[0]);
	}
}
// 系統(tǒng)將報(bào)錯(cuò) 標(biāo)記“10”上有語(yǔ)法錯(cuò)誤,刪除此標(biāo)記
// 不能像c++這樣初始化數(shù)組

所以,我們擁有兩種初始化數(shù)組的方式

靜態(tài)初始化:由程序猿自己確定每個(gè)數(shù)組元素的初始值,而數(shù)組的長(zhǎng)度則由系統(tǒng)自己決定,例如:

int[] a = {1,2,3,4,5};
System.out.println(a.length);
// 第二行代碼可以看出,數(shù)組擁有類的性質(zhì),可以用dot訪問其變量
// 第一行代碼靜態(tài)初始化了數(shù)組整型數(shù)組a,賦予其固定的長(zhǎng)度,系統(tǒng)可以為其分配空間

動(dòng)態(tài)初始化:初始化時(shí)由程序猿確定數(shù)組的長(zhǎng)度,而沒一個(gè)數(shù)組元素的值,則由系統(tǒng)來分配初始值,例如:

int[] b=new int[5];
System.out.println(b[0]);
// 很明顯,數(shù)組就是類

數(shù)組一定要初始化嗎?所謂的對(duì)數(shù)組初始化究竟是對(duì)什么初始化?是數(shù)組變量本身嗎?

答案看上去肯定是一定要,但是我在實(shí)踐中發(fā)現(xiàn)卻是不一定需要,要想搞清楚這個(gè)問題,我們需要理解數(shù)組變量和數(shù)組對(duì)象的區(qū)別。而在認(rèn)識(shí)他們之前需要先了解Java的數(shù)據(jù)類型。Java的數(shù)據(jù)類型分為兩種,基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。

基本數(shù)據(jù)類型有八種:byte,short,int,long,float,double,boolean,char。只需要知道基本數(shù)據(jù)類型變量包含一個(gè)值,這個(gè)值的類型與變量相對(duì)應(yīng)。

引用數(shù)據(jù)類型:引用型變量的值與基本類型變量不同,變量值是指向內(nèi)存空間的引用(地址)。所指向的內(nèi)存中保存著變量所表示的一個(gè)值或一組值。這和C++中的指針很相似,事實(shí)上Java語(yǔ)言中的引用實(shí)際上就是指針,是指向一個(gè)對(duì)象的內(nèi)存地址。Java所說的不支持指針只是不支持指針的計(jì)算,但是指針類型被保留了下來,并稱為引用類型。聲明引用數(shù)據(jù)類型后,不可以直接使用,還需要實(shí)例化在堆內(nèi)存中開辟內(nèi)存空間。

數(shù)組變量是一個(gè)引用類型的變量,數(shù)組變量是指向堆內(nèi)存當(dāng)中的數(shù)組對(duì)象,并不是數(shù)組本身。當(dāng)改變一個(gè)數(shù)組變量所引用的數(shù)組,就可以造成數(shù)組長(zhǎng)度可變的假象。實(shí)際上數(shù)組對(duì)象本身的長(zhǎng)度本沒有變化,只是數(shù)組變量指向了一個(gè)新的數(shù)組對(duì)象。

所以對(duì)于數(shù)組變量來說,他并不需要初始化,我們常說的初始化其實(shí)是初始化數(shù)組對(duì)象而非數(shù)組變量,有時(shí)候我們不進(jìn)行初始化,而讓數(shù)組變量指向一個(gè)有效的數(shù)組對(duì)象,數(shù)組也可以使用,例如:

int[] a = {0,1,2,3,4};
int[] b;	
b = a;	
System.out.println(b[1]);
// 輸出結(jié)果為 1
b[1] = 99;	
System.out.println(a[1]);
// 輸出結(jié)果為 99
我自己的理解是,Java的數(shù)組就是一個(gè)對(duì)象。初始化數(shù)組的最好辦法就是new一個(gè)。

數(shù)組的增強(qiáng)循環(huán)(也可用于其他集合)

Java增強(qiáng)循環(huán)語(yǔ)句如下:

for(聲明語(yǔ)句:表達(dá)式){
 // 代碼
}
// 冒號(hào)可以理解為"in"

聲明語(yǔ)句:聲明新的局部變量,該變量的類型必須和數(shù)組元素的類型匹配。其作用域限定在循環(huán)語(yǔ)句塊,其值與此時(shí)數(shù)組元素的值相等(而不是數(shù)組的下標(biāo)?。。?。

表達(dá)式: 表達(dá)式是要訪問的數(shù)組名,或者是返回值為數(shù)組的方法。

實(shí)例

public class Test {
 public static void main(String args[]){
  int [] numbers = {10, 20, 30, 40, 50};
 
  for(int x : numbers ){
   System.out.print( x );
   System.out.print(",");
  }
  System.out.print("\n");
  String [] names ={"James", "Larry", "Tom", "Lacy"};
  for( String name : names ) {
   System.out.print( name );
   System.out.print(",");
  }
 }
}

輸出結(jié)果

10,20,30,40,50,
James,Larry,Tom,Lacy,

我們回頭理解其執(zhí)行順序:

  • 創(chuàng)建名為x的integer變量
  • 將numbers的第一個(gè)元素賦值給x
  • 執(zhí)行大括號(hào)內(nèi)的代碼
  • 賦值給下一個(gè)元素x
  • 重復(fù)執(zhí)行至所有的元素都被運(yùn)行

Java的變量類型Java中有三種變量類型類變量:獨(dú)立于方法之外的變量,用static修飾實(shí)例變量:獨(dú)立于方法之外的變量,不過沒有static修飾類的每個(gè)對(duì)象特定的變量也是實(shí)例對(duì)象(顧名思義)局部變量:類的方法中的變量

public class variable{
 static int a = 0; // 類變量
 
 String str = "Java is easy to learn."; // 實(shí)例變量 實(shí)例變量聲明在類內(nèi)而不是方法中
 
 public void method{
  int b = 1; // 局部變量 局部變量是聲明在方法中的
  // 局部變量在使用前必須初始化
  int x; 
  int z = x + 1; // 這就是錯(cuò)誤的代碼,無法編譯
 }
}

聲明與初始化變量類型實(shí)例變量永遠(yuǎn)會(huì)有默認(rèn)值。如果沒有明確的賦值給實(shí)例變量,或者沒有調(diào)用setter,實(shí)例變量仍有默認(rèn)值。

  • integers 0
  • floating points 0.0
  • Booleans false
  • references null

局部變量沒有默認(rèn)值

到此這篇關(guān)于Java數(shù)組的聲明與創(chuàng)建示例詳解的文章就介紹到這了,更多相關(guān)Java數(shù)組的聲明與創(chuàng)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring源碼完美導(dǎo)入IDEA的過程

    Spring源碼完美導(dǎo)入IDEA的過程

    正值春節(jié)假期,小伙伴私信我idea導(dǎo)入spring源碼的過程,今天抽空給大家整理一篇教程幫助大家學(xué)習(xí)Spring源碼完美導(dǎo)入IDEA的詳細(xì)過程,感興趣的朋友一起看看吧
    2022-02-02
  • SSM框架前后端信息交互實(shí)現(xiàn)流程詳解

    SSM框架前后端信息交互實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了SSM框架前后端信息交互實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java 中Executor, ExecutorService 和 Executors 間的不同

    java 中Executor, ExecutorService 和 Executors 間的不同

    這篇文章主要介紹了java 中Executor, ExecutorService 和 Executors 間的不同的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的使用示例

    SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的使用示例

    Feign是一個(gè)基于注解的HTTP客戶端庫(kù),它允許您將HTTP請(qǐng)求轉(zhuǎn)換為聲明式的Java接口,本文主要介紹了SpringCloud使用Feign實(shí)現(xiàn)遠(yuǎn)程調(diào)用的使用示例,感興趣的可以了解一下
    2023-09-09
  • Java實(shí)現(xiàn)單鏈表的操作

    Java實(shí)現(xiàn)單鏈表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)單鏈表的操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Springboot集成restTemplate過程詳解

    Springboot集成restTemplate過程詳解

    這篇文章主要介紹了Springboot集成restTemplate過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • java實(shí)現(xiàn)簡(jiǎn)易飛機(jī)大戰(zhàn)

    java實(shí)現(xiàn)簡(jiǎn)易飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • SpringMVC教程之文件上傳與下載詳解

    SpringMVC教程之文件上傳與下載詳解

    本文將對(duì)使用MultipartResolver處理文件上傳的步驟,兩種文件下載方式(直接向response的輸出流中寫入對(duì)應(yīng)的文件流、使用 ResponseEntity<byte[]>來向前端返回文件)等進(jìn)行詳盡介紹,需要的可以參考一下
    2022-12-12
  • 淺談Java中File文件的創(chuàng)建以及讀寫

    淺談Java中File文件的創(chuàng)建以及讀寫

    文中有非常詳細(xì)的步驟介紹了Java中file文件的創(chuàng)建以及讀寫,對(duì)剛開始學(xué)習(xí)java的小伙伴們很有幫助,而且下文有非常詳細(xì)的代碼示例及注釋哦,需要的朋友可以參考下
    2021-05-05
  • 通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案

    這篇文章主要介紹了通過Feign進(jìn)行調(diào)用@FeignClient?找不到的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論