java学习之数组1
2022/1/13 12:33:37
本文主要是介绍java学习之数组1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、数组★
概念:[一组] [类型相同的] [连续的] 存储空间的表示
优点: 缺点:
一个存储单位存多个值 长度固定
空间连续(遍历) 类型固定
下标(索引 )定位 插入和删除
语法:
四步骤:
1、声明:数据类型[] 数组名称; String[] names; String[] nameArray;
2、初始化:数组名称 = new 数据类型[长度];
names = new String[30];
下标取值范围:0~names.length-1
如果下标越界会爆异常:ArrayIndexOutOfBoundsException
3、赋值:数组名称[下标] = 值;
names[0] = "zs";
names[1] = "ls";
....
names[29] ="wz";
4、使用
System.out.println(names[0],names[1]);
其他方式:
1、数据类型[] 数组名称 = {值1,...,值n};
2、数据类型[] 数组名称;
数组名称 = new 数据类型[]{值1,...,值n};
注意:数组初始化后所有的元素都有默认的(无效)初值
String :null
char:(char)0
增强型for
for(数据类型 变量:数组名称){
依次从下标0开始,默认提取所有元素,支持continue和break;
System.out.println(数量);
}
练习
生成20个不重复的1~1000之间的随机数
public static void main(String[] args) { int[] arr = new int[20]; Random random = new Random(); arr[0] = 1+random.nextInt(1000); //下标 for (int i = 1; i <arr.length ;) { arr[i] = 1 + random.nextInt(1000); // 1 //证明是否会唯一 boolean unique = true; for (int j = 0; j <i ; j++) { //i之前的元素 if (arr[i]==arr[j]){ unique = false; break; //break重复之后回到1处重新生成新随机数,再进来比较 } } if (unique){ //重复不进来,i不变继续赋值 i++; } } for (int i:arr) { System.out.println(i); } }
数组的删除
输入一个值,如果在数组中存在,则删除,否则给出不存在提示
public static void main(String[] args) { int[] arr = {25,13,11,5,9,3,29,33,8}; System.out.println("删除前"); for (int i:arr) { System.out.print(i+"\t"); } Scanner input = new Scanner(System.in); System.out.print("请输入一个数值"); int num = input.nextInt(); //找到num在arr的下标 int i = 0; while (i<arr.length){ if (arr[i]==num){ break; } i++; } if (i==arr.length){ System.out.println(num+"不存在"); }else { //从找到的i开始 因为最后一个下标为arr.length-1,后面没了再无法覆盖了,for条件不能到此 for (int j = i; j < arr.length-1 ; j++) { //倒数第二个数字用倒数第一个去覆盖 arr[j] = arr[j+1]; //右覆盖左 } arr[arr.length-1] = 0; //最后一个覆盖掉了前面的,它原本位置还存在,所以要置为0 for (int t:arr) { System.out.print(t+"\t"); } } }
数组的插入
public static void main(String[] args) { int[] arr = {25,13,11,5,9,3,29,33,8,0}; for (int t:arr) { System.out.print(t+"\t"); } Scanner input = new Scanner(System.in); System.out.print("请输入下标"); int index = input.nextInt(); System.out.println("请输入数值:"); int num = input.nextInt(); if(index<0 || index>=arr.length){ System.err.println("下标越界"+index); }else if (num<=0){ System.err.println("输入无效数值"+num); }else{//用左边的去覆盖右边的 -1相当于左 for (int i = arr.length-1; i >index ; i--) { arr[i] = arr[i-1]; //i = 0 i-1 = -1数组下标越界 所以i不能>=0 } arr[index] = num; for (int t:arr) { System.out.print(t+"\t"); } } }
求1万以内的质数
public static void main(String[] args) { //用小于等于其平方根的质数验证即可 int[] primeNums = new int[10000]; int size = 0,count = 0; primeNums[size++] = 2; for (int i = 3; i <=10000 ; i++,count++) { //i+=2性能更高,因为偶数一定不是质数,只有奇数才有可能 boolean is = true ; for (int j = 0;primeNums[j] <= Math.sqrt(i); j++,count++) { if (i % primeNums[j] ==0 ){ is = false; break; } } if (is){ primeNums[size++] = i; } } System.out.println("there are "+size+" prime numbers from 1 to 10000 within "+count+" times circulation"); for (int i = 0; i < size; i++) { System.out.println(primeNums[i]); } }
求第n个不存在的数
public static void main(String[] args) { int[] arr = {1,4,7}; int nth = 3; int i = 1,count = 0; for (; i < Integer.MAX_VALUE;i++) { boolean no = true; for (int j : arr) { if(i==j){ no = false; break; } } if(no && ++count>=nth){ //no等于true表示不存在,此时才去验证 break; //i=1,存在不执行if i=2,不存在的数,执行++count值为1并不大于等于3 //不break,继续循环i=3,不存在的数,执行++count值为2并不>=3,继续i=4,存在不行继续i=5,不存在的数,执行++count值为2满足 //>=3,break出来,输出i为5,急第三个不存在的数为5 } } System.out.println("第"+nth+"个不存在的数值为"+i); }
这篇关于java学习之数组1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API