温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java数组常见应用有哪些

发布时间:2021-11-05 10:10:12 来源:亿速云 阅读:141 作者:iii 栏目:编程语言

这篇文章主要介绍“Java数组常见应用有哪些”,在日常操作中,相信很多人在Java数组常见应用有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数组常见应用有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

双重for循环

外循环控制行,内循环控制列。

//乘法表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

#:一个数字

0:一个数字,不够位数用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和循环中。用在单层循环中,用来结束循环。

continue

用在循环中。作用 结束本次循环进行下一次循环条件判断。

对于双重循环,可以自定义一个标签,break或continue 到标签处。

一维数组

Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

int[] arr;//声明数组,告诉计算机我要存储一组整数(推荐)或//int arr[];

int x1,x2,x3;//声明了3个int类型的变量int [] n1,n2,n3;//声明了3个数组int num1 [],num2,num3;//声明了一个int类型的数组num1,两个Int类型的变量。

创建数组

arr = new int[6];//创建一个数组,计算机在内存中分配6个空间,并初始化

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arr.length-1。

数组初始化

//动态初始化:我们制定长度,系统赋值。int[] arr = new int[5];//0//初始值//整数:0  小数:0.0  布尔:false  char:000  //String:null  //静态初始化:我们赋值,系统分配长度(arr2.length)int[] arr2 = {11,22,33};

赋值数组

arr[2]=33;

栈stack

是作为构思算法的辅助工具,不是完全的数据存储工具。是插入和删除操作被限制在表的线性表。只能从栈顶入栈,也只能从栈顶出站是一种后进先出的结构

遍历数组

普通for循环

public class TestArray { public static void main(String[] args) {  double[] myList = {1.9, 2.9, 3.4, 3.5};  // 打印所有数组元素  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循环

public class TestArray { public static void main(String[] args) {  double[] myList = {1.9, 2.9, 3.4, 3.5};  // 打印所有数组元素  for (double element: myList) {   System.out.println(element);  } }}

增强for循环的特点:

【1】简洁

【2】不能制定范围访问,只能访问全部

【3】不能反转输出,只能正序访问

【4】不能修改数组元素的值

数组排序

冒泡排序

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)); }}

数组查找方法

普通查找方法(效率比较低)

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); } //查找一个元素在数组中的第一次出现的位置 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); } //二分查找。前天:数组必须是有序的。 /*  * 思路:  * 1.通过角标先获取中间角标上的元素  * 2.让该元素和要找的数据比较。  * 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标  * 如果要找的数效率,要找的范围 头角标---中间角标-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); } //二分查找。前天:数组必须是有序的。 /*  * 思路:  * 1.通过角标先获取中间角标上的元素  * 2.让该元素和要找的数据比较。  * 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标  * 如果要找的数效率,要找的范围 头角标---中间角标-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; }}

数组的复制

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];  //    源数组 源数组起始位置 目标数组 目标数组起始位置 复制长度  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};  //将数组转换成字符串  System.out.println(Arrays.toString(arr));  //对数组进行升序排序  Arrays.sort(arr);  System.out.println(Arrays.toString(arr));  //排序数组名 排序数组元素开始位置 排序数组元素结束位置(实际上,取到终止位置减一)[起始位置,终止位置)  Arrays.sort(arr,2,4);  System.out.println(Arrays.toString(arr));  //多核处理器下并行操作使用  Arrays.parallelSort(arr);  //二分查找下标,数组 查找的数字,返回的是插入点,没有的话返回的是负的插入点减一的值  System.out.println(Arrays.binarySearch(arr, 8));  //数组比较:元素的个数和对应位置的数组元素相同  int[] arr1 = {1,2,5};  int[] arr2 = {1,2,5};  System.out.println(Arrays.equals(arr1, arr2));  //数组的填充,将数组中所有的元素替换为666  Arrays.fill(arr, 666);  System.out.println(Arrays.toString(arr));  //数组的复制,返回的是一个数组, (要复制的数组,几个元素)  int[] arr3 = Arrays.copyOf(arr1, 2);  System.out.println(Arrays.toString(arr3)); }}

二维数组

格式1:

int[][] arr = new int[3][2];

定义了名称为arr的二位数组二维数组中有3个一维数组每一个一维数组中有2个元素一维数组的名称分别为arr[0],arr[1],arr[2]给第一个一维数组1角标位赋值为666的写法是:arr[0][1] = 666;

System.out.println(arr); // [[Ie6f7d2二位数组实体 e6f7d2是哈希值,[是数组,[[二位数组

格式2:

int[][] arr = new int[3][];arr[0] = new int[3];arr[1] = new int[1];arr[2] = new int[2];

到此,关于“Java数组常见应用有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI