Java数组的初始化大小_对Java接口实现的建议

Java数组的初始化大小_对Java接口实现的建议**二维数组:**元素是一维数组的数组。格式一:publicclassArrayDemo{publicstaticvoidmain(String[]args){//格式一int[][]arr=newint[3][2];System.out.println(arr);//[[I@1b6d3586System.out.println(arr[0]);//[I@4554617c

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1 一维数组初始化

public class ArrayDemo1 { 
   
    public static void main(String[] args) { 
   
        // 格式一(动态初始化)
        int[] arr1 = new int[3]; // 数组的长度(这里为3)必须指定
        
        // 格式二(静态初始化)
        int[] arr2 = new int[]{ 
   1, 2, 3}; // 这里数组长度不能指定,花括号里面的元素个数就是数组长度
        // 或者按照下面的简写形式
        int[] arr3 = { 
   1, 2, 3}; // 格式二的简写形式
    }
}

内存图分析略。

2 二维数组初始化

public class ArrayDemo2 { 
   
    public static void main(String[] args) { 
   
        // 格式一(动态初始化)
        /*int[][] arr = new int[3][2]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 0 System.out.println(arr[2][1]); // 0 System.out.println("------------------------"); arr[1][0] = 3; arr[2][1] = 4; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // [I@4554617c System.out.println(arr[1]); // [I@74a14482 System.out.println(arr[2]); // [I@1540e19d System.out.println(arr[1][0]); // 3 System.out.println(arr[2][1]); // 4*/

        // 格式二(动态初始化)
        /*int[][] arr = new int[3][]; System.out.println(arr); // [[I@1b6d3586 System.out.println(arr[0]); // null System.out.println(arr[1]); // null System.out.println(arr[2]); // null // 打印arr相同,都是地址;但是对于arr[0] arr[1] arr[2]结果都是null,因为列的维度没有指定,不知道如何分配内存。 // System.out.println(arr[0][0]); // NullPointerException System.out.println("------------------------"); // arr[1] = {1, 2, 3}; // 报错 arr[1] = new int[]{1, 2, 3}; arr[2] = new int[]{10, 20}; System.out.println(arr[0]); // null System.out.println(arr[1]); // [I@4554617c System.out.println(arr[2]); // [I@74a14482 System.out.println(arr[1][0]); // 1 System.out.println(arr[2][1]); // 20 // 总结:格式二需要new两次,并且Java中二维数组每行元素的个数可以不相同(和C/C++不同)。*/

        // 格式三(静态初始化)
        // int[][] arr = new int[][]{ 
   {1, 2, 3}, {4, 5}, {6}}; // 此时行、列维度都不能指定
        // int[][] arr = new int[2][]{ 
   {1, 2, 3}, {4, 5}}; // 报错
        // int[][] arr = new int[][3]{ 
   {1, 2, 3}, {4, 5}}; // 报错

        int[][] arr = { 
   { 
   1, 2, 3}, { 
   4, 5}, { 
   6}}; // 格式三的简化形式
        System.out.println(arr); // [[I@1b6d3586
        System.out.println(arr[0]); // [I@4554617c
        System.out.println(arr[1]); // [I@74a14482
        System.out.println(arr[2]); // [I@1540e19d
        System.out.println(arr[1][0]); // 4
        // System.out.println(arr[2][1]); // ArrayIndexOutOfBoundsException
    }
}

格式一内存图分析:

二维数组格式1

格式二内存图分析:

二维数组格式2

格式三内存图分析:

二维数组格式3

总结:数组初始化分为静态初始化动态初始化,一维数组和二维数组的静态初始化类似;对于动态初始化,一维数组只有一种形式,且必须指定数组的长度,二维数组有两种形式,且必须指定数组的行,列可以不用指定(这种情况要new两次)。


结束语:如果本篇博客对您有帮助,请点赞、收藏或关注,您的鼓励是博主进步的动力,感谢支持,共同进步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184301.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • n皇后问题 回溯法java_Java解决N皇后问题

    n皇后问题 回溯法java_Java解决N皇后问题问题描述:   要求在一个n×n的棋盘上放置n个皇后,使得它们彼此不受攻击。   按照国际象棋的规则,一个皇后可以攻击与之同一行或同一列或同一斜线上的任何棋子。   因此,n皇后问题等价于:要求在一个n×n的棋盘上放置n个皇后,使得任意两个皇后不在同一行或同一列或同一斜线上。一个皇后的攻击范围:                                    n皇后的解空间—完全n叉树…

    2022年9月30日
    2
  • rsyslog日志管理[通俗易懂]

    rsyslog日志管理[通俗易懂]文章目录简介基本维护核心概念实例配置客户端日志服务器输出日志到mysql简介rsyslog是一个快速的日志处理系统,具有卓越的性能和出色的安全性,采用模块化设计,他可以从各种数据源中接收输入、转换数据再将结果输出到指定的位置。他不仅适用于企业,也适用于小型系统。rsyslog是一个c/s架构,既可以作为日志客户端上报日志,也可以作为服务端接收日志rsyslog是模块化设计,因此很多功能需要…

    2022年9月24日
    2
  • global container line_ebs oracle

    global container line_ebs oraclePrometheusexporterforcustomeBPFmetrics.MotivationofthisexporteristoallowyoutowriteeBPFcodeandexportmetricsthatarenototherwiseaccessiblefromtheLinuxkernel.https://github.com/cloudflare/ebpf_exporter

    2022年9月15日
    4
  • MATLAB三维绘图[通俗易懂]

    MATLAB三维绘图[通俗易懂]绘制三维图像一、plot3函数x=0:pi/50:10*pi;sin=sin(x);cos=cos(x);plot3(sin,cos,x);title(‘helix’),text(0,0,0,’origin’);xlabel(‘sin(x)’),ylabel(‘cos(x)’),zlabel(‘x’)二、mesh函数x=0:0.15:2*pi;…

    2025年8月18日
    4
  • SLAM技术课程总结「建议收藏」

    SLAM技术课程总结「建议收藏」这学期SLAM技术课程遇到最多的问题,或者说困难更合适,其实和学生无关。专业培养方案中,SLAM技术是双语课程,但此课对数学要求极高,通常应用型本科院校学生的数学基础并不具备直接学习此课程的条件; 操作环境要求学生需在Linux系统下完成,虽然现在有云端实践平台,但掌握基本的Linux命令依然是必不可少的基础,对于机器人工程专业学生而言,课程体系忽略了这块训练,使此课孤立于课程体系中,无法和现有培养方案的其他课程形成良性互动; 编程要求C++11,当然能够掌握14以上更好,而之前的课程多侧重于C和

    2022年10月1日
    3
  • linux内核编译详解[通俗易懂]

    linux内核编译详解[通俗易懂]前言Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果…

    2022年7月23日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号