千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  一文带你搞懂JAVA中的数组

一文带你搞懂JAVA中的数组

来源:千锋教育
发布人:lx
时间: 2023-02-16 17:12:00

  数组是一片连续的存储空间;

  数组有下标,从0开始。

  四. 数组的声明和创建

JAVA中的数组

  4.1 声明语法

  数组的声明可以采用如下语法格式:

  数据类型 [] 数组名;

  数据类型 数组名 [];

  注意:

  数据类型既可以是基本类型 int,double;也可以引用类型 String

  4.2 创建语法

  主要包括三种创建方式:

  数据类型 [] 数组名 = new 数据类型[数组大小];

  注意:

  数组创建要使用关键字 : new 开辟新空间(堆);

  数组大小必须给定,决定数组空间大小;

  声明和创建的类型一致;

  例如:

  数据类型[] 数组名 = {元素1,元素2...};

  int[] a = new int[4];

  注意:

  这种方式需要声明和创建是不可以分开写的。

  例如:

  数据类型[] 数组名 = new 数据类型[]{元素1,元素2...};

  int[] a = {1,2,3,4};

  注意:

  这种方式可以看作前两个方式的结合,值得注意的是,[]不要传入大小,是根据后面的元素决定的。

  例如:

  int [] a = new int[] {1,2,3,4};

  五. 数组的高级应用

  数组的关键就在于如何使用。本文中主要是给大家总结一些数组常见的问题,大家可以通过以下学习解决很多数组相关的问题,包括以下几个方面:

  数组的遍历迭代;

  动态给数组赋值;

  数组求和;

  数组平均值;

  最大值最小值;

  计数问题;

  排序以及查找

  5.1 数组的遍历

  数组的遍历在JAVA中有两种方式,一种是通过下标依次访问,另外一种则是通过JDK5以后的增强for循环实现的:

  for (int i = 0; i < a.length; i++) {

  System.out.println(a[i]);

  }

  注意:

  数组的下标从0开始,数组的长度是数组名.length。因此迭代的范围是 0~a.length -1

  for(int m : a) {

  System.out.print(m + "\t");

  }

  注意:

  增强for循环中m是迭代变量,会自动获取数组a中的每个元素。

  5.2 动态赋值

  动态赋值,指的是给数组的元素依次赋值的过程:

  int [] score = new int[5];

  Scanner sc = new Scanner(System.in);

  for (int i = 0; i < score.length; i++) {

  //给数组每个元素赋值

  score[i] = sc.nextInt();

  }

  5.3 求和以及平均值

  double sum = 0;

  Scanner sc = new Scanner(System.in);

  for (int i = 0; i < score.length; i++) {

  score[i] = sc.nextInt();

  //累计求和

  sum += score[i];

  }

  System.out.println("总分:" + sum);

  System.out.println("平均分:" + sum / score.length);

  5.4 最大值和最小值

  public class TestUse {

  public static void main(String[] args) {

  System.out.println("请输入五个学生成绩:");

  Scanner sc = new Scanner(System.in);

  int[] score = new int[5];

  int max = 0, min = 999 , maxIndex = -1, minIndex = -1;

  for (int i = 0; i < score.length; i++) {

  score[i] = sc.nextInt();

  //每个人的分数和最高的比较,比max高,刷出最高分

  if(score[i] > max) {

  max = score[i];

  maxIndex = i;

  }

  if(score[i] < min) {

  min = score[i];

  minIndex = i;

  }

  }

  System.out.println(max + "," + min);

  System.out.println(maxIndex + 1 + "," + (minIndex + 1));

  }

  }

  5.5 计数问题

  数组内部统计个数:

  public class TestCount {

  public static void main(String[] args) {

  int [] score = new int[5];

  System.out.println("请输入五个学生成绩");

  Scanner sc = new Scanner(System.in);

  //计数变量

  int count = 0;

  for (int i = 0; i < score.length; i++) {

  score[i] = sc.nextInt();

  if(score[i] < 60) {

  count++;

  }

  }

  System.out.println("不及格人数:" + count);

  }

  }

  练习题:将数组的元素去掉0,如何实现?

  5.6 数组排序

  排序方式:冒泡排序, 选择排序,插入排序,归并排序,堆排序等。

  以冒泡排序(下沉法)为例:

  将数组元素挨着的两两比较,交换,大的下沉,小的上浮,直到最大的沉到最下面,完成一次冒泡,后续将剩余元素按照此原来依次完成。

  int [] a = {12,45,66,34,12,7,34,12,45,45,78,45};

  //冒泡的次数

  for (int i = 1; i < a.length; i++) {

  //每次冒泡中比较和交换

  for (int j = 0; j < a.length - i; j++) {

  if(a[j] > a[j + 1]) {

  //交换

  int c = a[j];

  a[j] = a[j + 1];

  a[j + 1] = c;

  }

  }

  }

  System.out.println(Arrays.toString(a));

  5.7 数组元素查找

  线性查找: 将目标元素和数组中每一个元素依次比较,当发现有相同,查找到,当循环全部执行结束后,依然没有找到,则没有。

  public class TestFind {

  public static void main(String[] args) {

  int [] a = {12,45,66,34,12,7,34,12,45,45,78,45};

  Scanner sc = new Scanner(System.in);

  System.out.println("请输入要查找的元素:");

  int target = sc.nextInt();

  boolean flag = true;

  for (int i = 0; i < a.length; i++) {

  if(target == a[i]) {

  System.out.println("找到该元素");

  flag = false;

  break;

  }

  }

  if(flag) {

  System.out.println("没有该元素");

  }

  }

  }

  今天,带各位小伙伴梳理了数组的基本使用,希望今天的内容可以给你带来一些帮助!

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

为什么会出现ref?

2023-05-05

防抖和节流是什么?

2023-04-27

JS的原型与原型链是什么?

2023-04-20

最新文章NEW

什么是redux?

2023-05-05

vue的计算属性,特性,应用是什么?

2023-04-27

负载均衡原理是什么?

2023-04-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>