JAVA數(shù)組練習(xí)題實例講解
1. 數(shù)組轉(zhuǎn)字符串
toString() :可以將Array 對象轉(zhuǎn)換為字符串。
//語法格式: arraylist.toString()
實例1:
import java.util.Arrays;//調(diào)用Arrays類,包含了常用的數(shù)組操作
public class test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
String newArr = Arrays.toString(arr);
System.out.println(newArr);
}
}?? 運行結(jié)果:

實例2:
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
// 創(chuàng)建一個動態(tài)數(shù)組
ArrayList<String> sites = new ArrayList<>();
sites.add("Runoob");
sites.add("Google");
sites.add("Wiki");
sites.add("Taobao");
System.out.println("網(wǎng)站列表: " + sites);
// 將ArrayList轉(zhuǎn)換為String類型
String list = sites.toString();
System.out.println("String: " + list);
}?? 運行結(jié)果:

2. 數(shù)組拷貝
實例1:
import java.util.Arrays;
public class test {
public static void func(){
// newArr和arr引用的是同一個數(shù)組
// 因此newArr修改空間中內(nèi)容之后,arr也可以看到修改的結(jié)果
int[] arr = {1,2,3,4,5,6};
int[] newArr = arr;
newArr[0] = 10;
System.out.println("newArr: " + Arrays.toString(arr));
}
public static void main(String[] args) {
func();
}?? 圖解:

?? 運行結(jié)果:

實例2:使用Arrays中copyOf方法完成數(shù)組的拷貝
import java.util.Arrays;
public class test {
public static void func(){
int[] arr = {1,2,3,4,5,6};
int[] newArr = arr;
// copyOf方法在進行數(shù)組拷貝時,創(chuàng)建了一個新的數(shù)組
// arr和newArr引用的不是同一個數(shù)組
arr[0] = 1;
newArr = Arrays.copyOf(arr, arr.length);
System.out.println("newArr: " + Arrays.toString(newArr));
}
public static void main(String[] args) {
func();
}
}?? 圖解:

?? 運行結(jié)果:

實例3:拷貝某個范圍
import java.util.Arrays;
public class test {
public static void func(){
int[] arr = {1,2,3,4,5,6};
int[] newArr = arr;
int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
System.out.println("newArr2: " + Arrays.toString(newArr2));
}
public static void main(String[] args) {
func();
}
}注: 數(shù)組當(dāng)中存儲的是基本類型數(shù)據(jù)時,不論怎么拷貝基本都不會出現(xiàn)什么問題,但如果存儲的是引用數(shù)據(jù)類型,拷貝時需要考慮深淺拷貝的問題
模擬拷貝數(shù)組:
import java.util.Arrays;
public class test {
//copyOf方法拷貝數(shù)組
public static int[] copyOf(int[] arr) {
int[] ret = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
ret[i] = arr[i];
}
return ret;
}
public static void main(String[] args) {
int[] a={1,4,5,6,9};
int[] Array=copyOf(a);
for(int i=0;i<Array.length;i++) {
System.out.println(Array[i]);
}
}?? 運行結(jié)果:

3. 求數(shù)組中的元素的平均值
給定一個整型數(shù)組,求平均值
public class test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
System.out.println(avg(arr));//輸出:3.0
}
public static double avg(int[] arr) {
int sum = 0;
for (int x : arr) {//遍歷數(shù)組
sum += x;
}
return (double)sum / (double)arr.length;
}
}4. 順序查找數(shù)組中指定元素
給定一個數(shù)組,再給定一個元素,找出該元素在數(shù)組中的位置。
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int[] arr = {1,2,3,10,5,6};
Scanner scanner=new Scanner(System.in);//創(chuàng)建一個Scanner對象
int num=scanner.nextInt();//讀取用戶輸入
System.out.println(find(arr, num));
}
public static int find(int[] arr, int data) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == data) {
return i;//返回下標(biāo)
}
}
return -1; // 表示沒有找到
}
}?? 運行結(jié)果:

5. 二分查找數(shù)組中指定元素
二分查找僅適用于有序查找
什么是有序數(shù)組?
有序分為 “升序” 和 “降序”
如 1 2 3 4 , 依次遞增即為升序.
如 4 3 2 1 , 依次遞減即為降序
以升序數(shù)組為例,二分查找的思路是先取中間位置的元素,然后使用待查找元素與數(shù)組中間元素進行比較:
- 如果相等,即找到了返回該元素在數(shù)組中的下標(biāo)
- 如果小于,以類似方式到數(shù)組左半側(cè)查找
- 如果大于,以類似方式到數(shù)組右半側(cè)查找
代碼示例:
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
System.out.print("請輸入你要查找的數(shù)字:");
Scanner scanner=new Scanner(System.in);//創(chuàng)建一個Scanner對象
int num=scanner.nextInt();
System.out.println(binarySearch(arr, num));
}
public static int binarySearch(int[] arr, int toFind) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (toFind < arr[mid]) {
// 去左側(cè)區(qū)間找
right = mid - 1;
} else if (toFind > arr[mid]) {
// 去右側(cè)區(qū)間找
left = mid + 1;
} else {
// 相等, 說明找到了
return mid;
}
}
// 循環(huán)結(jié)束, 說明沒找到
return -1;
}
}?? 運行結(jié)果:

??隨著數(shù)組元素個數(shù)越多, 二分的優(yōu)勢就越大
6. 數(shù)組排序(冒泡排序)
給定一個數(shù)組,讓數(shù)組升序 (降序) 排序
算法思路: 假設(shè)排升序
- 將數(shù)組中相鄰元素從前往后依次進行比較,如果前一個元素比后一個元素大,則交換,一趟下來后最大元素就在數(shù)組的末尾
- 依次從上上述過程,直到數(shù)組中所有的元素都排列好

import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr = {9,5,7,8,6,6,7};;
bubbleSort(arr);//調(diào)用方法
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 1; j < arr.length-i; j++) {
//前一個與后一個比較,可能的話需要交換位置
if (arr[j-1] > arr[j]) {
int tmp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = tmp;
}
}
}
}
}?? 運行結(jié)果:

但是冒泡排序性能較低。在Java 中內(nèi)置了更高效的排序算法:
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr = {9,5,7,8,6,6,7};
Arrays.sort(arr);//升序排序
System.out.println(Arrays.toString(arr));
}7. 數(shù)組逆序
給定一個數(shù)組,將里面的元素逆序排列
算法思路:設(shè)定兩個下標(biāo),分別指向第一個元素和最后一個元素,交換兩個位置的元素,然后讓前一個下標(biāo)自增,后一個下標(biāo)自減,循環(huán)繼續(xù)即可。
import java.util.Arrays;
public class test {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4};
reverse(arr);
System.out.println(Arrays.toString(arr));//將數(shù)組轉(zhuǎn)化為字符串輸出
}
public static void reverse(int[] arr) {
int left = 0;//指向首元素
int right = arr.length - 1;//指向最后一個元素
while (left < right) {
//交換元素位置
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
//移動下標(biāo)
left++;
right--;
}
}
}?? 運行結(jié)果:

總結(jié)
到此這篇關(guān)于JAVA數(shù)組練習(xí)題的文章就介紹到這了,更多相關(guān)JAVA數(shù)組練習(xí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot延遲執(zhí)行實現(xiàn)方法
本文介紹了在Spring Boot項目中延遲執(zhí)行方法的實現(xiàn),以及延遲執(zhí)行下聲明式事務(wù)和編程式事務(wù)的使用情況,感興趣的朋友一起看看吧2020-12-12
Struts2學(xué)習(xí)教程之?dāng)r截器機制與自定義攔截器
這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)基礎(chǔ)教程之?dāng)r截器機制與自定義攔截器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
解析Java編程中對于包結(jié)構(gòu)的命名和訪問
這篇文章主要介紹了Java編程中對于包結(jié)構(gòu)的命名和訪問,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-12-12
詳解Spring中singleton?bean如何同時服務(wù)多個請求
這篇文章主要介紹了詳解Spring中singleton?bean如何同時服務(wù)多個請求2023-02-02
Java中的NoClassDefFoundError報錯含義解析
這篇文章主要為大家介紹了Java中的NoClassDefFoundError含義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-11-11
Java中List和fastjson的JSONArray相互轉(zhuǎn)換代碼示例
這篇文章主要介紹了如何在Java中將List和JSONArray相互轉(zhuǎn)換,展示了如何將List轉(zhuǎn)換為JSONArray,并且可以直接運行這段代碼,需要的朋友可以參考下2025-04-04

