Java數(shù)組常見應用詳解【創(chuàng)建、遍歷、排序、查找】
本文實例講述了Java數(shù)組常見應用。分享給大家供大家參考,具體如下:
雙重for循環(huán)
外循環(huán)控制行,內(nèi)循環(huán)控制列。
//乘法表
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i ;j++) {
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
DecimalFormat
#:一個數(shù)字
0:一個數(shù)字,不夠位數(shù)用0補位
DecimalFormat f = new DecimalFormat("###.##");
DecimalFormat f = new DecimalFormat("000.00000");
System.out.println(sum);
System.out.println(f.format(sum));
System.out.println(f.format(34.567));
break
用在 switch和循環(huán)中。
用在單層循環(huán)中,用來結(jié)束循環(huán)。
continue
用在循環(huán)中。
作用 結(jié)束本次循環(huán)進行下一次循環(huán)條件判斷。
對于雙重循環(huán),可以自定義一個標簽,break或continue 到標簽處。
一維數(shù)組
Java 語言中提供的數(shù)組是用來存儲固定大小的同類型元素。
聲明數(shù)組
首先必須聲明數(shù)組變量,才能在程序中使用數(shù)組。下面是聲明數(shù)組變量的語法:
int[] arr;//聲明數(shù)組,告訴計算機我要存儲一組整數(shù)(推薦) 或 //int arr[];
int x1,x2,x3;//聲明了3個int類型的變量 int [] n1,n2,n3;//聲明了3個數(shù)組 int num1 [],num2,num3;//聲明了一個int類型的數(shù)組num1,兩個Int類型的變量。
創(chuàng)建數(shù)組
arr = new int[6];//創(chuàng)建一個數(shù)組,計算機在內(nèi)存中分配6個空間,并初始化
數(shù)組的元素是通過索引訪問的。數(shù)組索引從 0 開始,所以索引值從 0 到 arr.length-1。
數(shù)組初始化
//動態(tài)初始化:我們制定長度,系統(tǒng)賦值。
int[] arr = new int[5];//0
//初始值
//整數(shù):0 小數(shù):0.0 布爾:false char:\0000
//String:null
//靜態(tài)初始化:我們賦值,系統(tǒng)分配長度(arr2.length)
int[] arr2 = {11,22,33};
賦值數(shù)組
arr[2]=33;
棧stack
- 是作為構(gòu)思算法的輔助工具,不是完全的數(shù)據(jù)存儲工具。是插入和刪除操作被限制在表的線性表。
- 只能從棧頂入棧,也只能從棧頂出站
- 是一種后進先出的結(jié)構(gòu)

遍歷數(shù)組
普通for循環(huán)
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有數(shù)組元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 計算所有元素的總和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
增強for循環(huán)
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有數(shù)組元素
for (double element: myList) {
System.out.println(element);
}
}
}
增強for循環(huán)的特點:
【1】簡潔
【2】不能制定范圍訪問,只能訪問全部
【3】不能反轉(zhuǎn)輸出,只能正序訪問
【4】不能修改數(shù)組元素的值
數(shù)組排序
冒泡排序
package day4;
public class Demo12 {
public static void main(String[] args) {
// 冒泡排序
int[] arr = {34,1,78,9,43};
int temp;
for(int i = 0 ; i < arr.length-1;i++) {//輪
for(int j = 0; j < arr.length-1-i; j++) {//次
if(arr[j] > arr[j+1]) {
temp = arr[j];
arr[j]= arr[j + 1];
arr[j + 1] = temp;
}
}
}
for(int n: arr) {
System.out.println(n);
}
}
}
選擇排序
package day4;
import java.util.Arrays;
public class Demo13 {
public static void main(String[] args) {
// 選擇排序
int [] arr = {5,12,3,78,345};
int temp;
for(int i = 0; i < arr.length-1; i++) {//位置
for(int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int n:arr) {
System.out.println(n);
}
// System.out.println(Arrays.toString(arr));
}
}
數(shù)組查找方法
普通查找方法(效率比較低)
public class ArrayTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {4,6,8,33,66,44,99,54};
int num=searchKey(arr,66);
System.out.println(num);
}
//查找一個元素在數(shù)組中的第一次出現(xiàn)的位置
public static int searchKey(int[] arr,int key) {
for(int i=0;i
二分查找法(效率比較高)
public class binarySearch {
public static void main(String[] args) {
int[] arr = {9,12,15,24,36,41,59,68};
int num =searchArray(arr,12);
System.out.println(num);
}
//二分查找。前天:數(shù)組必須是有序的。
/*
* 思路:
* 1.通過角標先獲取中間角標上的元素
* 2.讓該元素和要找的數(shù)據(jù)比較。
* 3.如果要找的數(shù)大了,縮小范圍,要找的范圍應該是 中間的角標+1---尾角標
* 如果要找的數(shù)效率,要找的范圍 頭角標---中間角標-1。
* 4.不斷如此重復,就可以找到元素對應的角標。
* */
public static int searchArray(int[] arr,int key) {
int max,min,mid;
min = 0;
max = arr.length-1;
mid = (min+max)>>1;
while(arr[mid]!=key) {
if(key > arr[mid]) {
min = mid + 1;
}else{
max = mid - 1;
}
//判斷元素是否存在。
if(max>1;
}
return mid;
}
}
public class ArrayTest1 {
public static void main(String[] args) {
int[] arr = {9,12,15,24,36,41,59,68};
int num =binarySearch(arr,44);
System.out.println(num);
}
//二分查找。前天:數(shù)組必須是有序的。
/*
* 思路:
* 1.通過角標先獲取中間角標上的元素
* 2.讓該元素和要找的數(shù)據(jù)比較。
* 3.如果要找的數(shù)大了,縮小范圍,要找的范圍應該是 中間的角標+1---尾角標
* 如果要找的數(shù)效率,要找的范圍 頭角標---中間角標-1。
* 4.不斷如此重復,就可以找到元素對應的角標。
* */
public static int binarySearch(int[] arr,int key) {
//定義單個變量,記錄頭角標,尾角標,中間角標
int max,min,mid;
min = 0;
max = arr.length-1;
while(min<=max) {
mid = (min+max)>>1;
if(key > arr[mid]) {
min = mid + 1;
}else if(key < arr[mid]) {
max = mid - 1;
}else {
return mid;
}
}
return -1;
}
}
數(shù)組的復制
package cn.java.study;
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
int[] arr1 = {1,4,6,83,45};
int[] arr2 = new int[arr1.length];
// 源數(shù)組 源數(shù)組起始位置 目標數(shù)組 目標數(shù)組起始位置 復制長度
System.arraycopy(arr1, 1, arr2, 2, 3);
System.out.println(Arrays.toString(arr2));
}
}
常用API之Arrays類
package cn.java.study;
//工具類
import java.util.Arrays;
public class Demo5 {
public static void main(String[] args) {
//Arrays
int[] arr = {1,4,7,434,232,55};
//將數(shù)組轉(zhuǎn)換成字符串
System.out.println(Arrays.toString(arr));
//對數(shù)組進行升序排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
//排序數(shù)組名 排序數(shù)組元素開始位置 排序數(shù)組元素結(jié)束位置(實際上,取到終止位置減一)[起始位置,終止位置)
Arrays.sort(arr,2,4);
System.out.println(Arrays.toString(arr));
//多核處理器下并行操作使用
Arrays.parallelSort(arr);
//二分查找下標,數(shù)組 查找的數(shù)字,返回的是插入點,沒有的話返回的是負的插入點減一的值
System.out.println(Arrays.binarySearch(arr, 8));
//數(shù)組比較:元素的個數(shù)和對應位置的數(shù)組元素相同
int[] arr1 = {1,2,5};
int[] arr2 = {1,2,5};
System.out.println(Arrays.equals(arr1, arr2));
//數(shù)組的填充,將數(shù)組中所有的元素替換為666
Arrays.fill(arr, 666);
System.out.println(Arrays.toString(arr));
//數(shù)組的復制,返回的是一個數(shù)組, (要復制的數(shù)組,幾個元素)
int[] arr3 = Arrays.copyOf(arr1, 2);
System.out.println(Arrays.toString(arr3));
}
}
二維數(shù)組
格式1:
int[][] arr = new int[3][2];
- 定義了名稱為arr的二位數(shù)組
- 二維數(shù)組中有3個一維數(shù)組
- 每一個一維數(shù)組中有2個元素
- 一維數(shù)組的名稱分別為arr[0],arr[1],arr[2]
- 給第一個一維數(shù)組1角標位賦值為666的寫法是:arr[0][1] = 666;

System.out.println(arr); // [[Ie6f7d2二位數(shù)組實體 e6f7d2是哈希值,[是數(shù)組,[[二位數(shù)組
格式2:
int[][] arr = new int[3][]; arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)組操作技巧總結(jié)》、《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)學運算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》及《Java操作DOM節(jié)點技巧總結(jié)》
希望本文所述對大家java程序設計有所幫助。
相關(guān)文章
SpringBoot thymeleaf eclipse熱部署方案操作步驟
今天小編就為大家分享一篇關(guān)于SpringBoot thymeleaf eclipse熱部署方案操作步驟,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
JAVA編程實現(xiàn)UDP網(wǎng)絡通訊的方法示例
這篇文章主要介紹了JAVA編程實現(xiàn)UDP網(wǎng)絡通訊的方法,簡單說明了UDP通訊的原理并結(jié)合實例形式分析了java實現(xiàn)UDP通訊的相關(guān)類與使用技巧,需要的朋友可以參考下2017-08-08
Java 的 FileFilter文件過濾與readline讀行操作實例代碼
這篇文章介紹了Java 的 FileFilter文件過濾與readline讀行操作實例代碼,有需要的朋友可以參考一下2013-09-09
SpringMVC中@controllerAdvice注解的詳細解釋
剛接觸SpringMVC應該很少會見到這個注解,其實它的作用非常大,下面這篇文章主要給大家介紹了關(guān)于SpringMVC中@controllerAdvice注解的相關(guān)資料,需要的朋友可以參考下2022-02-02

