java 方法與數(shù)組基礎(chǔ)使用詳解
一、方法的使用
1、方法的定義
java中的方法就相當(dāng)于C語言中的函數(shù)
方法的語法格式
//方法的定義
修飾符 返回值類型 方法的名稱(【參數(shù)類型 參數(shù)】){
方法體代碼;
【return 返回值】;
}
【注意事項】
- 修飾符:現(xiàn)階段直接使用public static 固定搭配
- 返回值類型:如果方法有返回值,返回值類型必須要與返回的實體類型一致,如果沒有返回值,必須寫成void
- 方法名字:采用小駝峰命名
- 參數(shù)列表:如果方法沒有參數(shù),()中什么都不寫,如果有參數(shù),需指定參數(shù)類型,多個參數(shù)之間使用逗號隔開
- 方法體:方法內(nèi)部要執(zhí)行的語句
- 在java當(dāng)中,方法必須寫在類當(dāng)中
- 在java當(dāng)中,方法不能嵌套定義
- 在java當(dāng)中,沒有方法聲明一說
2、方法重載
如果多個方法的名字相同,參數(shù)列表不同,則稱該方法被重載。
public class TestMethod { public static void main(String[] args) { add(1, 2); //調(diào)用函數(shù)add(int,int) add(1.5, 2.5);//調(diào)用函數(shù)add(double,double) add(1, 3, 5);//調(diào)用函數(shù)add(int,int,int) } public static int add(int x, int y) { return x + y; } public static double add(double x, double y) { return x + y; } public static double add(int x, int y, int z) { return x + y + z; } }
【注】
- 方法名必須相同
- 參數(shù)列表必須不同(參數(shù)的個數(shù)不同、參數(shù)的類型不同、類型的次序必須不同)
- 與返回值類型是否相同無關(guān)
二、數(shù)組的定義和使用
1、數(shù)組的基本概念
(1)數(shù)組的創(chuàng)建
T[ ] 數(shù)組名 = new T[N];
T:表示數(shù)組中元素的類型
N:表示數(shù)組的大小
int[] array1 = new int[10]; // 創(chuàng)建一個可以容納10個int類型元素的數(shù)組 double[] array2 = new double[5]; // 創(chuàng)建一個可以容納5個double類型元素的數(shù)組 String[] array3 = new double[3]; // 創(chuàng)建一個可以容納3個字符串元素的數(shù)組
(2)數(shù)組的初始化
動態(tài)初始化:在創(chuàng)建數(shù)組時,直接指定書中元素的個數(shù)
int[] array = new int[10]; //默認(rèn)值為0
靜態(tài)初始化:在創(chuàng)建時不直接指定數(shù)據(jù)元素個數(shù),直接將元素內(nèi)容指定。
語法格式:T[ ] 數(shù)組名 = {data1,……,datan};
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9}; double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0}; String[] array3 = new String[]{"hell", "Java", "!!!"};
【注意】
- 靜態(tài)初始化雖然沒有指定數(shù)組的長度,編譯器在編譯時會根據(jù){}中元素個數(shù)來確定數(shù)組的長度。
- 靜態(tài)初始化時, {}中數(shù)據(jù)類型必須與[]前數(shù)據(jù)類型一致。
- 靜態(tài)初始化可以簡寫,省去后面的new T[]。
- 數(shù)組也可以按照如下C語言個數(shù)創(chuàng)建,不推薦。
- 如果不確定數(shù)組當(dāng)中內(nèi)容時,使用動態(tài)初始化,否則建議使用靜態(tài)態(tài)初始化。
- 如果沒有對數(shù)組進(jìn)行初始化,數(shù)組中元素有其默認(rèn)值。
(3)數(shù)組的遍歷
- 通過for循環(huán)來遍歷,在數(shù)組中可以通過length來獲取數(shù)組長
- 使用for-each遍歷數(shù)組
int[] array={1,2,3}; for(int x:array){ System.out.println(x); }; //遍歷array中元素,將元素放在x中進(jìn)行打印
- 將數(shù)組以字符串的形式進(jìn)行打印
Array.toString(array);//將數(shù)組以字符串的形式進(jìn)行輸出
2、數(shù)組是引用類型(JVM的內(nèi)存分布)
方法區(qū)(Method Area)和堆(Heap)為所有線程所共享,每個線程擁有獨立的虛擬機(jī)棧(JVM Stack)、本地方法棧(Native Method Stack)以及程序計數(shù)器。
- 程序計數(shù)器 (PC Register): 用來保存下一條執(zhí)行的指令的地址
- 虛擬機(jī)棧(JVM Stack): 用來保存方法執(zhí)行相關(guān)的一些信息:局部變量、操作數(shù)棧、動態(tài)鏈接、返回地址以及其他的一些信息。當(dāng)方法運行結(jié)束后,棧幀就被銷毀了,即棧幀中保存的數(shù)據(jù)也被銷毀了。
- 本地方法棧(Native Method Stack): 虛擬機(jī)棧的作用類似. 只不過保存的內(nèi)容是Native方法的局部變量。
- 堆(Heap):使用 new 創(chuàng)建的對象都是在堆上保存。堆是隨著程序開始運行時而創(chuàng)建,隨著程序的退出而銷毀,堆中的數(shù)據(jù)只要還有在使用,就不會被銷毀。
- 方法區(qū)(Method Area): 用于存儲已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù). 方法編譯出的的字節(jié)碼就是保存在這個區(qū)域 。
3、引用變量
- 引用變量的0值為null,引用為空值時,不指向任何對象
- 引用變量虛擬機(jī)棧中存儲的是其在堆中空間的起始地址,通過改地址可以去操作對象。
舉例如下:
public static void func() { int[] array1 = new int[3]; array1[0] = 10; array1[1] = 20; array1[2] = 30; int[] array2 = new int[]{1,2,3,4,5}; array2[0] = 100; array2[1] = 200; array1 = array2; array1[2] = 300; array1[3] = 400; array2[4] = 500; for (int i = 0; i < array2.length; i++) { System.out.println(array2[i]); } }
- 創(chuàng)建數(shù)組array1,沒有設(shè)置初始值,因此其為0;
- 通過下標(biāo)修改數(shù)組array1中元素為10、20、30;
- 創(chuàng)建數(shù)組array2,初始值為1、2、3、4、5;
- 通過下標(biāo)方式將數(shù)組array2中前兩個元素設(shè)置為100、200;
- array1=array2,既讓array1去引用array2引用的數(shù)組的空間,此時array1和array2其實是一個數(shù)組;
- 通過array1將2、3號元素修改為300、400;通過array2修改4號元素為500;
- 此時打印array2的結(jié)果應(yīng)為:100、200、300、400、500
4、數(shù)組拷貝函數(shù)
完全拷貝(Array.copyof)
int[] arr={1,2,3,4,5}; int[] newarr=Array.copyof(arr,arr.length);
- copyof方法在進(jìn)行數(shù)組拷貝時,創(chuàng)建了新的數(shù)組
- 此時arr和newarr引用的不是同一個數(shù)組
范圍拷貝(Array.copyofRange)
int[] newarr1=Array.copyofRange(arr,int i,int j);
拷貝從 i 下標(biāo)的 j -1 下標(biāo)的數(shù)組元素;
5、二維數(shù)組的for.each遍歷
int[][]arr={{1,2,3,4},{5,6,7,8},{3,6,2,3}}; for(int[] tmp:arr){ for(int x:tmp){ System.out.println(x); } }
二位數(shù)組就是特殊的一維數(shù)組
到此這篇關(guān)于java 方法與數(shù)組基礎(chǔ)使用詳解的文章就介紹到這了,更多相關(guān)java 方法與數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring-boot實現(xiàn)增加自定義filter(新)
本篇文章主要介紹了spring-boot實現(xiàn)增加自定義filter(新),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05詳解Spring Cloud Stream使用延遲消息實現(xiàn)定時任務(wù)(RabbitMQ)
這篇文章主要介紹了詳解Spring Cloud Stream使用延遲消息實現(xiàn)定時任務(wù)(RabbitMQ),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01實例詳解SpringBoot默認(rèn)的JSON解析方案
JSON數(shù)據(jù)現(xiàn)在是我們開發(fā)中用的最多的,百分之九十的數(shù)據(jù)都是通過JSON方式進(jìn)行傳輸,下面這篇文章主要給大家介紹了關(guān)于SpringBoot默認(rèn)的JSON解析方案的相關(guān)資料,需要的朋友可以參考下2021-08-08spring webflux自定義netty 參數(shù)解析
這篇文章主要介紹了spring webflux自定義netty 參數(shù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09Java線程池ThreadPoolExecutor的使用及其原理詳細(xì)解讀
這篇文章主要介紹了Java線程池ThreadPoolExecutor的使用及其原理詳細(xì)解讀,線程池是一種多線程處理形式,處理過程中將任務(wù)添加到隊列,然后在創(chuàng)建線程后自動啟動這些任務(wù),線程池線程都是后臺線程,需要的朋友可以參考下2023-12-12Java NIO 文件通道 FileChannel 用法及原理
這篇文章主要介紹了Java NIO 文件通道 FileChannel 用法和原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01SpringBoot 動態(tài)配置郵箱發(fā)件人過程解析
這篇文章主要介紹了SpringBoot 動態(tài)配置郵箱發(fā)件人過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08Java設(shè)計模式之命令模式_動力節(jié)點Java學(xué)院整理
命令模式就是對命令的封裝,下文中給大家介紹了命令模式類圖中的基本結(jié)構(gòu),對java設(shè)計模式之命令模式相關(guān)知識感興趣的朋友一起看看吧2017-08-08