语法糖定义指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会;但是这种语法对语言的功能并没有影响。
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. ArcGIS API for Silverlight/WPF 2.1学习笔记(一)——精简版

    一.安装 1.Visual Studio: (1)Visual Studio 2010或Visual Web Developer Express 2010 (2)Silverlight 4 Tools ...

  2. 20170503xlVBA房地产数据分类连接

    Sub NextSeven_CodeFrame4() Application.ScreenUpdating = False Application.DisplayAlerts = False Appl ...

  3. Buy Low Sell High CodeForces - 867E (思维,贪心)

    大意: 第i天可以花$a_i$元买入或卖出一股或者什么也不干, 初始没钱, 求i天后最大收益 考虑贪心, 对于第$x$股, 如果$x$之前有比它便宜的, 就在之前的那一天买, 直接将$x$卖掉. 并不 ...

  4. mysql timestamp的默认值

    当default 0,default '0000-00-00 00:00:00'都失效的时候,请尝试下 ALTER table `coupon_gift` add column `time_end` ...

  5. UVA-1220 Party at Hali-Bula (树的最大独立集)

    题目大意:数的最大独立集问题.特殊在要求回答答案是否唯一. 题目分析:定义状态dp(i,1),dp(i,0)分别表示以i为根节点的子树选不选i最多可选的人数,f(i,1),f(i,0)分别表示以i为根 ...

  6. oracle11g在没DNS情况下failover的配置方法

    1.Oracle 11g引入scan ip ,可在没有DNS的情况下,客户端连接RAC配置failover时,很多情况还是使用oracle10g方式.即在客户端tnsname.ora中配置failov ...

  7. kill prefix meta,milli,kilo input

    1● meta 超过,改变   2● milli 1/1000   3● kilo 1000      

  8. Grep console 设置

    Grep console     DEBUG 9961B8 INFO 4B5E76 WARN 8A8A00 ERROR 9F6B00 8A7674      

  9. POJ 3308 Paratroopers 最大流,乘积化和 难度:2

    Paratroopers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7267   Accepted: 2194 Desc ...

  10. bzoj2014

    题解: 按照单价排序 然后贪心 代码: #include<bits/stdc++.h> using namespace std; ; typedef long long ll; ll an ...