一维数组
- 数组是引用数据类型
数组的理解
数组
数组:一个变量可以存一组(0~n)个相同类型值的数据类型。(数组是具有相同数据类型并且按照一定的次序排列的一组变量的集合体)。``java`为数组分配一段连续的空间(存储数据的个数是一定的)。
数组元素
构成数组的每一个元素
数组下标
表示元素在数组中的位置,用整数表示,从0开始
数组的大小
数组中元素的个数
使用数组
数组的使用步骤:
1.定义数组
2.为数组分配内存
3.数组元素初始化
4.使用数组
使用数组:
1.定义数组
例:
int arr[];
int[] arr;
-
定义数组相当于向
JVM
申请内存 -
JVM
将数组的名称存储在栈(先进后出的数据结构)中,数组名在栈底 -
内存编号是由
JVM
分配的,是16进制表示,0x开头
2.为数组分配内存
数组名 = new 数据类型 [数组长度]
例:
arr = new int[10];
- [10]表示数组长度是10
- new 关键字是在 堆(heap)内存中开辟空间.数组的长度就固定了
定义数组和分配内存空间可以写成一步:
int[] arr = new int[5];
3.数组元素初始化
-
初始化第一次赋值的意思
-
没有初始化,也有默认值
数组名[下标] = 值
例:通过下标给数组赋值
public class ArrayDemo {
public static void main(String[] args) {
int[] arr= new int [5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
System.out.println(arr[4]);
}
}
- 定义数组、分配内存、数组元素初始化可以写成一步
int[] 数组名 = new 数据类型[] {值1,值2....}
int[] 数组名 ={值1,值2.....}
例:
int[] arr1 = new int[]{1, 2, 3, 4, 5, 6};
int[] arr2 = {1, 2, 3, 4};
- 数组的长度由{ }中元素的个数决定
4.使用数组
例:输入十位同学的成绩并且输出
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[5];
for (int i = 0;i<arr.length;i++){
System.out.printf("请输入第 %d 位同学成绩:",i+1);
arr[i] = sc.nextInt();
}
//遍历数组
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i] +"\t");
} }
}
System.out.println(arr[i] +"\t");
- "t"是字符串,'t’是字符会进行数值运算。
增强循环
for(元素类型 变量名 :要迭代的对象){
}
例:用增强循环遍历数组元素
public class ArrayDemo {
public static void main(String[] args) {
int[] arr ={13,26,7,65,43};
for( int item: arr){
System.out.println("数组的元素依次是:"+item);
}
}
}
随机数/伪随机数
Random random.nextInt(value) [0, value)
Math.random() 0 ~ 1 [0, 1)
例:
random.nextInt(40)
- 表示取0~40的随机数,包括0,不包括40
public class ArrayDemo {
public static void main(String[] args) {
Random random = new Random();
// 取 1 ~ 40
for (int i = 0; i < 10; i ++){
System.out.println(random.nextInt(40) + 1);
// System.out.println((int)(Math.random() * 40 + 1));
}
}
}
二分查找
import java.util.Random;
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
Random random = new Random();
int n = random.nextInt(100);
Scanner sc = new Scanner(System.in);
for(int i = 1;i < 7;i++) {
System.out.println("请输入你猜的数字" );
int b = sc.nextInt();
if (b == n){
System.out.println("你猜对了");
} else if (b >n) {
System.out.println("你猜大了");
} else if (b < n) {
System.out.println("你猜小了");
}
}
}
}
异常
1.下标越界
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int [5];
arr [5] = 89;
}
}
- 下标超出数组大小