Java数组正确的写法是什么(java,编程语言)

时间:2024-05-02 19:38:31 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

Java数组正确的写法是什么

索引:命名规则、自动类型推断、静态动态初始化、多维数组的其他写法、常见错误写法、数组下标越界、默认值问题、数组长度问题、数组内存解析

正确写法:

1.步骤分类:(以下int可以替换为char String double等等)
①一步写法:

int[]ids=newint[]{1001,1002,1003};//声明+初始化intids[]=newint[]{1001,1002,1003};//[]位置有两种放法intids[]={1001,1002,1003};//自动类型推断,newint[]可省/**********错误示范***错误示范***错误示范***错误示范************/intids[]=new[]int{1001,1002,1003};//只有定义时的[]可以乱动

自动类型推断:仅在一步写法中适用,可以省略=右边的new int [ ]

②两步写法:

intids[];//声明ids=newint[]{1001,1002,1003};//初始化/**********错误示范***错误示范***错误示范***错误示范************/intids[];ids[]=newint{1001,1002,1003};//分两步时,左边不加[]intids[];ids={1001,1002,1003};//分两步时,没有类型推断

2.状态分类:静态动态必须二选一,给长度不加{},给{}不加长度

①静态初始化:

两个[]均为空String[]name=newString[]{"张三","李四"};//也可写为String[]name={"张三","李四"};

②动态初始化:

后面的[]必须带数字规定长度,并且不能{}赋值String[]name;name=newString[2];//可以合为一步写Stringname[]=newString[2];/**********错误示范****错误示范****错误示范********/intids[3][4]=XXXXXXXXX;intids[3][]=XXXXXXXXX;intids[][4]=XXXXXXXXX;

多维数组

intarr1[][]=XXXXXXXXXXX;int[]arr2[]=XXXXXXXXXXX;int[][]arr3=XXXXXXXXXXX;//都是正确写法Java主张int[]arr=newint[]{};写法//多维数组同理int[]arr[][]=XXXXXXXX;int[][]arr[]=XXXXXXXX;随便瞎基8放都是正确的Java主张int[][]arr=newint[][]{};写法不过我个人不习惯。。。
intarr0[][]={{1,2},{3,4},{5,6}};//正确:静态、自动类型推断intarr1[][]=newint[3][2];intarr2[][]=newint[3][];//正确:动态、可省列数[]intarr3[][][]=newint[3][][];//正确:动态、可省后两个[]

默认值问题:动态[i][j]有默认值,静态{}没有默认值(末尾详解)

intarr0[][]=newint[2][2];//动态初始化,分配内存//数组内的4个成员全部默认为0,编译运行都不会报错intarr0[][]=newint[][]{{1,2},{3}};//静态初始化,编译能通过,arr0[1][1]没有默认值(未分配空间)//编译能通过,运行到arr[1][1]会报错intarr0[][]=newint[3][];//输出arr0[3][0]arr0[3][1]arr0[3][2]arr0[3][3].......//都会报错

报错案例:Java数组正确的写法是什么

数组下标越界:arr[1][1]在静态初始化的时候没有给值,所以没有分配内存空间,编译能通过,但是访问的时候会报错。该静态初始化的数组范围仅限于arr[0][0] arr[0][1] 到arr[1][0]

深入内存理解:(末尾详解)

String cod [][] = new String [3][ ];//只定义了行,列数未知
System.out.println(cod[1][1]);//未定义列,不给默认值。运行报错

正确写法:加一步 cod[1]=new String [2\3\4....];分配列内存,给定默认值null

Java数组正确的写法是什么

常见错误写法

① int [ ] arr1 = new int [ ] ; //静态忘带{}

② int [3] arr2 = new int [3] ; //前面[ ]必须空

③ int [ ] arr3 = new int [5] {1,2,3,4,5} ; //动态不能带{ }

数组一旦确定(声明+初始化),长度就固定了,不能更改

数组的内存分配是连续的,系统要为数组分配一个固定的空间,如果100个空间以后被其他内容占用内存,那么数组就只能用到前99个空间,如果长度可以改变,那么arr[100]就会更改其他内容产生bug

一个例子说明数组长度问题:

二维数组遍历,两层for循环:

publicclassTest2{ publicstaticvoidmain(Stringargs[]){ intarr[][]={{1,2,3},{4,5,6,7},{8,9},{10}}; for(inti=0;i<arr.length;i++){//arr.length for(intj=0;j<arr[i].length;j++){//arr[i].length System.out.println(arr[i][j]+""); }System.out.println(); } //System.out.println(arr[2][2]);报错下标越界}}

运行结果:

Java数组正确的写法是什么

arr.length是第一维度长度

arr[i].length是第i行的第二维度长度

arr[i][j].length是第i行j列的第三维度的长度

数组内存解析:

以二维数组为例,分为内层和外层。形如arr[0] arr[1]的是外层,完整表达arr[1][2]的是内层

一、对于一个外层arr[1]来说,它就是一个一维数组,就会分为“初始化”和“未初始化”的两种情况:

例1:

intarr1[][]=newint[3][];System.out.println(arr1[1]);//运行结果:null

此时只知道外层行数,但内层没有初始化,没有分配地址,故结果为null

intarr1[][]=newint[3][5];//任意给定列数System.out.println(arr1[1]);//运行结果:[I@15db9742

此时内层长度确定,初始化完成,arr1[1]指向一个首地址[I@15db9742

一个 [ 表示arr[1]的内层为一维数组,I是int的首字母,@后面是地址

例2:

Stringarr1[][]=newString[3][5];System.out.println(arr1);//运行结果:[[Ljava.lang.String;@15db9742

因为完整定义了String数组,故分配了空间,arr1指向arr1[0][0]的地址(整个数组的首地址)

两个[[表示里面有二维数组,java.lang.String;是包名

例3:

floatarr1[][]=newfloat[3][5];System.out.println(arr1[0]);//结果:[F@15db9742

外层元素初始化值为:地址值

内层元素初始化值为:与一维数组初始化情况相同

一维数组初始化:

1.数组元素是整形int long short : 0

2.数组元素是浮点型float double : 0.0

3.数组元素是boolean型:false

4.数组元素是引用类型 : null

5.数组元素是char型 :0 或 '\u0000' 而非‘0’

数字0,而不是字符0,对应的ASCII码不一样

'\u0000'是Unicode码第0000号位,是一个空格符,但是不是键盘上的空格

验证如下:

Java数组正确的写法是什么

經典例題:

Java数组正确的写法是什么

解:b e可以,acdf都不行

Java数组正确的写法是什么

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java数组正确的写法是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Spring Security的相关配置方法及功能实现下一篇:

13 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18