当前位置:

首页 > 编程开发 > Java数组正确的写法是什么

Java数组正确的写法是什么

索引:命名规则、自动类型推断、静态动态初始化、多维数组的其他写法、常见错误写法、数组下标越界、默认值问题、数组长度问题、数组内存解析正确写法:1.步骤分类:(以下int可以替换为charStringdouble等等)①一步写法:int[]ids=newint[]{1001,1002,1003};//声明+初始化intids[]=newint[]{1001,1002,1003};//[]位置有两种放法intids[]={1001,1002,1003};//自动类型推断,newint[]可省/********

本文目录

    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].......
    //都会报错

    报错案例: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循环:

    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 

    运行结果:

    Java数组正确的写法是什么

    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号位,是一个空格符,但是不是键盘上的空格

    验证如下:

    Java数组正确的写法是什么

    經典例題:

    Java数组正确的写法是什么

    解:b e可以,acdf都不行

    Java数组正确的写法是什么

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java
    相关文章 更多
    Java单元测试入门:使用JUnit 5编写第一个测试用例
    Java单元测试入门:使用JUnit 5编写第一个测试用例

    面向初学者的JUnit 5实用入门指南。从测试概念、Maven依赖配置,到手把手编写首个单元测试用例及断言验证,助你掌握Java单元测试的核心流程。

    Java变量未初始化报错解析:局部变量与成员变量默认值差异
    Java变量未初始化报错解析:局部变量与成员变量默认值差异

    深入解析Java中局部变量未初始化编译报错与成员变量自动赋予默认值的机制差异,涵盖JVM内存分配、编译期确定性赋值检查与实际排查修复方案。

    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat
    Java获取当前时间并格式化输出:DateTimeFormatter与SimpleDateFormat

    详细讲解在Java中获取当前系统时间并进行格式化输出的两种核心方案:基于Java 8全新日期时间API的DateTimeFormatter与传统遗留的SimpleDateFormat,包含完整代码示例、线程安全机制对比及生产选型建议。

    Java中final与static final常量的定义及初始化规则
    Java中final与static final常量的定义及初始化规则

    深入解析Java中final变量与static final常量的定义、内存语义、初始化时机及合法赋值路径,涵盖编译期常量优化与实战避坑指南。

    Java抽象方法与接口方法的区别及选型建议
    Java抽象方法与接口方法的区别及选型建议

    深入对比Java中抽象类抽象方法与接口方法的语法演进、设计意图及运行期差异,并提供清晰的架构选型决策流程与实战范例。

    Java实现HTTP请求与JSON解析的完整代码示例
    Java实现HTTP请求与JSON解析的完整代码示例

    本文提供Java标准库HttpClient发起HTTP GET/POST请求并结合Jackson进行JSON数据反序列化与序列化的完整代码示例与工程实践指南。

    Java递归出现StackOverflowError的原因分析及栈空间优化方案
    Java递归出现StackOverflowError的原因分析及栈空间优化方案

    详细分析Java递归调用出现StackOverflowError的原因,结合代码说明线程栈、栈帧和递归深度之间的关系,并介绍终止条件排查、迭代改写、减少栈帧开销以及通过-Xss调整JVM栈空间的方法。

    Java空指针异常(NPE)的代码排查与修复实例
    Java空指针异常(NPE)的代码排查与修复实例

    针对Java中常见的NullPointerException(NPE),本文从堆栈日志定位、典型代码触发场景、具体修复代码对比到防御体系进行系统讲解,提供实用且易上手的排查与修复方案。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。