1.增强的for循环,这点比较简单,就不举例了,但要注意:

增强的for循环与传统的for循环相比写起来更简洁,更容易理解,但是他也有一个缺点:他失去了数组或者集合的索引信  息,如果要对数组或集合里指定位置上的元素进行操作,建议使用传统的for循环,如果只是遍历集合或数组里面的每一个元素,建议采用增强型的for循环。

2.自动装箱与拆箱

举例:BoxTest.java

package com.shengsiyuan.jdk5;

import java.util.ArrayList;

import java.util.Collection;

public class BoxTest

{

public static void main(String[] args)

{

int a = 3;

Collection c = new ArrayList();

c.add(3);//将int类型的3转换为Integer类型并放到集合当中

c.add(a + 3);

for(Integer i : c)

{

System.out.println(i);

}

}

}

说明:自动装箱与拆箱常用于集合中,当往集合里面放入原生数据类型的时候,java会自动将其包装成该原生数据类型对应的包装类,这就叫装箱,反之叫拆箱。

另外需要特别说明的是:Integer类有一个缓存,它会缓存介于-128~127之间的整数。缓存是指第二次生成一个已经实例化好的实例时,Java会自动的去缓存里面寻找以前生成的实例并将该值给它,而不会再去new一个,所以之前生成和之后生成的是两个相同的实例。

举例:BoxTest2.java

package com.shengsiyuan.jdk5;

public class BoxTest2

{

public static void main(String[] args)

{

Integer i1 = 100;

Integer i2 = 100;

if(i1 == i2)

{

System.out.println("i1 == i2");

}

else

{

System.out.println("i1 != i2");

}

}

}

上面的程序执行结果为i1 == i2,但如果将2个数值改为200,则就是i1 != i2,原因就在于Integer类型的缓存机制。

备注:如果改为Integer i1 = new Integer(100) ;

Integer i2 = new Integer(100);

则i1!=i2,用构造方法先new一个,再new一个,肯定是两个不同的实例。

3.可变参数

可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。

可变参数必须要作为方法参数的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。

举例:TestVarargs.java

package com.shengsiyuan.jdk5;

public class TestVarargs

{

private static int sum(String str, int... nums)

{

System.out.println(str);

int sum = 0;

for (int num : nums)

{

sum += num;

}

return sum;

}

public static void main(String[] args)

{

int result = sum("a", new int[] { 1, 2 });

System.out.println(result);

result = sum("b", 1, 2, 3, 4);

System.out.println(result);

}

}

说明:int... nums中的...不能少,它就代表可变参数,可变参数代表可以往方法里面传入任意数量的参数,只要它是定义的类型即可。

java 张龙_张龙 JAVA5新特性学习笔记相关推荐

  1. jdk7新特性学习笔记

    jdk7新特性学习笔记 从网络down了视频看,记录下学过的东西. 1.二进制字面量 JDK7开始,可以用二进制来表示整数(byte,short,int和long),语法:在二进制数值前面加 0b或者 ...

  2. Java8新特性学习笔记

    Java8新特性学习笔记 文章目录 Java8新特性学习笔记 一.接口和日期处理 1.接口增强 1.1.JDK8以前 VS JDK8 1)接口定义: 1.2.默认方法(default) 1)默认方法格 ...

  3. JDK8新特性-学习笔记

    雀语笔记连接: https://www.yuque.com/g/u22538081/ghlpft/zcbyis/collaborator/join?token=pofOuJabmo9rgKvS# 邀请 ...

  4. java8新特性学习笔记(Lambda,stream(),filter(),collect(),map())

    文章目录 1.lambda表达式(重点) 1.需求分析 2.Lambda表达式初体验 3.Lambda的语法规则 3.1 Lambda练习1 3.1 Lambda练习2 4.Lambda表达式的原理 ...

  5. ES11新特性_私有属性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记061

    然后我们再来看es11的,私有属性去看看 可以看到我们这里去声明一个类,在类中,我们声明公有属性直接写就可以 对于私有属性需要在属性前加上#,然后我们写一个构造方法, 注意构造方法中对于私有属性的赋值 ...

  6. ES6新特性_ES6模块化介绍_优势_以及产品---JavaScript_ECMAScript_ES6-ES11新特性工作笔记041

    可以看到,模块化是从es6才开始提出的,以前只是社区中提出来的 关于模块化的,一些规范,一些编码的规范,后来才有了 es6的模块化. 以前基于社区提出来的一些模块化规范, 形成的产品有,比如依据Com ...

  7. java8新特性学习笔记之唠唠“匿名内部类与lambda”

    负一.知道啥是匿名内部类不? 要使用lambda,我觉得你至少得明白匿名内部类是个啥."o -> o.getName"是lambda表达式,"Book::getNa ...

  8. 阿瑶的ES6新特性学习笔记

    导语: 什么是 ECMA? ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个 组织的目标是评估.开发和认可电信和计 ...

  9. C++17新特性学习笔记

    c++17最新特性笔记 1.基本语言特性 ​ 这一部分介绍了 C++17中新的核心语言特性,但不包括那些专为泛型编程(即 template)设计的特性. 结构化绑定 结构化绑定允许你用一个对象的元素或 ...

最新文章

  1. android 更新 18个月,MIUI迎接史上最大更新:18个月内绝不卡顿,友商羡慕!
  2. 通过案例练习掌握SSH 的整合
  3. 集合论——二元关系的表示方法,特殊的二元关系及关系的运算
  4. 用Intersects方式联接地理数据,如何进行地理数据分析
  5. 【干货】深入B端SaaS产品设计核心理念
  6. java sl4j 日志_Java日志框架Slf4j+Log4j入门
  7. Linux编译安装 php soap模块
  8. [TCP/IP]TCP服务端accept发生在三次握手的哪一个阶段
  9. centos卸载内核_CentOS 中内核模块的加载和卸载
  10. 论文浅尝 - ACL2020 | 用于关系三元组抽取的级联二进制标记框架
  11. Shell通过过滤条件(比如IP)分类流量包,最后合并流量包
  12. 初级程序员面试经典题目(大串烧 含答案)
  13. 测试工程师常见的算法面试题
  14. matlab covar,Matlab功率谱估计
  15. 量子机器学习HHL算法总结图文
  16. 社科院与杜兰大学金融管理硕士项目——苦练基本功是通向成功的必经之路
  17. excel多工作表汇总如何完成?
  18. 未能将管道连接到虚拟机: 所有的管道范例都在使用中
  19. linux怎么查找文件名带有abc的文件,如何查找一个文件夹里的最新的文件
  20. C#语句1:选择语句一(if else )

热门文章

  1. Centos 7 搭建DNS正向解析和反向解析
  2. IP地址分类:静态/动态/公共/私有
  3. BGP、MPLS是怎么组合到一起的?
  4. 对象统计信息锁定的解决办法(ORA-20005/ORA-38029)
  5. 【Spark-core学习之九】 Spark案例
  6. 聊聊并发(七)——Java中的阻塞队列
  7. BP神经网络的Java实现(转载)
  8. redis cluster 集群 安装 配置 详解
  9. php使用strstr函数 ,判断字符串A中是否含有字符串B
  10. 这3句屁话,关键时刻能救命