一、数组
1.1 数组定义
数组——就是一种
可以存放一组相同类型数据的
数据类型
- 可以存放一组数据
- 存储的这一组数据类型必须相同
1.2 数据的声明及创建
1.2.1数据的声明
在栈区分配2个字节的引用空间,无需指定长度
示例:
// 声明整型数组
int[] arr1; ✔ 推荐使用
int arr1[]; ✔
// 声明double类型数组
double[] arr2;
// 声明字符串类型数组
String[] arr3;
1.2.2 数组的创建
数组创建——在堆区分配数组的存储空间,必须指定数组的长度;如果一个数组只声明没有创建,则数组不可使用
//创建int类型数组
arr1 = new int[4];
//创建double类型数组
arr2 = new double[7];
//创建String类型数组
arr3 = new String[5];
1.3 数组的初始化
数组的作用是用来存储数据的
1.3.1 静态初始化
静态初始化——在数组创建的同时,将数据存储到数组中
代码示例:
int[] arr4 = {12,23,34,45}; --> int[] arr4 = new int[4]{12,23,34,45};
double[] arr5 = {3.2 , 5.5 , 7.9 , 12.13 , 99.0};
String[] arr6 = {"a","bb","ccc","dddd","eeeee"};
内存示意图:
1.3.2 动态初始化
先完成数组的声明和创建,然后通过数组的索引进行初始化
数组的索引:当完成数组的创建之后,每个存储数据的单元格默认有一个编号,编号从0
开始,到数组的长度-1
结束;我们可以通过编号来指定数组中的特定存储单元(元素),这个编号就是数组的索引。
int[] arr = new int[4];
//通过数组的length属性可以获取数组的长度
int len = arr.length;
//通过for循环给数组的元素动态赋值
for(int i=0; i<arr.length ; i++ ){
arr[i] = i*2+1; // 1 3 5 ....
}
1.3.3 数组元素的默认值
注:如果一个数组创建之后没有手动初始化,数组中是有默认值的
- byte[] short[] int[] long[] ---- 0
- float[] double[] ---- 0.0
- char[] ---- ‘\u0000’
- boolean[] ----- false
- String[] ----- null
1.4 获取数组元素
数组元素——就是存储在数组单元格中的值
1.4.1 获取单个元素
通过
数组名[索引]
获取数组中的指定元素
- 如果索引超出范围则会抛出
ArrayIndexOutOfBoundsException
的异常提示
1.4.2 遍历数组
遍历——将数组中的所有元素依次取出
代码示例:
int[] arr = new int[7];
for(int i=0 ; i<arr.length ; i++){
arr[i] = i*2+1;
}
//获取数组元素
// for循环遍历数组
for( int i=0; i<arr.length ; i++ ) {
int a = arr[i];
System.out.print(a+"\t");
}
System.out.println();
// foreach遍历数组
for(int a : arr){
System.out.print(a+"\t");
}
System.out.println();
//倒序遍历
for(int j=arr.length-1 ; j>=0 ; j-- ){
int b = arr[j];
System.out.print(b+"\t");
}
System.out.println();
String[] names = {"余毅","游泳聪","易施妍","宋佳鹏","杜全龙"};
//for循环遍历
for(int i=0; i<names.length ; i++){
String name = names[i];
System.out.print(name+"\t");
}
System.out.println();
//foreach遍历
for(String name:names){
System.out.print(name+"\t");
}
System.out.println();
//倒序遍历
for(int j=names.length-1 ; j>=0 ; j--){
System.out.print( names[j] +"\t");
}
1.5 数组的应用
- 从键盘输入5个名字,存储在数组中,并遍历打印
- 从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印
- 从键盘输入5个数字,存储在数组中,然后计算平均值
- 定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;
T1:从键盘输入5个名字,存储在数组中,并遍历打印
package com.qfedu.array_2;
import java.util.Scanner;
/**
* 从键盘输入5个名字,存储在数组中,并遍历打印
*/
public class ArrayPractice01 {
public static void main(String[] args) {
//1.声明并创建数组
String[] names = new String[5];
//2.创建扫描器(读取键盘在控制台输入的数据)
Scanner sc = new Scanner( System.in );
//3.数组初始化:读取没名字,存放到数组中
for(int i=0 ; i<names.length ; i++){
System.out.println("请输入第"+(i+1)+"个名字:");
names[i] = sc.nextLine();
}
//4.遍历打印names中存的名字
for (String name : names ) {
System.out.print(name + "\t");
}
}
}
T2:从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印
package com.qfedu.array_2;
import java.util.Scanner;
/**
* 从键盘输入5个数字,存储在数组中,然后找到最大的一个并打印
*/
public class ArrayPractice02 {
public static void main(String[] args) {
//1.声明及创建数组
int[] nums = new int[5];
//2.创建扫描器
Scanner sc = new Scanner( System.in );
//3.数组初始化
for (int i = 0; i < nums.length ; i++) {
System.out.println("请输入第"+(i+1)+"个整数:");
nums[i] = sc.nextInt();
}
//4.从nums数组中找到最大的一个整数
int max = nums[0];
for(int j=1; j<nums.length ; j++){
if(nums[j]>max){
max = nums[j];
}
}
System.out.println("最大值为:"+max);
}
}
T3:从键盘输入5个数字,存储在数组中,然后计算平均值
package com.qfedu.array_2;
import java.util.Scanner;
/**
* 从键盘输入5个数字,存储在数组中,然后计算平均值
*/
public class ArrayPractice03 {
public static void main(String[] args) {
double[] nums = new double[5];
Scanner sc = new Scanner(System.in);
for (int i=0 ; i<nums.length ; i++){
System.out.println("请输入第"+(i+1)+"个数值:");
nums[i] = sc.nextDouble();
}
//求平均值
double sum = 0;
for (int j=0; j<nums.length ;j++){
sum = sum + nums[j];
}
double avg = sum / nums.length;
System.out.println("平均值为:"+avg);
}
}
T4:定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;
package com.qfedu.array_2;
import java.util.Scanner;
/**
* 定义一个int数组,静态初始化一组数字,然后从控制台输入一个数字,如果输入的数字在数组中存在则打印索引,如果不存在则输出-1;
*/
public class ArrayPractice04 {
public static void main(String[] args) {
//1.静态初始化一个数组
int[] nums = {12,23,34,45,79,18,5,7,31};
//2.键盘输入一个数字
System.out.println("请输入一个整数:");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt(); // 34
//3.从nums查找是否存在m
int index = -1;
for(int i=0; i<nums.length ; i++){
if( nums[i] == m ){
index = i;
}
}
System.out.println(index);
}
}