当前位置: 首页 > news >正文

4 数组篇

数组的概念

  1. 数组时相同类型数据的有序集合
  2. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  3. 数组中每一个数据称作数组元素,每个数组元素可以通过一个下标来访问它

数组声明创建

声明数组变量语法:

​ dataType[] arraysRefVar; //首选

​ dataType arraysRefVar[]; //知道就行

创建数组语法:

​ 在我们声明数组之后可以用 arraysReVar = new dataType[arraysSize];

​ 在我们声明数组之前可以用 dataType[] arraysReVar= new dataType[arrsysSize];

获取数组长度:

​ arrays.length

package com.fan.Arrays;public class Demo01 {public static void main(String[] args) {//声明一个数组int[] num1;//创建一个数组num1 = new int[10];//声明并创建一个数组int[] num2 = new int[10];//给数组中元素赋值num1[0] = 1;num1[1] = 2;num1[2] = 3;num1[3] = 4;num1[4] = 5;num1[5] = 6;num1[6] = 7;num1[7] = 8;num1[8] = 9;num1[9] = 10;//计算所有元素和int sum = 0;for (int i = 0; i < num1.length; i++) {sum+= num1[i];}System.out.println("数组1的所有元素和为:"+sum);}
}

三种初始化

package com.fan.Arrays;public class Demo02 {public static void main(String[] args) {//静态初始化 声明+赋值int[] a = {1,2,3,4,5};System.out.println(a[0]);//动态初始化: 包含默认初始化int[] b = new int[10];b[0] = 10;System.out.println(b[0]);//默认初始化int[] c = new int[10];System.out.println(c[0]);}
}

数组的四个基本特点

  1. 长度确定
  2. 其内元素必须是相同类型
  3. 其内元素可以是任何数据类型
  4. 数组变量属于引用类型
  • 数组对象本身是在堆中的

数组的边界

ArrayIndexOutOfBoundsException : 数组下标越界异常!

数组使用

package com.fan.Arrays;public class Demo03 {public static void main(String[] args) {//For循环int[] a = {1,2,3,4,5};//遍历所有元素for (int i = 0; i < a.length; i++) {System.out.print(a[i]+"\t");}System.out.println("\n"+"________________________");for (int x:a){System.out.print(x+"\t");}System.out.println("\n"+"________________________");//计算数组元素之和int sum = 0;for (int i = 0; i < a.length; i++) {sum += a[i];}System.out.println("\n"+sum);System.out.println("\n"+"________________________");//查找最大元素int max = a[0];for (int i = 1; i < a.length; i++) {if (a[i] > max){max = a[i];}}System.out.println(max);}
}
package com.fan.Arrays;public class Demo04 {public static void main(String[] args) {//数组作方法入参and作返回值int[] a = {1,2,3,4,5};ite(a);System.out.println("_________________");int[] reverse = reverse(a);ite(reverse);}//反转数组public static int[] reverse (int[] arrays){int[] result = new int[arrays.length];for (int i = 0, j = arrays.length-1; i < arrays.length; i++,j--) {result[j] = arrays[i];}return result;}//遍历数组public static void ite (int[] arrays){for (int i = 0; i < arrays.length; i++) {System.out.println(arrays[i]);}}
}

多维数组

package com.fan.Arrays;public class Demo05 {public static void main(String[] args) {//声明并创建一个多维数组 //静态初始化int[][] arrays1= {{0,1},{1,2},{2,3},{3,4}};//动态初始化int[][] arrays2= [4][2]; //大小和arrays1一致 为4行2列//输出该数组的某个元素System.out.println(arrays1[0][0]);System.out.println(arrays1[1][1]);System.out.println(arrays1[2][0]);System.out.println(arrays1[3][1]);System.out.println("-------------------");//遍历该数组for (int i = 0; i < arrays1.length; i++) {for (int j = 0; j < arrays1[i].length; j++) {System.out.println(arrays1[i][j]);}}}
}

Arrays类

数组的工具类java.util.Arrays

package com.fan.Arrays;import java.util.Arrays;public class Demo06 {public static void main(String[] args) {int[] a = {1,2,3,4,5,999,0,888,666,1314,521};//输出数组System.out.println(Arrays.toString(a));//排序并输出数组Arrays.sort(a);System.out.println(Arrays.toString(a));//填充数组 输出填充后的数组Arrays.fill(a,0);System.out.println(Arrays.toString(a));//替换部分数组的数组 并输出Arrays.fill(a,2,4,6);System.out.println(Arrays.toString(a));}
}

冒泡排序

package com.fan.Arrays;import java.util.Arrays;public class Demo07 {public static void main(String[] args) {int[] a = {2,4,7,9,1,5,6,2,8,5,33,5,1,44};int[] a1 = sort(a);System.out.println(Arrays.toString(a1));}public static int[] sort (int[] array){ //冒泡排序//定义一个空容器int temp = 0;//外部循环for (int i = 0; i < array.length-1; i++) {//内部循环for (int j = 0; j < array.length-1-i; j++) {//相邻两数比较大小if (array[j] > array[j+1]){//相邻两数互换位置temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}}//返回arrayreturn array;}
}

稀疏数组

package com.fan.Arrays;public class Demo08 {public static void main(String[] args) {//创建原数组int[][] a = new int[11][11];a[1][2] = 1;a[2][3] = 2;//遍历原数组(增强for循环)for (int[] ints : a) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}System.out.println("-------------------");//开始搭建稀疏数组int sum = 0;//读取有效值的个数for (int i = 0; i < a.length; i++) { //原数组的行数for (int j = 0; j < a[i].length; j++) { //原数组的列数if (a[i][j] != 0){sum++; //记录有效值的个数}}}//创建稀疏数组int[][] a1 = new int[sum+1][3];//给稀疏数组的题头赋值a1[0][0] = a.length;a1[0][1] = a[0].length;a1[0][2] = sum;//读取有效值坐标和有效值并存入稀疏数组中int count = 0;for (int i = 0; i < a.length; i++) { //原数组的行数for (int j = 0; j < a[i].length; j++) { //原数组的列数if (a[i][j] != 0){count++; //记录有效值的个数a1[count][0] = i; //横坐标a1[count][1] = j; //纵坐标a1[count][2] = a[i][j]; //有效值}}}//遍历稀疏数组(增强for循环)for (int[] ints : a1) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}System.out.println("-------------------");//还原原数组int[][] a2 = new int[a1[0][0]][a1[0][1]]; //从稀疏数组中读取到原数组的大小for (int i = 1; i <= a1[0][2]; i++) {a2[a1[i][0]][a1[i][1]] = a1[i][2]; //从稀疏数组中读取到原数组的有效值及坐标}//遍历原数组(普通for循环)for (int i = 0; i < a2.length; i++) {for (int j = 0; j < a2[i].length; j++) {System.out.print(a2[i][j]+"\t");}System.out.println();}}
}
http://www.jsqmd.com/news/310063/

相关文章:

  • 数据挖掘项目-基于机器学习的电信用户流失分析及预测(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 全球标杆拆解:5 个国际化金融 APP 交易界面与 UI/UX 设计规范
  • Python公司客户数据分析项目(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • Python × RISC-V:别再空谈生态了,性能测试才是硬道理
  • 基于机器学习LASSO回归逻辑回归算法对心脏衰竭病症预测分析完整代码+报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 上海迪士尼游客评论数据分析报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于机器学习的心脏病预测模型构建设计机器学习心脏病预测模型(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 数据挖掘项目-基于机器学习的泰坦尼克号对生存者的预测[自动发货] > 环境(jupter)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 以机器学习为基础的房价预测分析研究数据集十相关代码十大报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 机器学习与数据挖掘项目~跨国交易消费者的分析预测(代码+数据集+报告)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • omron欧姆龙CJ/CP程序 欧姆龙CP1H-XA 汽车产线门锁组装检测机,欧姆龙NB系列触...
  • 基于COMSOL的瓦斯抽采数值模拟:变渗透率模型下的煤体变形与瓦斯抽采耦合研究
  • 巧用Buffer.compare高效比对二进制数据
  • oracle中dd/mm/yyyy和dd/mm/rrrrr有什么不一样
  • PMSM永磁同步电机PI双闭环SVPWM矢量控制 Matlab/Simulink仿真模型(成品) 1
  • C++课后习题训练记录Day83
  • 多项目并行怎么排期?三类优先级、四种资源策略,一次讲清
  • 价值投资中的新一代光子集成电路技术
  • 什么是灰度发布(Gray Release)?
  • 深度解析DbContext ChangeTracker:实体状态管理与性能优化 - 指南
  • 函数补充/数据存储
  • Java毕设项目:基于springboot的台球厅管理系统(源码+文档,讲解、调试运行,定制等)
  • Flutter for OpenHarmony 实战:双控制系统实现(按钮+键盘)
  • 【计算机毕业设计案例】基于springboot的城市轨道交通安全管理系统(程序+文档+讲解+定制)
  • 【毕业设计】基于springboot的台球厅管理系统(源码+文档+远程调试,全bao定制等)
  • 【计算机毕业设计案例】基于spark的买菜推荐系统设计与实现基于SpringBoot+Spark的买菜推荐系统设计与实现(程序+文档+讲解+定制)
  • Flutter for OpenHarmony 实战:食物生成算法与难度递增系统
  • KAIST团队突破视频生成瓶颈:让AI学会“自我反思“修正动作错误
  • Flutter for OpenHarmony 实战:CustomPainter游戏画面渲染详解
  • 上海AI实验室ImgCoder:AI实现科学手绘图精准生成