一维数组的使用
①一维数组的声明和使用
一维数组的声明方式:
typevar [] 或type [] var;
例如:
inta[];
int[]a1;
doubleb[];
String[]c;//引用类型变量数组
Java语言中声明数组时不能指定其长度(数组中元素的数),例如:inta[5];//非法
//动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
int[]arr= newint[3];
arr[0] = 3;
arr[1] = 9;
arr[2] =8;
Stringnames[];
names=newString[3];
names[0]=“钱学森”;
names[1]=“邓稼先”;
names[2]= “袁隆平”;
//静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
int arr[]= newint[]{ 3, 9, 8};或
int[]arr= {3,9,8};
String names[] = {"李四光","茅以升","华罗庚"}
②如何调用数组指定位置的元素
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:数组名[数组元素下标]
数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
数组元素下标从0开始;长度为n的数组合法下标取值范围:0—>n-1;
如inta[]=newint[3];可引用的数组元素为a[0]、a[1]、a[2]
每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度(元素个数)
数组一旦初始化,其长度是不可变的
③如何获取数组的长度
④如何遍历数组
⑤数组元素的默认初始值
-
>数组元素是整型:0
-
> 数组元素是浮点型:0.0
-
> 数组元素是char型:0或'\u0000',而非'0'
-
> 数组元素是boolean型:false
-
> 数组元素是引用数据类型:null(注意与0不同!)
⑥数组的内存解析
①到④说明
public class ArrayTest {
public static void main(String[] args) {
//1. 一维数组的声明和初始化
int num;//声明
num = 10;//初始化 = 赋值
int id = 1001;//声明 + 初始化 和上面两行相同
//静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[] ids;//声明 在这里[]表明数组 int表明元素类型
ids = new int[]{1001,1002,1003,1004};//数组之间的不同元素用逗号隔开
//动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
//静态初始化和动态初始化的相同点:左边都先声明数组,右边都对数组进行了初始化(赋值)。
//静态初始化和动态初始化的区别:静态初始化都指明了元素是什么,动态初始化并没有指明元素是什么。
//以下为错误的写法:
// int[] arr1 = new int[];
// int[5] arr2 = new int[5];
// int[] arr3 = new int[3]{1,2,3};
//也是正确的写法:
int[] arr4 = {1,2,3,4,5};//类型推断
//总结:数组一旦初始化完成,我们就知晓其长度,长度就确定了。
//2.如何调用数组的指定位置的元素:通过角标(索引、下标)的方式调用。
//数组的角标(或索引)从0开始的,到数组的长度-1结束。
names[0] = "小明";//从0开始
names[1] = "小王";
names[2] = "小李";
names[3] = "老王";
names[4] = "小白";
//names[5] = "周扬";会报错,无法运行,所以应该在数组的长度-1结束。
//3.如何获取数组的长度。
//属性:length
System.out.println(names.length);//5
System.out.println(ids.length);//4
//4.如何遍历数组
//方法一
/*System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);*/
//方法二
for(int i = 0;i < names.length;i++){//用i来表示索引
System.out.println(names[i]);
}
}
}
⑤数组元素的默认初始值
-
>数组元素是整型:0
-
> 数组元素是浮点型:0.0
-
> 数组元素是char型:0或'\u0000',而非'0'
-
> 数组元素是boolean型:false
-
> 数组元素是引用数据类型:null(注意与0不同!)
public class ArrayTest {
public static void main(String[] args) {
//5.数组元素的默认初始化值
int[] arr = new int[4];
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}//输出的都是0,虽然没有给他们定义,但其实系统内存空间在数组造出来时就已经自动赋值为0
System.out.println("**********");//分隔符
short[] arr1 = new short[4];//前后的数据类型要一致
for(int i = 0;i < arr1.length;i++){
System.out.println(arr1[i]);
}
System.out.println("**********");//分隔符
float[] arr2 = new float[5];
for(int i = 0;i < arr2.length;i++){
System.out.println(arr2[i]);
}
System.out.println("**********");//分隔符
char[] arr3 = new char[4];
for(int i = 0;i < arr3.length;i++){
System.out.println("----" + arr3[i] + "****");//输出为---- ****表明为空格
}
if(arr3[0] == 0){//此处是为了检验char输出的是否为0
System.out.println("你好!");
}
System.out.println("**********");//分隔符
boolean[] arr4 = new boolean[5];
System.out.println(arr4[0]);//输出的是null 意思是空值
System.out.println("**********");//分隔符
String[] arr5 = new String[5];
System.out.println(arr5[0]);
if(arr5[0] == null){//此处是验证boolean输出的是否为null
System.out.println("北京天气不错!");
}
}
}
⑥数组的内存解析
内存的简化结构
一维数组的内存解析
此处有点小瑕疵,但是不影响大体。(此处的张学友和刘德华应该处于常量池中,而不应该处于堆中。)
来源:CSDN
作者:qq_45766098
链接:https://blog.csdn.net/qq_45766098/article/details/104213409