java语法糖效率高吗_打包 Java将持续向“高糖”方向发展,你真的了解Java语法糖吗? _好机友...
Java语法糖概念
1. 语法糖Syntactic Sugar 糖衣语法,方便开发人员使用,JVM并不识别,会在编译阶段解语法糖,还原为基础语法。
2. com.sun.tools.javac.main.JavaCompiler中的deSugar方法,负责解语法糖的实现。
3. 常见的语法糖有泛型、变长参数、条件编译、自动拆装箱、内部类等。
具体实现
1. switch从1.7支持String和enum类型。
首先对编译器,switch关键字只能使用整型,如byte、char、short、int等。
字符串的switch是通过equals()和hashCode()方法来实现的。
2. 泛型
jvm中没有泛型,只有普通类型和普通方法,泛型类的类型参数,在编译时都会被擦除。泛型并没有自己独特的Class类型。
类型擦除:如果泛型参数指定了上限,如,移除所有类型参数,替换为顶级的父类型,如果没指定则使用Object。
3. 自动装箱、拆箱
装箱使用包装器的valueOf方法,拆箱使用包装器的xxxValue方法。
byte、short、char、int、long、float、double、boolean => Byte、Short、Character、Integer、Long、Fload、Double、Boolean等。
int i = 10;
Integer n = i;自动装箱,反编译class后,Integer.valueof(i)
int j = n;自动拆箱,反编译class后,使用n.intValue()方法
Integer -128 ~127之间有缓存。
4. 可变参数
String... strs,反编译后String[] strs,调用时创建String[]数组,传入方法。
5. 枚举类型
enum 创建具名值的有限集合。
创建一个enum类型,底层public class MyEnum extend Enum
6. 内部类
编译时的概念,编译后生成两个不同的.class文件。Outer.class和Outer$Inner.class
7. 数值字面量
整数、浮点数,都允许在数字之间插入任意多个下划线。编译阶段会去掉。
8. for-each
for-each底层使用普通的for循环和迭代器
9. lambda表达式
lambda的实现,依赖了底层lambda的api。编译阶段糖解,将lambda表达式转换为调用内部api的方式。LambdaMetafactory#metafactory
注意点
1. Iterato在工作的时候是不允许被迭代的对象被改变的。会抛出ConcurrentModificationException异常,可以使用Iterator本身的remove方法。
2. ListItr与Ltr操作expectedModCount避免异常。
使用int cursor;下标索引
int nextIndex;和Node next;下标
java语法糖效率高吗_打包 Java将持续向“高糖”方向发展,你真的了解Java语法糖吗? _好机友...相关推荐
- 计算机专业毕业设计—JAVA语言系统设计(共80套打包)
JAVA SMART系统-系统框架设计与开发(源代码+论文).rar java Smart系统-题库及试卷管理模块的设计与开发(源代码+论文) java Smart系统-题库及试卷管理模块的设计与开发 ...
- 台达伺服电机选型手册_机械加工工艺师手册_打包下载
如何[设为星标★],优先推送资料信息? Ta们都在看咱们:机械大佬群 注意及时保存和下载,资料若失效请拉到本页底部留言,我们将不定时补发! ...
- java开发中遇到的问题及解决方法(持续更新)
java开发中遇到的问题及解决方法(持续更新) 参考文章: (1)java开发中遇到的问题及解决方法(持续更新) (2)https://www.cnblogs.com/LiuYanYGZ/p/6112 ...
- python真的超过java了吗-Python 的开发效率真的比 Java高吗?
我觉得Python与任何带有"大型"二字的程序,都是相斥的,甚至"中型"都很难触及.只适合用于"小型"项目,且最好无需维护,用完即丢.否则我 ...
- python比java难吗-Python 的开发效率真的比 Java高吗?
我觉得Python与任何带有"大型"二字的程序,都是相斥的,甚至"中型"都很难触及.只适合用于"小型"项目,且最好无需维护,用完即丢.否则我 ...
- 知乎高赞!python能做这么多自动化,可开发效率真的有Java高?
python可以用来干嘛? 可以用来处理海量的Excel表格数据并进行数据分析 可以用来收集想要的信息并进行数据分析 数据挖掘并为项目提供数据支持 我已经,把数据库移到了一台淘汰下来的办公电脑上,又用 ...
- php 开发 比 java 快_PHP 比 Java 的开发效率高在哪?
做了几年PHP,最近在转Java,已经用Java做了半个互联网项目的人强答一下. 个人认为,PHP开发效率高主要是因为弱类型特性和自带强力函数库的原因. Java有太多的条条框框,对于我这种刚学的人来 ...
- python开发效率怎样_Python 的开发效率真的比 Java高吗?
真的比Java高很高. 几个例子. 爬虫领域,几年前就用Scrapy抓百度,新浪,股吧等各种东西. 五分钟写好一个小爬虫,爽到暴有没有?当年我就是靠教人写爬虫...才骗到小妹妹跟我约会的. 文本处理, ...
- python和土木工程_Python 的开发效率真的比 Java高吗?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 作者:暗灭 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 真的比Java高很高. 几个例子. 爬虫领域,几年前就用Sc ...
- ros开发语言python效率_Python 的开发效率真的比 Java高吗?
看看大佬的思考吧 Quora是国外知名的问答社区,性质与知乎类似.它的创始人Adam D'Angelo曾是Facebook的员工,众所周知,Facebook大量地使用了PHP,而Adam在开发Quor ...
最新文章
- 【 MATLAB 】 WLLS algorithm Simulation of TOA - Based Positioning
- Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
- 假笨说-协助美团kafka团队定位到的一个JVM Crash问题
- ESP8266的一个小问题
- JAVA入门[22]—thymeleaf
- QuorumPeerMain数量可否和HRegionServer节点数量不一致?
- python关系图谱_文本分析之制作网络关系图
- javascript练习----复选框全选,全不选,反选
- 苹果芯片团队又遭挖人,重量级芯片设计师被微软挖走
- SAP License:SAP电话面试
- STVD ERROR:misplaced local declaration
- 【Prufer Sequence +简单排列组合】bzoj 1005: [HNOI2008]明明的烦恼
- Windows 10 Java安装教程
- 空间机器人建模与仿真报告
- 通信电子线路高如云pdf_通信电子线路 第三版 教学课件 高如云 封面及目录.pdf...
- Opencvchina网站:把证件照蓝色背景转为白色
- 灵活就业人员压力好大,不知道该不该继续交社保?
- win10用户和计算机,对于电脑工作者们,更喜欢用win7还是win10呢?
- MaxEnt运行报错的各种问题及解决方法
- 安卓手机小说阅读器_百万小说阅读器app免费版下载-百万小说阅读器app手机版下载v1.4...
热门文章
- 大数据学习笔记35:Hive - 内部表与外部表
- 2017.10.27 sue的小球 失败总结
- win7为什么打开桌面上的计算机很卡很慢,Win7系统运行不流畅卡半天才进入桌面的六种解决方法...
- 【英语学习】【医学】无机化学 - 化合物命名(1) - 离子化合物
- Pentium II Pentium III架构/微架构/流水线 (4) - P6详解 - 高速缓存/Store Buffers
- 《深入理解计算机系统》CSAPP
- Windows下openssl的下载安装和使用
- 在未来人类在计算机行业中扮演什么角色,刘慈欣:未来人类可能生活在计算机里...
- object-c 混编 调用C,C++接口
- UE3 虚幻编辑器控制台命令