java数组的数组,java基本数据类型与数组笔记总结
这篇文章给大家带来了一些关于java的知识,主要介绍了一些关于数组的相关问题,包括命名规则、自动类型推断、静态和动态初始化、多维数组的其他写法、常见的错误写法等。下面我们就来看看,希望对你有所帮助。
如何解决写爬虫IP受阻的问题?立即使用。
索引:命名规则、自动类型推断、静态和动态初始化、多维数组的其他写法、常见的错误写法、数组下标越界、默认值问题、数组长度问题、数组内存解析。
正确写法:
1.步骤分类:(下面的int可以用char String double等替换。)一步写作:
int [] ids=new int []{1001,1002,1003 };//声明初始化
int ids []=new int []{1001,1002,1003 };//[]有两种摆放位置的方法
int ids []={1001,1002,1003 };//自动类型推断,新的int []可以保存
/* * * * * * * * *错误演示* * *错误演示* * *错误演示* * * * * * * * * * * * *
int ids []=new [] int{1001,1002,1003 };//只有定义时的[]可以篡改自动类型推断:只适用于一步编写,可以省略=右边的new int []。
两步写作法:
int ids[];//声明
ids=new int [ ] {1001,1002,1003 };//初始化
/* * * * * * * * *错误演示* * *错误演示* * *错误演示* * * * * * * * * * * * *
int ids[];
ids []=new int {1001,1002,1003 };//分两步,左边不要加[]。
int ids[];
ids={1001,1002,1003 };//分两步,没有类型推断2.状态分类:静态动态必须二选一,给长度不加{},给{}不加长度
010-5900静态初始化:
两个[]都是空的。
String [] name=new String [] { 张三,李四 };
//也可以写成String [] name={ 张三,李四 };动态初始化:
以下[]必须具有带数字的指定长度,并且不能赋值{}。
String [ ]名称;
name=新字符串[2];
//String name []=new String [2]可以一步写完;
/* * * * * * * * *错误演示* * * *错误演示* * * * * * * * * *
int ids[3][4]=XXXXXXXXX;
int ids[3][]=XXXXXXXXX;
int ids[][4]=XXXXXXXXX;
多维数组
int arr 1[][]=XXXXXXXXXXX;
int[]arr 2[]=XXXXXXXXXXX;
int[][]arr 3=XXXXXXXXXXX;
//都写对了。
Java崇尚int[]arr=new int[]{ };写作方法
//多维数组是一样的
int[]arr[][]=XXXXXXXX;
int[][]arr[]=XXXXXXXX;
放出来就好了。
声称Java int[][]arr=new int[][]{ };写作方法
但是我不习惯。int arr0 [][]={{1,2},{3,4},{5,6 } };//正确:静态和自动类型推断
int arr 1[][]=new int[3][2];
int arr 2[][]=new int[3][];//正确:动态,可以保存的列数[]
int arr 3[][][]=new int[3][][];//正确:动态,保存最后两位[]。
int arr 0[][]=new int[2][2];//动态初始化和分配内存。
//数组中四个成员默认都是0,编译运行时不会报错。
int arr0 [][]=new int [][]{ {1,2},{ 3 } };
//静态初始化,编译可以通过,arr0[1][1]没有默认值(未分配空间)
//编译可以通过,运行到arr[1][1]时会报错
int arr 0[][]=new int[3][];
//输出arr 0[3][0]arr 0[3][1]arr 0[3][2]arr 0[3][3].
//将报告错误和错误案例:
默认值问题:动态[i][j]有默认值,静态{}没有默认值(末尾详解)ARR [1] [1]在静态初始化期间没有给定值,因此没有分配内存空间。编译可以通过,但访问时会报告错误。此静态初始化的数组范围限于arr[0][0] arr[0][1]到arr[1][0]
深入内存理解:(末尾详解)
字符串cod [][]=新字符串[3][];//只定义了行,列数未知
system . out . println(cod[1][1]);//没有定义列,也没有给出默认值。运行错误
正确写法:添加一步COD [1]=新字符串[2 \ 3 \ 4.];给定默认值null,分配列内存
常见错误写法
数组下标越界: int [ ] arr1 = new int [ ] ;
//静态忘带{}
int [3] arr2 = new int [3] ; //前面[ ]必须空
数组一旦确定(声明+初始化),长度就固定了,不能更改
数组的内存分配是连续的,系统要为数组分配一个固定的空间。如果将来有100个空格被其他内容占用,数组只能使用前99个空格。如果长度可以改变,那么arr[100]会改变其他内容造成bug。
一个例子说明数组长度问题:
2D数组遍历,两层for循环:
公共类Test2 {
公共静态void main(String args[]) {
int arr[][]={ {1,2,3},{4,5,6,7},{8,9},{ 10 } };
for(int I=0;长度;I){//数组长度
for(int j=0;贾尔[我]。长度;j ){//arr[i]。长度
system . out . println(arr[I][j] );
}
system . out . println();
}
//system . out . println(arr[2][2]);错误的下标越界
}
}运行结果:
Arr.length是第一维的长度。
Arr[i]。长度是第I行中第二维的长度。
Arr[i][j]。长度是第I行第j列第三维的长度。
数组内存解析:
以二维数组为例。它分为内层和外层。比如arr[0] arr[1]的形状是外层,arr[1][2]的完整表达式是内层。
1.对于外部arr[1]来说,是一维数组,分为“初始化”和“未初始化”两种情况:
示例1:
int arr 1[][]=new int[3][];
system . out . println(arr 1[1]);
//运行结果:null此时只知道外层的行数,内层没有初始化,也没有分配地址,所以结果为null。
int arr 1[][]=new int[3][5];//任意给定数量的列
system . out . println(arr 1[1]);
//运行结果:[I@15db9742此时内层长度确定,初始化完成,arr1[1]指向第一个地址[I@15db9742
a [arr[1]的内层是一维数组,I是int的第一个字母,@后面是地址。
示例2:
String arr1[][]=新字符串[3][5];
system . out . println(arr 1);
//运行结果:[[ljava . lang . string;@15db9742因为字符串数组是完全定义的,所以空间是分配的。arr1指向arr1[0][0]的地址(整个数组的第一个地址)
two[[表示有一个二维数组,Java . lang . string;这是一个包名。
示例3:
float arr1[][]=新的float[3][5];
system . out . println(arr 1[0]);
//结果:[F@15db9742 int [ ] arr3 = new int [5] {1,2,3,4,5} ; //动态不能带{ }
外层元素初始化值为:地址值
内层元素初始化值为:与一维数组初始化情况相同
1.数组元素是一维数组初始化:。
2.数组元素是整形int long short : 0
3.数组元素是浮点型float double : 0.0
4.数组元素是boolean型:false
5.数组元素是引用类型 : nullchar型 :。
0,而不是字符0,对应于不同的ASCII码。
“u0000”是Unicode代码的第0000位。是空格字符,但不是键盘上的空格。
验证如下:
经典例子:
解决方案:b e可以,acdf不行。
推荐:《java视频教程》以上是Java归纳总结的数组讲解的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。