程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實例解析若何准確應用Java數組

實例解析若何准確應用Java數組

編輯:關於JAVA

實例解析若何准確應用Java數組。本站提示廣大學習愛好者:(實例解析若何准確應用Java數組)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析若何准確應用Java數組正文


一.關於數組的特色
1.在Java中,不管應用數組或聚集,都有界限檢討。假如越界操作就會獲得一個RuntimeException異常。
2.數組只能保留特定類型。數組可以保留原生數據類型,聚集則不克不及。聚集不以詳細的類型來處置對象,它們將一切對象都按Object類型處置,聚集中寄存的是對象的援用而不是對象自己。
3.聚集類只能保留對象的援用。而數組既可以創立為直接保留原生數據類型,也能夠保留對象的援用。在聚集中可使用包裝類(Wrapper Class),如Integer、Double等來完成保留原生數據類型值。

 例碼:

 int a = 10;

 Integer integer = new Integer(a);

 int b = integer.intValue();

 System.out.println(a = b);

4.對象數組和原生數據類型數組在應用上簡直是雷同的;獨一的差別是對象數組保留的是援用,原生數據類型數組保留原生數據類型的值。

二.數組的准確應用

假如須要存儲年夜量的數據,例如假如須要讀取100個數,那末就須要界說100個變量,明顯反復寫100次代碼,是沒有太年夜意義的。若何處理這個成績,Java說話供給了數組(array)的數據構造,是一個容器可以存儲雷同數據類型的元素,可以將100個數存儲到數組中。這時候候數組就有很年夜的贊助了~

1.數組的利益

存數據和不存數據有甚麼差別嗎?數組的最年夜利益就是能都給存儲出去的元素主動停止編號.留意編號是從0開端。便利操作這些數據。

例如 先生的編號,應用學號便可以找到對應的先生。

2.數組的格局

格局一:

元素類型[]數組名 = new元素類型[元素個數或數組長度];

示例:

int[] arr = new int[5];

arr[0] = 1;

arr[1] = 2;

格局二:

元素類型[]數組名 = new元素類型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};

留意:給數組分派空間時,必需指定命組可以或許存儲的元素個數來肯定數組年夜小。創立數組以後不克不及修正數組的年夜小。可使用length屬性獲得數組的年夜小。

3.聲明數組變量

為了應用數組必需在法式中聲明數組,並指定命組的元素類型

=左半部門:

    先寫右邊明白了元素類型 是int ,容器應用數組,那末若何來標識數組?.那末用一個特別的符號[]中括號來表現。想要應用數組是須要給數組起一個名字的,那末我們在這裡給這個數組起名字為x .接著跟上等號。

代碼表現: 

int [] x

留意:int x[] 也是一種創立數組的格局。推舉應用int [] x的情勢聲明數組。

4.創立數組

=右半部門:

要應用一個新的症結字.叫做new。new用來在內存中發生一個容器實體,數據要存儲是須要有空間的,存儲許多數據的空間用new操作符來開拓,new int[3];這個3是元素的個數。左邊這部門就是在內存中界說了一個真實存在的數組,能存儲3個元素。

new int[3] 做了兩件工作,起首應用new int[3]創立了一個數組,然後把這個數組的援用賦值給數組變量x。

int [] x=new int[3];

x 是甚麼類型?

任何一個變量都得有本身的數據類型。留意這個x 不是int類型的 。int代表的是容器裡邊元素的類型。那末x是數組類型的。

數組是一種零丁的數據類型。數據類型分為2年夜派,分為根本數據類型和援用數據類型。 第二年夜派是援用數據類型。那末年夜家如今曾經接觸到了援用數據類型三種傍邊的一種。就是數組類型[] 中括號就代表數組。

int[] arr = new int[5];在內存中產生了甚麼?

內存任何一個法式,運轉的時刻都須要在內存中開拓空間.int[] arr = new int[5];這個法式在內存中是甚麼樣?這就觸及到了java虛擬機在履行法式時所開拓的空間,那末java開拓啟動了若干空間呢?持續進修java的內存構造。

5.數組初始化

方法一:不應用運算符new

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

方法二:應用運算符new

int[] arr2 = new int[] { 1, 2, 3, 4, 5 };
int[] arr3=new int[3];
arr3[0]=1;
arr3[1]=5;
arr3[2]=6;

假如數組初始化中不應用運算符new。須要留意:以下寫法是毛病的。

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

此時初始化數組,必需將聲明,創立,初始化都放在一條語句中個,離開會發生語法毛病。

所以只能以下寫:

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

6.數組的遍歷

public static void main(String[] args) {
int[] x = { 1, 2, 3 };
for (int y = 0; y < 3; y++) {
System.out.println(x[y]);
// System.out.println("x["+y+"]="+x[y]); 打印後果 x[0]=1;
} // 那末這就是數組的第一個罕見操作.遍歷
}

數組中有一個屬性可以獲得到數組中元素的個數,也就是數組的長度.數組名.length

public static void main(String[] args) {
int[] x = { 1, 2, 3 };
for (int y = 0; y < x.length; y++) {
System.out.println(x[y]);
// System.out.println("x["+y+"]="+x[y]); 打印後果 x[0]=1;
} // 那末這就是數組的第一個罕見操作.遍歷
}

7.數組的罕見異常

一數組角標越界異常:,留意:數組的角標從0開端。

public static void main(String[] args) {
int[] x = { 1, 2, 3 };
System.out.println(x[3]);
//java.lang.ArrayIndexOutOfBoundsException
}

二 空指針異常:

public static void main(String[] args) {
int[] x = { 1, 2, 3 };
x = null;
System.out.println(x[1]);
// java.lang.NullPointerException
}

數組:

甚麼時刻應用數組:當元素較多時為了便利操作這些數組,會先輩行光降時存儲,所應用的容器就是數組。

特色:

數組長度是固定的。

8.數組的罕見操作

一:案例:

一個數組掏出最年夜值

 /*界說一個獲得最年夜值的功效:

  1、肯定成果 :前往值類型 int

  2、未知內容:要獲得哪一個數組的最年夜值沒有肯定,則是數組沒有肯定

 思緒:

  1、界說一個變量,記載住數組的比擬年夜的元素。

  2、遍歷全部數組,讓數組的每個元素都和該變量停止比較便可。

  3、當變量碰到比它年夜的元素,則讓該變量記載該元素的值,當輪回停止時,最年夜   值發生了

*/
public static int getMax(int[] arr)
{
//界說變量記載較年夜的值,初始化為數組中的隨意率性一個元素。
int max = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}

二:直接排序

         案例二:應用直接排序對數組停止排序:

 /*

 選擇排序。

 以一個角標的元素和其他元素停止比擬。

 在內輪回第一次停止,最值湧現的頭角標地位上。

*/
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=x+1; y<arr.length; y++)//為何y的初始化值是 x+1?由於每次比擬,
//都用x角標上的元素和下一個元素停止比擬。
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
 }

三:冒泡排序

/*
冒泡排序。
比擬方法:相鄰兩個元素停止比擬。假如知足前提就停止地位置換。
道理:內輪回停止一次,最值湧現在尾角標地位。
*/
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)//-x:讓每次介入比擬的元減。
//-1:防止角標越界。
{
if(arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}

四:折半查找(二分法)

/*
為了進步查找效力,可以使用折半查找的方法,留意:這類查找只對有序的數組有用。
這類方法同樣成為二分查找法。
*/
public static int halfSeach(int[] arr,int key)
{
int min,mid,max;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}

五:數組翻轉

/*
反轉其實就是頭角標和尾角標的元素停止地位的置換,
然後在讓頭角標自增。尾角標自減。
當頭角標<尾角標時,可以停止置換的舉措。
*/
public static void reverseArray(int[] arr)
{
for(int start=0,end=arr.length-1; start<end; start++,end--)
{
swap(arr,start,end);
}
}
//對數組的元素停止地位的置換。
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}

11.二維數組

Arrays的應用

Java 數組的詳解

遍歷: toString()    將數組的元素以字符串的情勢前往

排序: sort()        將數組依照升序分列

查找: binarySearch()在指定命組中查找指定元素,前往元素的索引,假如沒有找到前往(-拔出點-1) 留意:應用查找的功效的時刻,數組必定要先排序。

二維數組:

  抽煙: 

       沒錢       零買   1根                 一個變量

       略微有錢   一包   一維數組      20根變量

   很有錢     一條   10包(二維數組)        二維數組

 

二維數組:本質就是存儲是一維數組。

數組界說:

       數組類型[][] 數組名 = new 數組類型[一維數組的個數][每個一維數組中元素的個數];

Java 數組的詳解

疑問: 為何a.length = 3, a[0].length = 4?

Java 數組的詳解

數組的初始化:

靜態初始化:

int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };

靜態初始化:

Java 數組的詳解

二維數組罕見的操作:

1. 遍歷二維數組

2. 對二維數組乞降

class Demo3 
{
 // 界說一個遍歷二維數組的功效函數
public static void printArr2( int [][] a ){
 // 1. 拆開二維數組
 for ( int i = 0 ; i < a.length ; i++ )
 {
 // 2. 拆開一維數組獲得數據
 for ( int j = 0 ; j < a[i].length ; j++ )
 {
System.out.print( a[i][j]+" ," );
 }
 }
} 
// 界說一個函數盤算二維數組中的元素的累加和
public static long getSum( int [][] a ){
 // 0. 界說一個成果變量
 long sum = 0L;
 // 1. 拆開二維數組
 for ( int i = 0 ; i < a.length ; i++ )
 {
 // 2. 拆開一維數組獲得數據
 for ( int j = 0 ; j < a[i].length ; j++ )
 {
sum+=a[i][j];
 }
 }
 return sum;
} 
 
// 統計二維數組中元素的個數
public static int getDataCount( int [][] a ){
 // 0. 記載元素個數
 int count = 0;
 // 1. 拆開二維數組
 for ( int i = 0 ; i < a.length ; i++ )
 {
 // 2. 拆開一維數組獲得數據
 for ( int j = 0 ; j < a[i].length ; j++ )
 {
count++;
 }
 }
 return count;
} 
public static void main(String[] args) 
{
int [][] a = new int[][]{ {23,4,5},{2},{4,5,78,56,90} };
printArr2( a );
 System.out.println();
System.out.println("累加和是: "+getSum( a ) );
System.out.println("統計元素個數: "+getDataCount( a ) );
System.out.println("Hello World!");
}
}

以上就是一切關於java數組的話題,如你所見,java數組是一種異常壯大的數據構造。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved