虚拟机(9)语法糖

/**
 * 泛型 ,
 * 此示例包含泛型,自动装箱,自动拆箱,遍历循环,变长参数 5种语法糖
 */
public class Generics {

    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,2,3,4);
        int sum = 0;
        for (int i : list) {
            sum +=i;
        }
        System.out.println(sum);
    }

}

 

包装类的“ == ”运算在不遇到算术运算的情况下不会自动拆箱,以及他们equals()方法不处理数据转型的关系。

public class Generics1 {
    public static void main(String[] args) {
        Integer a =1;
        Integer b =2;
        Integer c =3;
        Integer d =3;
        Integer e =321;
        Integer f =321;
        Long g =3L;
        //这里c等于d是因为integer有缓冲,其缓冲范围在-128=127之间,
        // 所以在c和d都不是new出来的,他们复用了相同的取值空间,那么c和d自然相等
        System.out.println(c==d);
        //e和f=false,是因为他们的值超出了integer的缓冲范围,既然超过了缓冲范围,默认integer是new出来的,
        //所以2个变量都开辟了新的空间,就等于false
        System.out.println(e==f);
        //a和b相加,jvm拆箱,转成了int,int值对比自然相等
        System.out.println(c==(a+b));
        //integer的equals方法判断是否是integer,遇到了a和b结果是int,自动装箱成intger,然后再判断int值是否相等
        System.out.println(c.equals(a+b));
        //Long类型的cache缓冲是正的256,a和b相加结果是int,g拆箱成int判断的相等,类似g调用了intValue然后判断
        System.out.println(g==(a+b));
        //Long的equals先判断参数是否是Long类型,integer不是Loan类型,自然是false
        System.out.println(g.equals(a+b));
    }
}

除了泛型,自动装箱,自动拆箱,遍历循环,变长参数,条件编译之外,Java,还有其他语法糖,如内部类,枚举类,断言语句,switch对枚举和字符串的支持,try语句中定义个关闭资源。

转载于:https://my.oschina.net/u/3885275/blog/2966546

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值