关于JAVA中的数组操作
- 关于数组需要学会什么
- 定义数组的方式,访问方式以及注意事项
- 数组的几个注意事项
- 数组的动态初始化
- 数组遍历介绍
- 数组操作
- 冒泡排序
关于数组需要学会什么
- 怎样定义数组存储数据
- 怎么操作数组元素
- 怎么解决实际问题
- 数组内存原理
- 数组使用的注意点
定义数组的方式,访问方式以及注意事项
// 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...}
double[] scores = new double[]{1,2,3,4,5};
int[] ages = new int[]{11,22,33,44};
//简化写法:数据类型[] = 数组名 = { 元素1, 元素2, ... }
int[] age = {12,13,14};
⚠️
数组变量名中存储的数组是内存中的地址,数组是引用类型。
// 数组的访问
System.out.println(scores[0]);
// 数组的长度
System.out.println(scores.length);
⚠️数组的最大索引怎么表示:
数组名.length - 1 // 前提:元素个数大于0
数组的几个注意事项
- “数组类型[] 数组名”也可以写成“数据类型 数组名[]”。
- 什么类型的数组存放什么类型的数据,否则报错。
- 数组一旦定义出来,程序执行的过程中,长度、类型就固定了。
数组的动态初始化
定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。
double[] scores = new double[3];
System.out.println(scores[0]); // 0.0
scores[0] = 1;
System.out.println(scores[1]); //1.0
元素默认值规则:
数据类型 | 明细 | 默认值 |
基本类型 | byte、short、char、int、long | 0 |
基本类型 | float、double | 0.0 |
基本类型 | boolean | false |
引用类型 | 类、接口、数组、String | null |
数组遍历介绍
int[] arr = {12,32,43,54,65,76};
int sum = 0;
for(int i = 0 ; i < arr.length; i ++){
sum += arr[i];
}
System.out.println(sum);
数组操作
// 数组元素求最大值
int[] faceScore = {15, 9000, 10000, 20000, 9300, -5};
int max = faceScore[0];
for(int i = 1; i < faceScore.length; i++){
if (faceScore[i] > max){
max = faceScore[i];
}
}
System.out.println(max);
package scanner;
import java.util.Random;
import java.util.Scanner;
public class scanner {
public static void main (String[] args) {
// 需求:5个1~20之间的随机数,让用户猜测,猜中要提示,还要输出该数据在数组中第一次出现的索引,并打印数组的内容出来
// 没有猜中继续
int[] datas = new int[5];
Random r = new Random();
for (int i = 0; i < datas.length; i++) {
datas[i] = r.nextInt(20) + 1;
}
Scanner sc = new Scanner(System.in);
OUT:
while (true){
System.out.println("请您输入一个1~20之间的整数进行猜测:");
int guessData = sc.nextInt();
for (int i = 0; i < datas.length; i++) {
if (guessData == datas[i]){
System.out.println("您猜中了,这个元素是第" + i + "个元素");
break OUT;
}
}
System.out.println("当前猜测的数据,在数组中不存在,请重新猜测!");
}
for (int i = 0; i < datas.length; i++) {
System.out.println(datas[i] + "\t");
}
}
}
package scanner;
import java.util.Random;
import java.util.Scanner;
public class scanner {
public static void main (String[] args) {
// 目标:键盘录入一组工号,最终要随机输出一组来作为排名
int[] codes = new int[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 i = 0; i < codes.length; i++) {
int index = r.nextInt(codes.length);
int temp = codes[index];
codes[index] = codes[i];
codes[i] = temp;
}
for (int i = 0; i < codes.length; i++) {
System.out.println(codes[i] + "\t");
}
}
}
冒泡排序
package scanner;
import java.util.Random;
import java.util.Scanner;
public class scanner {
public static void main (String[] args) {
// 冒泡排序
int[] arr = {5,4,3,21,1};
for (int i = 1; i <= arr.length - 1; i++) {
for (int j = 0; j < arr.length - i; 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.println(arr[i] + "\t");
}
}
}