文章目录
- 数组概述
- 为什么需要数组?
- 什么是数组?
- 数组的定义
- 数组的定义格式一:
- 数组的定义格式二
- 数组的定义格式三:
- 数组的访问
- 通过数组的索引访问数组的元素
- 例1:创建并遍历倒序输出数组
- 数组初始化
- 例2:
- 输出数组
- 例三
- 数组异常
- 数组索引越界
- 空指针异常
- 例3:写一个方法,对某数组进行排序。
- Arrays工具类
- 数组排序,并转成字符串
- 注
数组概述
为什么需要数组?
为了存储多个数剧
什么是数组?
数组是用来存储同一种数据类型多个元素的容器。 数据类型:可以是基本类型,也可以是引用类型 容器:比如教室、衣柜、纸箱等,可以存放多个事物.
数组的定义
数组的定义格式一:
数据类型[ ] 数组名 = new 数据类型[长度] |
定义格式详解: |
数组的定义格式二
数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3...} |
优点:定义时元素是确定的,避免内存空间的浪费
数组的定义格式三:
数据类型[ ] 数组名 = {元素1, 元素2, 元素3…}; |
格式三是格式二的变形,简化了代码。
数组的访问
通过数组的索引访问数组的元素
索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量
第一个元素的偏移量为0,所以数组的索引从0开始
格式:数组名[索引 ] |
例1:创建并遍历倒序输出数组
创建一个长度为5的数组,遍历改数组并输出里面的内容。
注:arr.length为arr这个数组的长度
public class Arr {
public static void main (String[] args){
int[] arr = new int[7];
for(int i = 0;i < 5;i++){
arr[i] = i;
}
// System.out.println(arr.length);
for(int j = arr.length;j > 0;j--){
System.out.println(arr[j-1]);
}
}
}
结论:
1:数组的最大索引为数组长度-1
2:数组中未手动赋值的元素,有默认值0
3:直接输出数组变量名,得到的是数组的内存地址值
数组初始化
在内存中为数组开辟连续空间并为每个元素赋值的过程
- 内存:计算机的重要组件,用于程序运行中临时存储数据。
- 连续空间:数组元素在内存空间中的存放位置是连续的。
动态初始化: |
数据类型[ ] 数组名 = new 数据类型[长度] |
静态初始化: 给出初始化值,由系统决定数组长度 |
数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3...} 数据类型[ ] 数组名 = {元素1, 元素2, 元素3…}; |
例2:
这里arr1先开辟了一份空间,arr2 = arr1说明arr2直接使用了arr1的内存空间,即他俩同享一个内存,下面改变arr2的值,arr1的值肯定也就随着一起变。
public class demo {
public static void main(String[] args) {
//需求: 一个数组两个引用的内存图解
//定义arr1数组
int[] arr1 = new int[3];
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println("-----------------");
//定义arr2数组
int[] arr2 = arr1; //意思是说: 数组arr2和数组arr1共享同一份堆内存空间(大白话解释: 操作的是同一个数组)
arr2[2] = 33;
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr1[2]);
System.out.println(arr2[2]);
}
}
输出数组
两种方法,一种是用下标,第二种是for each循环
例三
public class Test2 {
public static void main(String[] args) {
int[] a = {1,5,7,3,6,0};
// 直接通过下标访问
for (int j =0;j<a.length;j++)
System.out.print(a[j]);
System.out.println("-----------------");
// for each循环访问
for (int i : a)
System.out.print(i);
}
}
数组异常
数组索引越界
如果arr数组只有三个数,你如果想打印arr[3]他肯定就越界异常了,因为只有arr[0]、arr[1]、arr[2]这三个空间存的三个数。
public class demo {
public static void main(String[] args) {
int[] arr1 = new int[3];
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
System.out.println(arr1[3]);
}
}
空指针异常
这个数为空时,会报错,空指针异常。
例3:写一个方法,对某数组进行排序。
public class bulu {
public static void main(String[] args) {
double[] arr = {2, 5,0, 7, 8, 3,11};
double[] arr1 = bulubulu(arr);
for (int i = 0;i< arr1.length;i++)
System.out.println(arr1[i]);
}
public static double[] bulubulu(double[] arr){
int n = arr.length;
for (int i = 0;i < n;i++){
for (int j = 0;j < n-1-i;j++){
if(arr[j] > arr[j+1]) {
double temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
}
这里使用了冒泡排序,bulubulu方法最后返回的是一个array数组。
不懂冒泡的朋友可以看看这个文章。
Arrays工具类
数组排序,并转成字符串
import java.util.Arrays;
public class Test2 {
public static void main(String[] args) {
int[] a = {1,5,7,3,6,0};
// 排序
Arrays.sort(a);
// 转换为字符串
System.out.println(Arrays.toString(a));
}
}
[0, 1, 3, 5, 6, 7]
当然,这个工具库有很多功能,具体使用时可以百度。
注
根据B站Java入门/黑马Java零基础Java在线教程最新Java编程而写,并有所改编,如有侵犯请联系。
一直在做比赛(用的python),java就没怎么学,但专业课是java,python不考啊啊啊啊啊
罢了,会一门语言再学其他的就简单多了,方法之前的比较简单,就不写了,为了不挂科,后面的内容肯定会慢慢补充的。
当然还有老师布置的一些题目(在我看来比较难!!!)与大家一起分享,共同进步。
欢迎大家关注点赞!!!