在Java中,我在网上发现了一些教程,当涉及到数组时,它们的教学方式不同

例1:

使用“new”关键字创建数组对象,然后为其指定值.

int[] values;

values = new int[5];

values [0] = 10;

values [1] = 20;

values [2] = 30;

values [3] = 40;

values [4] = 50;

System.out.println (values[2]); //Output : 30

例2:

使用花括号为数组赋值.

int[] values = {34,45,62,72}

System.out.println (values [2]); //Output : 62

这两个例子有什么区别?

解决方法:

区别仅在于源代码方面.

使用花括号进行数组初始化的特殊语法只不过是syntactic sugar.含义:编译器允许您使用更简洁的方式表达某些内容.但是你无法用其他风格做的第二种风格.

因为,最后,在运行时,会创建数组并分配其插槽.

它实际上只是为了让您更容易编写更容易为人类读者理解的源代码!

嗯,当然有一件事:花括号解决方案使你无法提供“不够”的值.当您分离数组创建和插槽初始化时,可能会以某种方式使第二步失误(例如,忘记初始化先前创建的数组的最后一个元素).

并且只是为了确定:这是你在编译成.class然后使用javap -c进行反汇编后会看到的:

示例1代码:

0: iconst_5

1: newarray int

3: astore_1

4: aload_1

5: iconst_0

6: bipush 10

7: iastore

和例2:

0: iconst_4

1: newarray int

3: dup

4: iconst_0

5: bipush 34

7: iastore

如您所见:字节代码指令完全相同(减去您推入数组的不同值)

标签:java,arrays

来源: https://codeday.me/bug/20190627/1307420.html

java创建对象后花括号_java – 创建数组对象和使用花括号分配数组有什么区别?...相关推荐

  1. java 调用父类的变量_java创建子类对象设置并调用父类的变量操作

    通过子类调用父类的变量,有两种方法: 1.把父类的变量设置成public: package triangle.opengl.wlz.stu.childusefathervariable; import ...

  2. JS数组对象去重,ES6最简数组去重

    JS数组对象去重,ES6最简数组去重 // 测试数据 // 比如我们处理 value 的去重 var arrList = [{key: 1, value: "aaa"},{key: ...

  3. js实现查看一个数组对象中是否包含另一个数组对象中的值

    //两个数组对象中查看 其中一个数组对象是否包含另一个数组对象中的值let arr = [{key:1,val:"张胜男"},{key:2,val:"王五"}, ...

  4. java向后兼容吗_Java向后不兼容历史的观察

    java向后兼容吗 在大多数情况下,Java是一个非常向后兼容的编程语言. 这样做的好处是,与大规模破坏兼容性相比,大型系统通常可以相对轻松的方式升级为使用Java的较新版本. 这样做的主要缺点是Ja ...

  5. java建立类的思想_JAVA类和对象创建

    面向对象 学习目标: 理解面向对象的编程思想 理解类与对象的关系 如何创建类与对象 方法重载 一:什么是面向对象编程(OOP) 面向对象编程(Object Oriented Programming,O ...

  6. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!

    在面向对象的编程语言中,类和对象必然是最核心的特性之一.本文主要介绍Java中的类和对象. 示例 以班级成员为例,班上有小红.小明.小李,还有王老师.张老师和魏老师,我们认为他们都属于"人类 ...

  7. 在java中等等什么意思_java中的对象 方法 引用 等一些抽象的概念是什么意思呢?...

    2020-03-14 最近这一段时间有点忙,好久都没有更新博客了,之后我会一直坚持下去的,和大家一同进步的. 这段时间一直在学java,相信刚开始学习java的小白,刚开始接触那么些抽象的概念一定和我 ...

  8. android两个数组对象去重合并,js 两个数组(对象)去重合并

    项目前台代码中需要用到数组的去重操作,其实也不难,就算是对象数组,判断下对应的属性值也是可以实现的,但是如果我实现的话肯定是最常见的双重for循环,加个flag标记,老套的不能行了,想了想,还是上网找 ...

  9. java睡眠后继续执行_Java高级编程基础:如何使用线程的休眠,中断和连接

    线程休眠和中断 我们知道了在编程过程中创建线程,并启动以后,线程会交由操作系统来管理调度执行一个我们指定的计算任务. 如果没有其它异常情况出现的话,它会持续运行直到我们实现的run()方法执行完毕为止 ...

最新文章

  1. 奔四的技术人,内心都有哪些波澜?
  2. PMCAFF微课堂 | 前YY产品总监深度揭秘P2P运营推广精髓
  3. 说说我最近比较迷的Criminal Minds
  4. 再会迪杰斯特拉(Dijkstra)
  5. Linux服务之httpd基本配置详解
  6. AutoLayout屏幕适配
  7. [BZOJ3772]精神污染
  8. Bailian2743 字符串判等【字符串】
  9. 植物大战僵尸Scratch
  10. 使用免费软件Emu8086学习汇编
  11. 关于VS2008 SP1和 VS2010备忘
  12. 大批量数据导出到Excel的实现
  13. 学生用计算机如何解方程,学生党必备神器!一键解方程计算器App
  14. 注册gitLab时报错There was an error with the reCAPTCHA. Please solve the reCAPTCHA again.
  15. 身份认证协议攻击怎么解决
  16. 多态练习题(通过UML建模语言来实现饲养员喂养动物)
  17. 从粗放到精细,能量采集技术如何赋能农业智慧升级?
  18. vue——VM对象和基础指令
  19. Requested setting INSTALLED_APPS, but settings are not configured. You must either define the env...
  20. C语言学习 查询水果价格

热门文章

  1. 【数字识别】基于matlab BP神经网络不同字体0-9数字识别【含Matlab源码 1863期】
  2. 专门解决 PCB 冲孔的十大瑕疵
  3. 360兼容模式下 对象不支持“attachEvent”属性
  4. php tp5 爬取淘宝/天猫店铺的信息
  5. 由于手机中的时间不对,导致的https网络连接失败
  6. 多目标规划以及Matlab实现
  7. iOS新闻客户端开发教程7-新闻列表
  8. debug: 反汇编debug流程(kernel、smaps、addr2line)
  9. 如何卸载centos图形界面,并且可以开机直接进入文本界面
  10. The request is badly formed