数组是什么?
数组可以理解为存放相同数据类型的内存区域(可以理解为容器)。
举例:
如果班级里进行随机点名但是没有使用数组会出现什么情况?
String name1 = "张三";
String name2 = "李飞";
String name3 = "小二";
String name4 = "王五";
String name5 = "李四";
......
代码冗余量大,特别繁琐,业务功能实现繁琐。
使用数组完成:
String
[]
names
= {
“
张誉
”
,
“
刘疏桐
”
,
“
田启峰
”
,
…
“
张学颖
”
,
“
李沁霖
”
,
“
陈侃
”
,};
数组的定义
数组分为静态化数组和动态化数组
{
静态化数组格式:
//
完整格式
数据类型
[]
数组名
=
new
数据类型
[]{
元素
1
,元素
2
,元素
3… };
//
简化格式
数据类型
[]
数组名
= {
元素
1
,元素
2
,元素
3
,
… }; 、
动态化数组格式:
数据类型[] 数组名= new 数据类型[长度] (
定义数组的时候
只确定元素的类型和数组的长度,之后再存入具体数据
。 )
int[] arr = new int[3];
// 后赋值
arr[0] = 10;
System.out.println(arr[0]); // 10
思考?
什么时候使用静态数组什么时候使用动态数组:当数据元素确定时使用静态数组,当不确定时使用动态数组。
⚫ 两种格式的写法是独立的,不可以混用。
}
数组的访问
数组名[索引]
int[] arr = {12,343,53,65};
// 取值
System.out.println(arr[0]); // 12
// 赋值
arr[2] = 100;
System.out.println(arr[2]); // 53
// 获取数组的长度(就是数组元素的个数)
System.out.println(arr.length); // 4
数组的注意事项:
①数据类型[] 数组名 完全等价于 数据类型 数组名[]
②什么类型的数组存放什么类型的数据,否则报错
③数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
④
元素默认规则
数组的遍历
数组的遍历就是一个一个的访问数据
int[] ages = {20, 30, 40, 50};
for (int i = 0; i < ages.length; i++) {
System.out.println(ages[i]);
}
来一些经典案例吧!
❶数组元素求和
public class TestDemo1 {
public static void main(String[] args) {
//目标:学会使用数组元素求和
//1定义一个静态数组
int[] money = {10,222,45,64};
// 0 1 2 3
//2对这个数组进行遍历
//3定义一个求和变量sum
int sum = 0;
for (int i = 0; i < money.length ; i++) {
sum += money[i];
}
System.out.println("数组的和为"+sum);
}
}
❷开发一个幸运小游戏,游戏规则如下: 游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字
package TestDemo;
import java.util.Random;
import java.util.Scanner;
public class TestDemo2 {
public static void main(String[] args) {
//随机生成一个1-20的数据存到数组中进行猜测,若猜中返回第一次猜中数据在数组中的位置
//1生成一个动态数组
int[] date = new int[5];
//2随机生成5个数并存入到数组中去
Random r = new Random();
for (int i = 0; i < date.length ; i++) {
date[i] = r.nextInt(1,20);
}
//3使用一个死循环进行猜测
Scanner sc = new Scanner(System.in); //进行扫描,从键盘输入数
Out:
while (true){
System.out.println("请输入1-20之间的数进行猜测");
int guessdate = sc.nextInt();
//对数组进行遍历
for (int i = 0; i < date.length; i++) {
if (guessdate == date[i]){
System.out.println("您猜中了,首次出现的地方为" + i);
break Out;//结束整个循环
}
}
System.out.println("您当前的猜测不在数组中请重新猜测");
}
//4输出整个数组是用户自行判断猜测是否正确
for (int i = 0; i < date.length; i++) {
System.out.print(date[i] +"\t");
}
}
}
❸随机排名
package TestDemo;
import java.util.Random;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
//录入一组员工工号,随机进行输出22
//1定义一个动态数组
int[] gonghao = new int[5];
//2利用循环输入一组员工的工号
//需要一个扫描器
Scanner sc = new Scanner(System.in);
for (int i = 0; i < gonghao.length ; i++) {
System.out.println("您输入的工号是第" + (i+1) +"个员工的工号");
int hao = sc.nextInt();
gonghao[i] = hao;
}
//3随机生成一个索引值并进行工号的交换
Random r = new Random();
for (int i = 0; i < gonghao.length; i++) {
int index = r.nextInt(gonghao.length);//随机生成01234的索引
int temp = gonghao[index];
gonghao[index] = gonghao[i];
gonghao[i] = temp;
}
for (int i = 0; i < gonghao.length; i++) {
System.out.print(gonghao[i] + "\t");
}
}
}
❹冒泡排序
package TestDemo;
public class Test4 {
public static void main(String[] args) {
//冒泡排序
int[] arr = {3,5,1,4};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
部分内容来自黑马程序员!!!!