语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。
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整个周六上午总结)的更多相关文章

  1. Java 中的语法糖

    百度百科对语法糖的定义 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这 ...

  2. [转]谈谈Java中的语法糖

    *该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...

  3. JVM(二):Java中的语法糖

    JVM(二):Java中的语法糖 上文讲到在语义分析中会对Java中的语法糖进行解糖操作,因此本文就主要讲述一下Java中有哪些语法糖,每个语法糖在解糖过后的原始代码,以及这些语法糖背后的逻辑. 语法 ...

  4. 浅析java中的语法糖

    概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...

  5. 【Java基础】Java中的语法糖

    目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...

  6. Java中的语法糖

    一.范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类 ...

  7. Java 中的语法糖,真甜。

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱 ...

  8. Java初认识--Java中的语法结构

    Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...

  9. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

随机推荐

  1. 雷林鹏分享:C# 事件(Event)

    C# 事件(Event) 事件(Event) 基本上说是一个用户操作,如按键.点击.鼠标移动等等,或者是一些出现,如系统生成的通知.应用程序需要在事件发生时响应事件.例如,中断.事件是用于进程间通信. ...

  2. 4-2 什么是WebSocket; Action Cable的使用。Rails guide-6.3视频教学,没有看!

    WebSocket WebSocket是一种在单个TCP连接上进行全双工通讯的协议.WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范.WebSock ...

  3. 3-4 8精彩算法集合。struct(C,ruby) Ruyb类对象和结构体, 3-5

    在本章我遇到了c语言的struct数据,即自定义的数据结构.比如: struct edge { int u; int v; int w; }; 题目给了一组数据,用edge储存.需要按照w大小排序.我 ...

  4. 关于"架构"

    杨光辉说,在构架系统的早期可能不会更多地考虑架构,主要是在做技术选型,首先是编程语言的选择.对于编程语言选择,当前主流编程语言有很多,有面向对象语言.传统式语言等.做这个选择主要根据人员知识储备,包括 ...

  5. Eclipse修改已存在的SVN地址

    1.Window---->Show View---->Other...

  6. OC 构造方法(对象初始化)

    一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返 ...

  7. mkfs.ext3 option

    mkfs.ext3 OPTIONS -b block-size Specify  the  size  of blocks in bytes.  Valid block-size values are ...

  8. Response.ContentType都有哪些?

    Response.ContentType 名称 类型ai application/postscriptaif audio/x-aiffaifc audio/x-aiffaiff audio/x-aif ...

  9. superset 安装配置

    一.配置python虚拟环境,请参考 superset依赖python3.6环境 https://www.cnblogs.com/xibuhaohao/p/9994854.html 二.安装配置sup ...

  10. Win10玩游戏时听歌音量忽大忽小

    问题原因是你的声卡被识别成了5.1声道,解决方法: 1.右键桌面右下角小喇叭选择“声音” 2.右键当前的播放设备选择“配置扬声器” 3.选择“立体声”,可以测试一下,然后点击下一步退出,可能会中断当前 ...