当前位置:首页 > 每日看点 > 正文内容

java不支持值类型struct,带来了哪些优势?

卡卷网12个月前 (01-12)每日看点189

说实话,最开始我也觉得这是个设计缺陷。毕竟C++、C#都支持struct,为啥Java偏要特立独行? 直到有一天我突然开窍...

简单统一才是王道

想象一下,如果你在厨房做菜,有十种不同形状的铲子,每个都有特定用途。听起来很专业对吧?但实际上99%的时候,一个标准铲子就能搞定所有事情。

Java正是秉承了这种理念 —— Everything is an Object(除了基本类型)。不用再纠结用struct还是class,不用考虑值类型和引用类型的区别,所有的复杂类型都是对象。这种简单统一的设计思想,让代码更容易理解和维护。

一直有的一个疑惑:性能真的会差吗?

没有struct到底会不会影响性能? 实际上JVM的逃逸分析和标量替换优化可以智能地将对象优化成栈上分配,现在的内存访问已经非常快,另外对象池等设计模式可以很好地解决频繁创建对象的问题

就像现在的手机CPU和内存都这么强了,你还会在意微信多用了1MB内存吗?

带来的优势:面向对象更纯粹

记得大学刚学编程时,Java课的老师跟我们说:"编程范式就像武功招式,你可以学很多种,但要成为大师,得专精一门。"

Java取消struct,某种程度上迫使我们更多地思考面向对象的设计。当你不能用struct简单封装数据时,自然会思考更多关于对象职责、封装、继承这些面向对象的核心概念。

举个栗子:

// 如果有struct struct Point { int x; int y; } // 没有struct时你会更多思考面向对象的设计 class Point { private int x; private int y; public void moveTo(int x, int y) { // 可以加入边界检查等业务逻辑 this.x = x; this.y = y; } }

软件开发中有个真理:唯一不变的就是变化。今天你用struct封装的简单数据结构,明天可能就需要添加行为和状态管理。

java不支持值类型struct,带来了哪些优势?  第1张

Java的设计鼓励你一开始就用面向对象的方式思考,这样未来扩展时就不会遇到重构的烦恼。


写在最后

所以说,Java不支持struct看似是个限制,实际上是一种很有远见的设计选择。有时候看似的不足,恰恰成就了一个技术的伟大。

克制不是缺陷,专注才会专业。

如果觉得文章有帮助,欢迎点赞+关注, 我是旷野,探索无尽技术!

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/8974.html

分享给朋友:

相关文章

有哪些好用不火的软件?

有哪些好用不火的软件?

20个无敌冷门的小众APP,好用到内存爆了都不想卸载,个个是宝藏!特别是第4、13、19个,大多数人都没玩过~喜欢可以双击屏幕取走哦~1、【毒汤日历 】 – 你的每日快乐源泉[iPhone/Android]好用指数:⭐⭐⭐⭐⭐下载地址:各...

我爸讽刺我,写个破代码一年才十几万,他在工地带50个人,让我回去跟他干,写代码没出路,我该怎么选择?

我跟你一样的情况,本人现身说法,千万不要跟你爸干,我就是反面教材,现在想回去都回不去了,快十年没写代码了,再就是岁数大了,38岁了,35岁以上的码农根本就没公司愿意要,而且会受歧视。工程不好干,首先就是不合法,在法律层面,根本就没有包工头的...

网易云音乐上看到过最触动的热评是什么?

网易云音乐上看到过最触动的热评是什么?

1.“昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾,正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。”希望你永远不会听懂这句话,永远都不要懂。——网易云热评《关键词》2.小时候跟着父亲去城里卖西瓜,害怕同学会看到我,就...

荣耀magic 7 首发的应该都收到货了,感觉怎么样?

8号入手magic7,跟mate40pro比。优点:1、电池真耐用,充电块,华为电池也是新换的但是明显荣耀耐用;2、系统明显快多了,mate40pro下半年开始卡的不行,实在受不了了。3、声音、震动效果提升明显,指纹反应灵敏很多。 缺点:1...

腾讯云为何在云服务市场败给了阿里云?

IDC领域,2010年以前,万网、新网互联、新网,三家公司瓜分天下,其中万网市场份额最高,排名第一。当时,万网的域名是http://www.net.cn,通过该域名就可以判断万网的地位。2010年阿里云成立,直接收购了万网,大量用户直接流向...

如何看待 Luv Letter 表示影视飓风专业性实在是让人失望?

一点儿新进展,另外以下有部分需要关注对于统一变量的问题。这个我在对比上面有写小字解释,我在一开始使用ffmpeg来控制变量。但是发现了不少问题,比如因为遗留bug,会强制将非整数帧的素材转码为VFR导致无法正确帧间对比,因此不考虑,同时尽量...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。