首页后端开发其他后端知识Java数组命名规则是什么,多维数组怎么写

Java数组命名规则是什么,多维数组怎么写

时间2024-03-28 08:56:02发布访客分类其他后端知识浏览1143
导读:这篇文章给大家分享的是“Java数组命名规则是什么,多维数组怎么写”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Java数组命名规则是什么,多维数组怎么写”吧。...
这篇文章给大家分享的是“Java数组命名规则是什么,多维数组怎么写”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“Java数组命名规则是什么,多维数组怎么写”吧。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于数组的相关问题,包括了命名规则、自动类型推断、静态动态初始化、多维数组的其他写法、常见错误写法等等内容,下面一起来看一下,希望对大家有帮助。

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

正确写法:

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

int [] ids = new int []{
1001,1002,1003}
    ;
// 声明+初始化

int ids [] = new int []{
1001,1002,1003}
    ;
 // [ ]位置有两种放法


int ids [] = {
1001,1002,1003}
    ;
//自动类型推断,new 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.状态分类:静态动态必须二选一,给长度不加{ } ,给{ } 不加长度

①静态初始化:

两个[ ]均为空
String [] name = new String [] {
"张三","李四"}
     ;

//也可写为String [] name = {
"张三","李四"}
    ;

②动态初始化:

后面的[ ]必须带数字规定长度,并且不能{
}
    赋值

String [ ] name ;
    
name = new String [2] ;
    
//可以合为一步写String name [] = new String [2];
    

/**********错误示范****错误示范****错误示范********/
int ids [3][4] = XXXXXXXXX;
    
int ids [3][ ] = XXXXXXXXX;
    
int ids [ ][4] = XXXXXXXXX;
    

多维数组

int arr1 [][] =XXXXXXXXXXX;
    
int [] arr2 []=XXXXXXXXXXX;
    
int [][] arr3 =XXXXXXXXXXX;

//都是正确写法
Java主张 int [] arr = new int []{
}
    ;
     写法



//多维数组同理
int [] arr[][] =XXXXXXXX;
    
int [][] arr[] =XXXXXXXX;

随便瞎基8放都是正确的
Java主张 int [][] arr = new int [][]{
}
    ;
写法

不过我个人不习惯。。。
int arr0 [][] = {
{
1,2}
,{
3,4}
,{
5,6}
}
    ;
    //正确:静态、自动类型推断
int arr1 [][] = new int [3][2];
    
int arr2 [][] = new int [3][ ];
    //正确:动态、可省列数[]
int arr3 [][][] = new int [3][ ][ ];
//正确:动态、可省后两个[]

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

int arr0 [][] = new int [2][2];
//动态初始化,分配内存
//数组内的4个成员全部默认为0,编译运行都不会报错


int arr0 [][] = new int [][]{
 {
1,2}
,{
3}
 }
    ;
    
//静态初始化,编译能通过,arr0[1][1]没有默认值(未分配空间)
//编译能通过,运行到arr[1][1]会报错



int arr0[][] = new int [3][] ;
    
// 输出arr0[3][0]  arr0[3][1]  arr0[3][2]  arr0[3][3].......
//都会报错

报错案例:

数组下标越界: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

常见错误写法

① 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循环:

public class Test2 {

	public static void main(String args[]) {

	int arr[][] = {
 {
1,2,3}
,{
4,5,6,7}
,{
8,9}
,{
10}
}
    ;
    
		
		for(int i = 0 ;
     i arr.length ;
 i++){
    //arr.length
			for(int j = 0 ;
     jarr[i].length ;
j++){
    //arr[i].length
				System.out.println(arr[i][j]+"    ");

				}
    
                        System.out.println();
		
}
    
		//System.out.println(arr[2][2]);
报错下标越界
                }

}
    

运行结果:

arr.length是第一维度长度

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

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

数组内存解析:

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

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

例1:

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

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

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

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

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

例2:

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

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

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

例3:

float arr1[][] = new float  [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号位,是一个空格符,但是不是键盘上的空格

验证如下:

經典例題:

解:b e可以,acdf都不行


感谢各位的阅读,以上就是“Java数组命名规则是什么,多维数组怎么写”的内容了,通过以上内容的阐述,相信大家对Java数组命名规则是什么,多维数组怎么写已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java数组命名规则是什么,多维数组怎么写
本文地址: https://pptw.com/jishu/654833.html
Bootstrap中的data属性有什么用,常用的有哪些 Java线程安全是什么,线程加锁与线程不安全是什么原因

游客 回复需填写必要信息