Java学习的第九天(JavaSE基础05_数组)
程序员文章站
2024-02-01 08:15:46
...
一、数组
1.什么是变量??
1.定义:变量是在内存中开辟了一小块空间用来临时存储“一个”数据用的
2.变量在内存中是分布凌乱的
3.变量没有默认值
package com.shuzu;
public class Demo1_MoRenZhi {
public static void main(String[] args) {
int a;
System.out.println(a);
}
}
//运行结果:Error:(6, 28) java: 可能尚未初始化变量a
2.数组为什么会存在?它来自何方?(跟变量进行区分)
3.什么是数组??
1.定义:数组是内存中开辟了一块“连续”的空间用于临时存储“多个同种数据类型”的数据用的
2.它是存在默认值的
2.3.整数类型的默认值都是0
2.4.小数类型的默认值是0.0
public class Demo1_MoRenZhi {
public static void main(String[] args) {
float[] arr=new float[3];
System.out.println(arr[0]);
}
}
//运行结果:0.0
2.5.字符类型的默认值是空字节
public class Demo1_MoRenZhi {
public static void main(String[] args) {
char[] arr=new char[3];
System.out.println(arr[0]); //
}
}
//运行结果:空
2.6.String类型的默认值是null
//运行结果:null
4.如何定义数组??
1.动态声明(分为两步)
第一步:数据类型[ ] 数组名; //在内存中开辟了一个数组
第二步:数组名=new 数据类型[长度]; //给数组赋予一个长度
int[] arr;
arr=new int[3];
//两者合二为一:int[] arr=new int[3];
2.静态声明
数据类型[ ] 数组名=new 数据类型[ ]{值1,值2,...}
int[] arr=new int[]{1,2.3,4};
上述可以缩写,这是开发中最常用的写法,如下所示
数据类型[ ] 数组名={值1,值2,...}
int[] arr={1,2.3,4};
3.拓展:数组的另外的两种写法
int arr[]=new int[3];
int []arr=new int[3];
5.如何往数组中存值??
通过数组名[下标]
arr[0]=60;
arr[1]=70;
6.如何从数组中取值??
通过数组名[下标]
System.out.println(arr[0]);
7.数组的下标(角标/索引)
1.数组只要赋予了长度,那么数组就会有下标(角标/索引)
2.程序中下标都是从0开始
3.数组存放数据和取数据都是通过下标来进行的
数组下标:0|1|2|3|4|5|6|7|8
存数据:arr[0]=10; 取数据: int a=arr[0]
8.在数组中最容易出现的两种异常和错误
ArrayIndexOutOfBoundsException:下标越界异常
public class Demo_ArrayIndexOutofBounds {
public static void main(String[] args) {
int[] arr=new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
System.out.println(arr[3]);//这里只有三个元素,下标从0-2,而下标到3就会报下标越界异常
}
}
//输出结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at com.shuzu.Demo_ArrayIndexOutofBounds.main(Demo_ArrayIndexOutofBounds.java:9)
NullPointerException:空指针异常
public class Demo_NullPointerExecption {
public static void main(String[] args) {
int[] arr=new int[3];
int[] arr1=null;
arr=arr1;
System.out.println(arr[0]);
System.out.println(arr[2]);
System.out.println(arr[3]);
}
}
//输出结果:
Exception in thread "main" java.lang.NullPointerException
at com.shuzu.Demo_NullPointerExecption.main(Demo_NullPointerExecption.java:8)
9.为什么会出现空指针异常??
9.1 Java内存分布图
9.2 输出数组名实际输出的内容是什么??
public class Demo_DiZhi {
public static void main(String[] args) {
int[] arr={1,2,3,4,5,6,7};
System.out.println(arr);
}
}
//输出结果:[aaa@qq.com地址值
9.3 动态定义数组时,存储在堆内存还是栈内存中??
10.如何获取数组的长度
String[] arr={"张三,李四,王五"}; //这个数组的长度是多少?? 1
String[] arr={"张三","李四","王五"}; //这个数组的长度是多少?? 3
如何获取数组的长度---数组名.length
arr.length
11.数组的第一个元素arr[0]
12.数组的最后一个元素arr[arr.length-1]
13.感受如下数组的定义
double[] arr={1.1 ,1.2 ,1.3 ,1.4 ,5}; //因为double比int要大,所以会自动转换,这里不会报错
int[] arr={1 , 2 , 3 , 4 ,(int) 5.5}; //这里必须用到强转才可以
14.如何获取数组中的每一个元素
重复做一件事情--循环数组/遍历数组(获取数组的长度去遍历数组)
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
15.二维数组
由于实际企业中开发一般不会使用数组,多用集合,所以不做过多讲解
int[] [] arr=new arr[长度][长度]; //第一个长度值必须要写,第二个长度可给值也可以不给值
最后:下一节中小编会对数组涉及的一些常用的算法进行讲解!!
上一篇: Promise.all 并发限制