微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在java中,为什么新的运算符在数据类型之前没有用来分配内存?

如果我们需要new运算符来为对象分配内存,那么为什么我们不使用它
在数据类型之前分配内存?
class-name class-var =  new class-name();
new int a;

解决方法

>因为 James Gosling这么说….(或 Bjarne Stroustrup说的那样).实际上,这主要是语言设计的问题,而不是技术法则.
> javac隐藏了这些语义,并执行所谓的装箱/拆箱(并自动完成).这些类型可以作为值或“对象”(通常使用堆实现)存在.当上下文需要对象引用时,javac会发出一个Box指令,将int值移动到对象包装器(int – > Integer)并传递引用值.许多低级JVM操作码是为处理标量值而构建的,因为它们是为处理引用值(或仅引用)而构建的.

一个主要的例子是将int存储到集合中.它被装箱了.

但最后,问问为什么语言在语法上的作用就像问艺术家为什么要画一幅画.只是因为.语言是通过心血来潮和情绪来设计的,但在Java的情况下,new的语法是从C继承的,所以突发奇想可能是Bjarne Stroustrup’s.还要考虑Scala也是一种JVM语言,但它对于一些常见的想法却有着截然不同的语法.

关键在于编译器编写者明天可以决定“新Java”将成为一种新语言,在所有类型之前的所有大写字母中都需要NEW.无论如何,它都可以在不影响语言语义的情况下实现.

当然,选择背后有完善的设计和一致性,但选择仍然只是选择.在这种情况下,选择清楚地表明int是基本类型,而new只返回对象,而不是基元.所以这是一个很好的语法选择.

原文地址:https://www.jb51.cc/java/128956.html

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

相关推荐