一文带你搞懂JAVA中的数组
数组是一片连续的存储空间;
数组有下标,从0开始。
四. 数组的声明和创建
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("没有该元素");
}
}
}
今天,带各位小伙伴梳理了数组的基本使用,希望今天的内容可以给你带来一些帮助!

相关推荐HOT
更多>>
怎么将string字符串转换成byte[]数组?
例如,使用默认字符集转换可以如下所示: 也可以指定字符集: 这将使用UTF-8字符集将字符串转换成字节数组。详情>>
2023-04-25 17:14:58
如何禁用浏览器的前进和后退功能
URL) 本质就是在进入页面或者路由跳转的时候在历史记录中保存一条没有意义的记录,这样用户在点击前后后退按钮的时候就没有效果。详情>>
2023-04-19 10:36:58
react传值是什么意思?
react是组件化的框架,组件实例间作用域是互相隔离的,所以组件间的通信就变成了开发过程中常常要解决的问题,根据场景可以分为: 父子组...详情>>
2023-04-18 17:23:22
使用IE浏览器遇见过哪些兼容问题?
在IE6中,块元素设置float并且有水平方向的margin时,margin显示出来会比设置的值大,会导致最后一块元素被顶到下面去; 解决办法:在CSS文...详情>>
2023-04-12 09:21:12