Java 中的语法糖(7/15整个周六上午总结)
语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。
Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是
泛型定义java的泛型只在源代码存在,只供编辑器检查使用,编译后的字节码文件已擦除了泛型类型(类型T不确定)
将上面的代码的字节码反编译后:
- public static void main(String args[])
- {
- List stringList = new ArrayList();
- stringList.add("oliver");
- System.out.println((String)stringList.get(0));
- }
自动拆箱/装箱
再探拆箱装箱:
- public static void main(String[] args){
- Integer i = 100;
- //System.out.println(i.intValue());//100,将对象拆箱成基本数据类型
- Integer i1 = 2255;
- Integer i2 = 2255;
- System.out.println(i1==i2); //false 不是从缓冲池里面拿的
- System.out.println(i1.equals(i2));//内容肯定是相同的
- Integer g1 =10;
- Integer g2 =10;
- System.out.println(g1==g2); //true
- System.out.println(g1.equals(g2));//true
//Interger只在某个特定范围才是从缓存拿来的
- //而String类型的不论什么,都是缓存的
- Boolean b1 = false;
- Boolean b2 = false;
- System.out.println(b1==b2); //true
- System.out.println(b1.equals(b2));//true
- String s1= "abc";
- String s2 ="abc";
- System.out.println(s1==s1); //true
- System.out.println(s1.equals(s2));//true
- System.out.println("is equals?"+new String("abc").equals(new String("abc")));//true
- System.out.println("is equals?"+new String("abc")==(new String("abc"))); //false
/**- * 针对String作为一个基本类型来使用:
- 1。如果String作为一个基本类型来使用,那么我们视此String对象是String缓冲池所拥有的。
- 2。如果String作为一个基本类型来使用,并且此时String缓冲池内不存在与其指定值相同的String对象,那么此时虚拟机将为此创建新的String对象,并存放在String缓冲池内。
- 3。如果String作为一个基本类型来使用,并且此时String缓冲池内存在与其指定值相同的String对象,那么此时虚拟机将不为此创建新的String对象,而直接返回已存在的String对象的引用。
- */
- }
Java 可变长参数
- public static void main(String[] args) {
- System.out.println(add(2, 3)); //
- System.out.println(add(2, 3, 5));//
- }
- static int add(int x, int ...args) {
- int sum = x;
- for (int i = 0; i < args.length; i++) {
- sum += args[i];
- }
- return sum;
- }
- public static void main(String[] args) {
- print();
- print("hello");
- print("hello","lisi");
- print("hello","张三", "alexia");
- /**
- * hello
- hello lisi
- hello 张三 alexia
- */
- System.out.println("加"+add()); // 0.0
- System.out.println("加"+add(1.0+2.3)); //3.3
- System.out.println("加"+add(1.0+2.2+0.1));//3.3
- }
//用户传入若干个double型数字,然后进行相加- static double add(double ...args){
- double sum= 0 ;
- for(double i :args)
- sum+=i;
- return sum;
- }
- //在具有可变长参数的方法中可以把参数当成数组使用,例如可以循环输出所有的参数值。
- static void print(String... args){
- String str = "";
- for(String temp:args)
- str = str+" "+temp;
- // System.out.println(temp);
- System.out.println(str);
- }
- //适用于参数个数不确定,类型确定的情况
- 可变参数的特点:
- (1)、只能出现在参数列表的最后;
- (2)、...位于变量类型和变量名之间,前后有无空格都可以;
- (3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。
- }
枚举类型:见下一篇
Java 中的语法糖(7/15整个周六上午总结)的更多相关文章
- Java 中的语法糖
百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...
- [转]谈谈Java中的语法糖
*该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...
- JVM(二):Java中的语法糖
JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...
- 浅析java中的语法糖
概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...
- 【Java基础】Java中的语法糖
目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...
- Java中的语法糖
一.范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...
- Java 中的语法糖,真甜。
我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱 ...
- Java初认识--Java中的语法结构
Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...
- 看看C# 6.0中那些语法糖都干了些什么(终结篇)
终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...
随机推荐
- 雷林鹏分享:C# 不安全代码
C# 不安全代码 当一个代码块使用 unsafe 修饰符标记时,C# 允许在函数中使用指针变量.不安全代码或非托管代码是指使用了指针变量的代码块. 指针变量 指针 是值为另一个变量的地址的变量,即,内 ...
- HBase基于region数目和data locality来balance regions
1. 在Hbase的运维过程中,我们经常需要做如下操作: 移动 regionserver 到其他的 regionserver group中 下线一台机器 增加一台机器 移动 table 到其他 re ...
- Mac XMind8 保存时报错
错误提示 截图 日志 查看错误日志的方式:打开xmind –> 关于xmind –> 安装细节 –> 选项卡 “配置” –> 查看错误日志 看到有Caused by: org. ...
- WinForm下的TabControl控件
一.TabControl控件介绍 TabControl实现的具体效果: 在实际工作中,我是这么用TabControl控件,实现切换页面效果.比如要实现某个界面进行操作,然后还要查看一下日志,就可以使用 ...
- Ybquery项目部署idea
家庭公计网的引用
- Vysor_v1.6.9
---恢复内容开始--- 装系统 D:\home sys 触摸板驱动 1 D:\envs\common\jdk jdk安装 2 DriveTheLife 3 img 4 PCMaster 5 Sogo ...
- IntentService的用法,对比Service它会按顺序执行,不会像Service一样并发执行。
package com.lixu.intentservice; import android.app.Activity; import android.content.Intent; import a ...
- constexpr和常量表达式的注意事项
1.常量表达式,是指其值不可改变,且在编译阶段就已经得出计算结果的表达式,例如字面值就是常量表达式. 2.判断是否是常量表达式,要关注数据类型是否是const类型,初始值是否是在编译阶段就得到的. 3 ...
- Ant里面神奇的fork
最近两天一直在处理ant运行java程序的一个问题,用IDE直接运行类里面的main函数一切正常,但用ant跑该函数就报错误,错误的原因是运行ant任务时调用的是AntClasloader,而IDE里 ...
- mysql 的 java 连接库
mysql 的 java 连接库 解压缩mysql-connector-java-5.1.30.zip 将要使用的是mysql-connector-java-5.1.30-bin-g.jar和mysq ...