java数组

本文介绍了Java中一维数组的基础概念,包括创建数组的方法、数组元素的访问方式以及通过for和增强for循环的遍历。随后,提供了实践性的编程练习,涉及字符转换、数组求最小值、平均分计算及数组反转等技巧。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它

  • 属于复杂数据类型
  • 由类型相同的元素组成的有顺序的数据集合
  • 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;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值