提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它
- 属于复杂数据类型
- 由类型相同的元素组成的有顺序的数据集合
- Java数组是固定的不能扩展[长度一旦声明,不能修改]
- 可以存储基本数据类型或对象
- 数组可以定义为任意数据类型,并且可分为一维数组或多维数组
1、一维数组的创建
一维数组实质上是相同类型变量的列表。要创建一个数组必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:
- 数据类型[] 数组名称=new 数据类型 [元素个数];
- 数据类型[] 数组名称=new 数据类型[]{元素1,元素2,…元素n};
数组的特点:
- 数组中的元素必须类型相同,不能存储不同类型的元素,除非使用Object[]
- 可以通过数组的下标操作数组中所存储的元素,注意下标从0开始
- 使用数组之前,必须先定义后使用
- 声明数组变量后,必须进行初始化操作,也就是定义数组的长度 arr=new int[5],这里表示开启可以存放5个int类型数据的数组,这些元素时连续存放的
- 数组初始化长度后,每个元素都有一个默认值,如果针对的是引用类型,则默认值为null;如果是简单类型中byte short int long float double,则默认值为0,如果char类型默认值为\0,如果boolean类型,则默认false
在Java中允许直接赋值初始
int[] arr={1,2,3,4,5,6,7}; 注意在于int[]中不能写具体的对应长度
也可以写成new int[]{1,2,3,4,5,6,7},但是int[]中不能有长度值
数组在声明了变量类型后,仍不存在实际的数值,它的值为null。为了使数组成为实际的、物理上存在的整型数组,必须用运算符new 来为其分配地址并且把它赋给数组名称
- 运算符new 是专门用来分配内存的运算符
length属性
数组对象中有个属性length表示的是数组的长度,注意不是length方法
数组元素的访问
针对数组中的元素可以通过下标进行访问,访问的语法为: 数据变量的名称[下标]
数组中的所有元素将被初始化为零。可以给数组中每个元素赋值
kk[0]=10;
kk[1]+=13;
……
声明的同时初始化
在数组定义时指定元素的初始值,即称为数组的初始化 ;int a[]={1,2,3,4,5};
2、数组的遍历
普通for循环:
int[] arr=new int[] {2,5,3,1,9,0};
for(int i=0;i<arr.length;i++)
System.out.println("数组arr的第"+i+"个元素值为:"+arr[i]);
增强for循环:
int[] arr=new int[] {2,5,3,1,9,0};
for(int a:arr)
System.out.println(a);
格式化输出:
int[] arr = new int[] { 2, 5, 3, 1, 9, 0 };
for (int i = 0; i < arr.length; i++)
System.out.printf("%s[%d] = %d\n", "arr", i, arr[i]); //printf用于格式化
输出,
3、练习题
1、循环打印出小写字母a~z
char c='a';
for(int i=0;i<26;i++)
System.out.println((char)(c+i));
char[] arr=new char[26];
for(int i=0;i<26;i++)
arr[i]=(char)(c+i);
//输出数组中的数据
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
//foreach结构,是用于遍历集合写法的语法糖,是for循环的简化写法
for(char temp:arr)
System.out.println(temp);
2、将小写字母转化为大写字母
char[] arr = new char[26];
for(int i=0;i<26;i++)
arr[i]=(char)('a'+i);
char[] brr=arr;
for(int i=0;i<brr.length;i++) {
brr[i]=Character.toUpperCase(brr[i]);
// if('a'<=brr[i] && brr[i]<='z') { //第二种方法
// char temp=(char)(brr[i]-'a'+'A');
// }
}
for(char temp:arr)
System.out.println(temp);
3、获取某个数组中的最小值
public static void main(String[] args) {
//生成一个随机数的数组,长10
int[] arr=new int[10];
Random r=new Random();
for(int i=0;i<arr.length;i++)
arr[i]=r.nextInt();
System.out.println(arr);//[I@4e25154f 数组的直接输出格式
for(int temp:arr) //自定义输出数组中的每个元素
System.out.print(temp+"\t");
System.out.println(); //实现下次输出从头开始输出
int min=Integer.MAX_VALUE;
for(int i=0;i<arr.length;i++)
if(arr[i]<min)
min=arr[i];
System.out.println(min);
}
4、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分
public class Test {
public static void main(String[] args) {
// 评委打分 0-10
Scanner sc = new Scanner(System.in);
double[] arr = new double[10];
for (int i = 0; i < arr.length; i++)
inputNum(arr, i, sc);
for (double temp : arr)
System.out.println(temp);
// 获取最值
double min = min(arr);
double max = max(arr);
//按照业务规则定义算法实现
double res=0;
for(double temp:arr)
res+=temp;
res-=min;
res-=max;
res/=8;
System.out.println("平均分:"+res);
}
// 用于获取arr数组中的最大值
public static double max(double[] arr) {
double res = Double.MIN_VALUE;
if (arr != null) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] > res)
res = arr[i];
}
}
return res;
}
// 用于获取arr数组中的最小值
public static double min(double[] arr) {
double res = Double.MAX_VALUE;// 默认值为double类型的最大取值
if (arr != null) // 用于避免NullPointerException
for (int i = 0; i < arr.length; i++)
if (arr[i] < res res = arr[i];
return res;
}
//用于实现用户键盘录入评分,arr存储数据的数组,index是第几个评分,sc键盘
public static void inputNum(double[] arr, int index, Scanner sc) {
while (true) {
System.out.println("请打分:");
String ss = sc.nextLine();
try {
double d = Double.parseDouble(ss);
if (d >= 0 && d <= 10) {
arr[index] = d;
break;
}
System.out.println("输入的分数不合法!");
} catch (Exception e) {
System.out.println("输入数据格式不正确");
}
}
}
}
5.将指定数组中的数组元素进行反转 ,例如:{1,2,3,4,5} 反转{5,4,3,2,1}
int[] arr=new int[]{1,2,3,4,5};
for(int i=0;i<arr.length/2;i++){
int temp=arr[i];
int pos2=arr.length-i-1;
arr[i]=arr[pos2];
arr[pos2]=temp;
}
本文介绍了Java中一维数组的基础概念,包括创建数组的方法、数组元素的访问方式以及通过for和增强for循环的遍历。随后,提供了实践性的编程练习,涉及字符转换、数组求最小值、平均分计算及数组反转等技巧。
2021

被折叠的 条评论
为什么被折叠?



