1. 数组的静态初始化
-
语法
数据类型[] 数组名 = new 数据类型[]{值1,值2...} 数据类型[] 数组名 = {值1,值2...}
-
区别
-
静态初始化 给定数组名 系统给定长度 程序员给定初值
-
动态初始化 给定数组名 给定长度 系统赋初值
-
-
图解
2. 数组的两个小问题
- ArrayIndexOutOfBoundsException
- 数组索引异常(数组越界)
- 索引超过数组的长度
- NullPointerException
- 空指针异常
- 使用NULL对象调用属性和方法
3. 数组遍历
-
语法
public class Demo03_Array { public static void main(String[] args) { int[] arr =new int []{1,2,3}; for(int i = 0; i <= arr.length-1; i++) { System.out.println(arr[i]); } } }
4. 求数组元素的最值
-
实现
public class Demo04_Array { public static void main(String[] args) { int[] arr =new int []{1,2,3,5986,25214,0,-1}; //定义两个变量存最值 int max = arr[0]; int min = arr[0]; //遍历 取出最大值 最小值 for(int i = 0; i <= arr.length-1; i++) { if(max < arr[i]) { max = arr[i]; } if(min > arr[i]) { min = arr[i]; } } //打印最值 System.out.println("max: " + max); System.out.println("min: " + min); } }
-
4. 数组的简单操作 查找
```java
public class Demo05_Array {
public static void main(String[] args) {
//创建数组对象
int[] arr =new int [] {1,512,9,87,512,33};
//调用 查找第一个符合要求的数
int flag = fistFind(arr, 512);
System.out.println(flag);
//调用 查找第最后一个符合要求的数
int flag1 = lastFind(arr, 512);
System.out.println(flag1);
5.练习
}
/**
* 查找第一个符合要求的数
* @param num
* @param num1
* @return
*/
public static int fistFind(int[] num, int num1) {
int flag = 0;
for(int i = 0; i <= num.length - 1; i++) {
if(num[i] == num1) {
flag = i;
break;
}
}
return flag;
}
/**
* 查找最后一个符合要求的数
* @param num
* @param num1
* @return
*/
public static int lastFind(int[] num, int num1) {
int flag = 0;
for(int i = 0; i <= num.length - 1; i++) {
if(num[i] == num1) {
flag = i;
}
}
return flag;
}
}
```
6. 练习
//6个评委打分 去掉一个最高分 一个最低分 求平均数
import java.util.Scanner;
public class Demo06_Array {
public static void main(String[] args) {
double sum = 0;
int[] arr = new int[6];
Scanner input = new Scanner(System.in);
for (int i = 0; i <= arr.length - 1; i++) {
arr[i] = input.nextInt();
}
int flag = 0;
// 排血 最大值和最小值在 第一个位置和最后一个位置上
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
flag = arr[j+1];
arr[j+1] = arr[j];
arr[j] = flag;
}
}
}
//将最大值和最小值赋值为0
arr[0] = 0;
arr[5] = 0;
//遍历计算总分
for(int i = 0; i <= arr.length-1; i++) {
sum += arr[i];
}
//输出平均分
System.out.println(sum / 4);
}
}
7. 二维数组概述
-
概念
- 一维数组存一维数组
-
初始化
- 动态
- 静态
-
动态初始化语法
数据类型[][] 数字名 = new 数据类型[m][n];
8. 二维数组动态初始化内存分配图解
9.二维数组的静态初始化
-
语法
int[][] arr2 = {{1,2},{3},{4,5}};
10. 二维数组的遍历
public class Demo07_Array {
public static void main(String[] args) {
int[][] arr2 = {{1,2},{3,5},{4,5}};
for(int i = 0; i < arr2.length; i++) {
for(int j = 0; j < arr2[i].length; j++) {
System.out.println(arr2[i][j]);
}
}
}
}
11. Java中的参数传递
- 基本数据类型进行参数传递时不会发生改变
- 引用数据类型进行参数传递时除String以外,都会发生变化
public static void main(String[] args) {
int num = 1;
System.out.println("num : " + num);//1
change(num);
System.out.println("num : " + num);//1
System.out.println("--------------");
int[] nums = {1,2,3};
System.out.println(nums[1]);//2
change(nums);
System.out.println(nums[1]);
System.out.println("--------------");
System.out.println(nums[0]);//1
change(nums[0]);
System.out.println(nums[0]);//1
System.out.println("--------------");
String str = "fuck";
System.out.println(str);//fuck
change(str);
System.out.println(str);//fuck
}
public static void change(String str) {
str = "hello";
}
public static void change(int[] nums) {
nums[1] = 250;
}
public static void change(int num) {
num = 250;
}
(str);
System.out.println(str);//fuck
}
public static void change(String str) {
str = "hello";
}
public static void change(int[] nums) {
nums[1] = 250;
}
public static void change(int num) {
num = 250;
}