Java深入淺出數(shù)組的定義與使用上篇
一、數(shù)組的基本用法
1.什么是數(shù)組
數(shù)組:存儲一組相同數(shù)據(jù)類型的數(shù)據(jù)的集合。
2.定義數(shù)組?
int[] :int類型數(shù)組?
double[] :double類型數(shù)組
通過類型就可以定義變量,比如:
int[] array,array就是這個類型的變量,這個變量是存儲一組相同數(shù)據(jù)的變量。
三種數(shù)組定義的方式:
第一種:
int[] array = {1,2,3,4,5,6};
定義一個數(shù)組且初始化?
雖然沒寫new,但實際上也是一個對象
注意事項:
int[10] array =??{1,2,3,4,5,6};
寫法錯誤,int[] 屬于類型,中括號里面不能加任何的數(shù)字,相當(dāng)于在這里破壞了它的類型。
第二種:
int[] array2 = new int[3];
?定義數(shù)組未初始化
第三種:
int[] array3 = new int[]{1,2,3,4,5,6};
定義且初始化?
三種當(dāng)中用的最多的就是第一種
3.數(shù)組的使用
獲取數(shù)組長度:
Java里面可以直接通過數(shù)組名array.length?求出當(dāng)前數(shù)組的長度
訪問數(shù)組元素:
訪問數(shù)組下標(biāo)為4的元素?
越界訪問數(shù)組元素:
?Java語言越界直接報錯
更改數(shù)組元素:
?通過數(shù)組名中括號的方式,不僅僅可以訪問下標(biāo)的內(nèi)容,也可以往下標(biāo)里面寫一些數(shù)據(jù)?
打印數(shù)組:?
第一種:(for循環(huán))
?第二種:(增強for循環(huán),for each循環(huán))
for循環(huán)和for each循環(huán)的區(qū)別:
for循環(huán)是可以拿到下標(biāo)的,
for each循環(huán)是拿不到下標(biāo)的,更多的是用于集合中
第三種:借助Java的操作數(shù)組工具類 Arrays
二、數(shù)組作為方法的參數(shù)
基本用法
JVM簡單介紹
?局部變量在內(nèi)存中的儲存:
引用不指向?qū)ο髮懛ǎ?/p>
這個引用不指向任何的對象
一個引用能不能同時指向多個對象嗎??
對于這個代碼來說只能指向一個對象,存一個對象的地址。最終只保存了最后一個對象的地址?
數(shù)組作為方法的參數(shù)傳遞的過程:
求解打印結(jié)果:
前兩種求解:
fun2打印結(jié)果:
分析例子:下圖代表什么?
代表array2這個引用,指向了array1這個引用指向的對象。
下圖就代表了上面例子的意思:
注意事項:
引用指向引用這句話 是錯誤的,引用只能指向?qū)ο?/p>
引用一定在棧上嗎?
不一定,一個變量在不在棧上,是你變量的性質(zhì)決定的,如果你就是一個局部變量,一定是在棧上的。如果不是,例如,實例成員變量那就不一定就是在棧上的。
三、數(shù)組練習(xí)題
1.交換兩個變量的值
public class TestDemo { public static void swap(int[] array){ int tmp = array[0]; array[0] = array[1]; array[1] = tmp; } public static void main(String[] args) { int[] array = {10,20}; System.out.println("交換前: "+array[0]+" "+array[1]); swap(array); System.out.println("交換后: "+array[0]+" "+array[1]); }
打印結(jié)果:
2.寫一個方法, 將數(shù)組中的每個元素都 * 2?
/** * 在原來的數(shù)組上擴大2倍 * @param array */ public static void enlarge(int[] array){ for (int i = 0; i <array.length ; i++) { array[i] = array[i]*2; } } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; enlarge(array); System.out.println(Arrays.toString(array)); }
打印結(jié)果:
把原來數(shù)組擴大2倍的值放在一個新的數(shù)組中
/** * 把原來數(shù)組擴大2倍的值放在一個新的數(shù)組中 * @param array * @return */ public static int[] func(int[] array) { int[] ret = new int[array.length]; for (int i = 0; i < array.length; i++) { ret[i] = array[i] * 2; } return ret; } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; int[] ret = func(array); System.out.println(Arrays.toString(ret)); }
3.模擬實現(xiàn)tostring函數(shù)
public static String myToString(int[] array){ String str = "["; for (int i = 0; i <array.length ; i++) { str = str+array[i]; if(i != array.length-1){ str+= ","; } } str= str + "]"; return str; } public static void main(String[] args) { int[] array = {1,2,3,4,5,6,7}; String str = myToString(array); System.out.println(str); }
打印結(jié)果:
4.找數(shù)組中的最大元素?
public static int maxNum(int[] array){ if(array == null) return -1; if (array.length == 0) return -1; int max = array[0]; for (int i = 1; i <array.length ; i++) { if(max < array[i]){ max = array[i]; } } return max; } public static void main(String[] args) { int[] array = {12,8,14,26,5,7,8}; int max = maxNum(array); System.out.println(max); }
打印結(jié)果:
5.查找數(shù)組中指定元素(順序查找)?
public static int findNum(int[] array,int key){ for (int i = 0; i <array.length ; i++) { if(array[i] == key){ return i; } } return -1; } public static void main(String[] args) { int[] array = {2,4,5,6,11,7,8,9}; System.out.println(findNum(array, 7)); }
打印結(jié)果:
6.查找數(shù)組中指定元素(二分查找)?
二分查找的必要條件是必須有序的數(shù)列 public static int binarySearch(int[] array,int key){ int left = 0; int right = array.length-1; while(left <= right){ int mid = (left+right)/2; if(array[mid] > key){ right = mid - 1; }else if(array[mid] < key){ left = left + 1; }else{ return mid; } } return -1; } public static void main(String[] args) { int[] array = {12,14,15,16,18,23}; System.out.println(binarySearch(array, 15)); }
打印結(jié)果:
?總結(jié):
本文簡單介紹了什么是數(shù)組、數(shù)組的寫法、如何打印數(shù)組、數(shù)組的簡單使用。通過簡單例題的方式加深對數(shù)組的理解。上述就是今天的內(nèi)容,文章哪里出現(xiàn)了問題我都會積極改正,也希望大家能更快的掌握自己想要的知識,讓我們一起加油!?。。。?/p>
到此這篇關(guān)于Java深入淺出數(shù)組的定義與使用上篇的文章就介紹到這了,更多相關(guān)Java 數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中構(gòu)造方法set/get和toString的使用詳解
這篇文章主要介紹了Java中構(gòu)造方法set/get和toString的使用詳解,構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時完成初始化,當(dāng)我們在new一個對象并傳入?yún)?shù)的時候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化,需要的朋友可以參考下2019-07-07spring boot中使用RabbitMQ routing路由詳解
本篇文章主要介紹了spring boot中使用RabbitMQ routing路由詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03IDEA導(dǎo)入geoserver項目的詳細(xì)步驟及注意事項
由于GeoServer是基于Java開發(fā)的。因此在安裝之前,必須確保安裝了Java。本文給大家分享IDEA導(dǎo)入geoserver項目的詳細(xì)步驟及注意事項,感興趣的朋友一起看看吧2021-06-06Spring?Data?JPA框架的Repository自定義實現(xiàn)詳解
Spring?Data?JPA是Spring基于JPA規(guī)范的基礎(chǔ)上封裝的?套?JPA?應(yīng)?框架,可使開發(fā)者?極簡的代碼即可實現(xiàn)對數(shù)據(jù)庫的訪問和操作,本篇我們來了解Spring?Data?JPA框架的Repository自定義實現(xiàn)2022-04-04