坚持!
敲了几天记事本 换个idea JDK1.8最好 IDEA 版本自己随意 我放个路径你们可以参考
https://blog.csdn.net/zxy15974062965/article/details/121824561?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164588400016780271948134%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164588400016780271948134&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-121824561.pc_search_result_cache&utm_term=IDEA%E7%A0%B4%E8%A7%A3%E7%89%88%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
网址是真的长
安装好了 就开始今天的
数组
数组是什么?
数组是一个容器,用来存储同种数据得值,需要结合数据类型来考虑,变量之能存储一个数据
定义数组格式
格式一:数据类型[] 变量名
范例:int[] array
格式二:数据类型 数据名[]
int array[]
//array 为数组得英文 起变量名应该遵循见名知义
int array;
System.out.printIn(array);//错误,虽然定义了一个数组 ,但也仅仅是一个数组类型得变量,数组没有进行初始化这就是错误原因
数组的动态初始化
Java中的数组必须先初始化然后使用
所谓初始化:就是在内存中,为数组开辟空间,并将数据存入容器中的过程
动态初始化:初始化时只指定数组长度,有系统默认分配初始值
格式:数据类型[] 变量名=new 数据类型[数组长度];
范例: int[] array=new int[9];//9可以是任意数字 除了负数
得到结果为:System.out.println(array); =>>[I@299a06ac 内存地址 这个变量就是村内存得地址 @就是分隔符 [:表示当前空间是一个数组类型 I:就是当前数据得数据类型 299a06ac:十六进制内存地址
数据得访问
访问数组得内存地址:System.out.println(数组名);格式:数组名
数组内部保存得数据得访问方式
格式:数组名[索引]
索引:数组容器中得空间编号 特征1:索引从0开始 特征2:索引是连续得 特征3:索引逐一增加,每次加一。
作用:访问数组容器中得空间位置
int[] arr=new int[3];
System.out.println(arr); //数组得内存地址
System.out.println(arr[0]); //0 系统分配得初始化值
System.out.println(arr[1]); //0 系统分配得初始化值
System.out.println(arr[2]); //0 系统分配得初始化值
即使没有赋值,也可以取出,取出得数据都是默认初始化值
int[] arr=new int[3];
arr[0]=11;
arr[1]=22;
arr[2]=33;
System.out.println(arr); //数组得内存地址
System.out.println(arr[0]); //11 咋门添加得值
System.out.println(arr[1]); //22 添加得值
System.out.println(arr[2]); //33
注意事项:数组访问得索引不可以大于等于所赋长度,否则会爆出索引越界 例如我上边定义得数组元素为3 就只有0,1,2 ,3得话就会报错
对数组了解得透一点就要了解java内存分配了
Java程序运行时,需要在内存中分配空间,为了提高效率,就对空间进行了不同区域得划分,每一篇区域都有特定的处理数据方式和内存管理方式
Java内存分为五块
栈内存:方法运行时,进入的内存,局部变量都存放于这块内存当中
堆内存:new出来的内容都会进入堆内存,并且会存在地址值
方法区:字节码文件(.class)加载时进入的内存
本地方法栈:调用操作系统相关资源
寄存器:交给CPU去使用的
至于太详细的我不太明白 你们可以自行去搜索一下
:https://blog.csdn.net/lin20044140410/article/details/79060053?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164588781716781685324303%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164588781716781685324303&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-79060053.pc_search_result_cache&utm_term=java%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D&spm=1018.2226.3001.4187
整数类型数组默认值:0
浮点数数组默认值:0.0
布尔类型数组默认值:false
字符类型数组默认值:空字符
引用数据类型数组默认值:null
可以自行尝试去写代码测试一下
两个数组操作同一个地址值的时候 第二个索引的值会覆盖第一个索引的值
int arr1=new int[2];
arr1[0]=11;
arr1[1]=22;
int[] arr2=arr1;
arr2[0]=33;
System.out.println(arr1[0]);//33
System.out.println(arr1[1]);//22
System.out.println(arr2[0]);//33
System.out.println(arr2[1]);//22
静态初始化数组:初始化时,就可以指定数组要存储的元素,系统还会自动计算出该数组长度
格式:数据类型[] 变量名= new 数据类型[]{数据1,数据2,数据3,....};
范例:int[] array=new int[]{1,2,3};
简化格式:数据类型[] 变量名={数据1,数据2,数据3,....};
范例:int[] array={1,2,3};
int[] arr1=new int[]{1,2,3,4};
System.out.println(arr1);
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1[3]);
int[] arr={1,2,3};//省略了new 但还是会开辟一个内存空间
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
使用场景:
动态初始化:只确定元素个数不明确元素值
静态初始化:需求中确定了明确的值
空指针异常:null值赋给了堆内存的空间 意思就是访问的数组已经不再只想堆内存的数据,造成空指针异常
null值:空值,引用数据类型默认值,表示不知想任何有效对象
数组的常见操作
获取最大值
定义一个变量 用于保存最大值(或最小值)
取数组中第一个数据作为变量的初始值
于数组中剩余的个数逐个对比
int[] arr={1,2,3,4,5,6,7,8,9};
int max=arr[0];
for (int i = 0; i < arr.length; i++) {
if (max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
数组元素求和
需求:键盘录入的五个数据,并进行求和
Scanner sc=new Scanner(System.in);
System.out.println("请输入五个数");
int[] arr=new int[5];
int sum=0;
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
}
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
System.out.println(sum);
简化版:
Scanner sc=new Scanner(System.in);
System.out.println("请输入五个数");
int[] arr=new int[5];
int sum=0;
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
sum+=arr[i];
}
System.out.println(sum);
数组的基本查找
需求:一个数组array={1,2,3,4,5,6,7},键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找到索引
代码:
Scanner sc=new Scanner(System.in);;
System.out.println("请输入一个数据");
int[] arr={1,2,3,4,5,6,7};
int a = sc.nextInt();
//定义一个不存在的索引 默认为-1
int index=-1;
for (int i = 0; i < arr.length; i++) {
if (a==arr[i]){
index=i;
break;
}
}
System.out.println(index);
案例:
在比赛中,有五个评委给选手打分,分数为0-10的整数 选手总得分为,去掉最大值,去掉最小值,剩余三个评委的平均值
明天附答案
加油加油!!!