数组的定义
●数组是用来储存一批同种类型数据的内存区域。
格式:
int [] arr{10,20,30,40,50,60};
String []names{"星期一","星期二","星期三"};
静态初始化数组
定义数组时直接给数组赋值
静态初始化数组的格式:
//完整格式:
数据类型 [] 数组名 =new 数据类型 {元素1,元素2,元素3...};
double [] scores =new double {78,90,76,65};
int [] ages =new int {20,30,40};
//简化格式
数据类型 [] 数组名 ={元素1,元素2,元素3};
int[] ages ={20,30,40};
数组属于引用数据类型,储存数组的在内存中的地址信息
数组的访问
public class ArrayDemo1 {
public static void main(String[] args) {
//目标:学会访问数组元素
int[]ages ={12,13,14};
//取值: 数组名称[索引]
System.out.println(ages[0]); //输出12
System.out.println(ages[1]); //输出13
System.out.println(ages[2]); //输出14
//赋值: 数组名称[索引] =数据
ages [2]=100;
System.out.println(ages[2]); //输出100
//访问数组的长度
System.out.println(ages.length);
//数据的最大索引: 数组名.length-1 //注意:数字元素>0
//int[] arr ={};
//System.out.println(arr.length-1);
}
}
数组的注意事项
●“数据类型 [] 数组名”也可以写成“数据类型 数组名[]"。
●什么样的数组存放什么类型的数据,否则报错。
int [] arrs =new int [] {80;90;"zuoye"};×
●数组一旦定义出来,程序执行的过程中,长度,类型就固定了。
动态初始化数组
定义数组时只确定元素的数据类型和数组的长度,之后再存入具体数据。
数组的初始化格式:
数据类型 [] 数组名 = new 数据类型[长度];
int [] arr = new int [3];
//后赋值
arr [0]=10;
System.out.println(arr[0]); //10
动态初始化数组的元素默认值
public class arrayDemo2 {
public static void main(String[] args) {
//目标:掌握动态初始化元素默认值的规则
//1.整型数组元素默认值都是0;
int[] arr = new int[10];
System.out.println(arr[0]); //0
System.out.println(arr[9]); //0
//2.字符数组的元素默认值是0
char[] chars =new char [100];
System.out.println((int) chars[0]); //0
System.out.println((int) chars[99]); //0
//3.浮点型数组的元素默认值是0.0;
double [] scores = new double [90];
System.out.println(scores[0]); //0.0
System.out.println(scores[89]); //0.0
//4.布尔类型的数组
boolean[] booleans =new boolean[100];
System.out.println(booleans[0]); //false
System.out.println(booleans[99]); //false
//5.引用数据类型的数组
String [] names =new String [90];
System.out.println(names[0]); //null
System.out.println(names[89]); //null
}
}
数组遍历
一个一个进行数据访问
public class arrayDemo2 {
public static void main(String[] args) {
//目标:学会使用数字元素的遍历
int[] arr = {12,13,14,15,126};
//原始遍历方法
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
for(int i=0;i<5;i++){
System.out.println(arr[i]);
}
//终极数组遍历形式
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
数组的案例
数组遍历-求和
需求:某部门5名员工的销售额分别是16,26,36,6,100,请计算他们部门的销售总额。
public class ArrayDemo1 {
public static void main(String[] args) {
int [] money ={16,26,36,6,100};
int sum =0; //累加数组的元素值
//遍历数组中的各个元素
for (int i = 0; i < money.length; i++) {
sum += money[i];
}
System.out.println("数组的元素和:"+sum); //184
}
}
数组求最值
需求:15,180,890,8977,56
public class ArrayDemo1 {
public static void main(String[] args) {
int[] money ={15,180,890,8977,56};
//定义一个变量储存最大值元素,建议同一个元素作为参考值
int max =money[0];
//遍历数组的每个元素,依次与最大值的数据比较,若较大,则替换
for (int i = 0; i < money.length; i++) {
if(money[i]>max){
max =money[i];
}
}
//输出并储存最大值即可
System.out.println("数组的最大值是:"+max);
}
}
猜字数游戏
开发一个幸运小游戏,游戏规则如下:
游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
>未猜中提示:"未命中",并继续猜测
>猜中提示:"运气不错,猜中了",并输出该数据第一次出现的位置,且输出全部5个数据,最
终结束本游戏。
import java.util.Random;
import java.util.Scanner;
public class ArrayDemo1 {
public static void main(String[] args) {
//定义一个动态初始化的数组
int[] date =new int[5];
//动态生成的随机数并存到数组中去
Random r = new Random();
for (int i = 0; i < date.length; i++) {
date [i] =r.nextInt( 20) + 1;
//使用一个死循环让用户猜测
Scanner sc = new Scanner (System.in);
OUT:
while (true){
System.out.println("请你输入一个1~20的整数进行猜测");
int guess =sc.nextInt();
//遍历数组中的每一个数据,看是否有猜测数据与数据相同,相同则中了,
for (int J = 0; J < date.length; J++) {
if (date[J] ==guess) {
System.out.println("恭喜你,你猜中的数据是:" + J);
break OUT;
}
}
System.out.println("当前数据不存在,请重新猜测!");
}
//输出数组的全部元素
for (int k = 0; k < date.length; k++) {
System.out.println(date[k]+"\t");
}
}
}
}
随机排名
需求
某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
22 33 35 13 88
13 35 88 33 22
import java.util.Scanner;
import java.util.Random;
public class ArrayDemo1 {
public static void main(String[] args) {
int[] codes =new int[5];
//定义一个循环,循环5次,依次输入一个工号存在对应的位置
Scanner sc =new Scanner (System.in);
for (int i = 0; i < codes.length; i++) {
//录入工号
System.out.println("请输入第"+(i+1)+"个员工的工号:");
int code =sc.nextInt();
//存到数组中去
codes[i] =code;
}
//遍历数组中的每一个元素,然后随机一个索引出来,让该元素与随机索引的元素值交换
Random r = new Random();
for (int j = 0; j < codes.length; j++) {
int index =r.nextInt(codes.length);
//定义一个临时变量储存index的值
int temp =codes[index];
codes[index] =codes[j];
codes[j] =temp;
}
}
}