记录下
原文链接如下: 尊重别人的劳动成果
https://blog.csdn.net/weixin_40926603/article/details/84970282
https://www.cnblogs.com/liunianfeiyu/p/7868779.html
想要了解新特性的实现方式,反编译一下即可-大部分是可以知道的
- 自动拆装箱
- Foreach
- 静态导入
- 可变参数 Var args
- 类型安全的枚举(Type safe enums)
- 格式化输出
- 泛型
- ProcessBuilder
- 内省
- 线程并发库(JUC)
- 监控和管理虚拟机
- 元数据
以下代码中的变量名是随意取得,不可模仿
一、自动拆装箱
-
自动拆装箱大大方便了基本类型数据和它们包装类的使用
- 自动装箱:基本类型自动转为包装类(int >> Integer)
- 自动拆箱:包装类自动转为基本类型(Integer >> int)
1.JKD5以前的处理方式:
//int 转换为 Integer int i = 66; Integer integer = new Integer(i); //Integer 转换为 int Integer integer1 = new Integer(66); int i1 = integer1.intValue();
2.JKD5现在的处理方式:
//int 转换为 Integer Integer integer = 10; //Integer 转换为 int int i = integer;
二、Foreach 增强for循环,新增一种循环语法
格式: for( : )
1.JKD5以前的处理方式:
for (int index = 0; index < list.size(); index++ ) {
String str = list.get(index);
System.out.println("str: " + str);
}
2.JKD5现在的处理方式:
for (String str : list){
System.out.println("str:" + str);
}
三、静态导入
要使用静态成员(方法和变量)我们给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名
1 import static java.lang.Math.*;
2 ...
3 r = sin(PI * 2);//无需再写 r = Math.sin(Math.PI * 2);
4 不过,过度使用这个特性也会一定程度上降低代码的可读性。
四、可变参数 Var args
当传入到方法的参数不固定时,就可以使用可变参数 格式:数据类型... 参数名
1.JKD5以前的处理方式:
在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效
2.JKD5现在的处理方式:
1 public void write(Object... objs) {
2 for(Object obj : pbjs) {
3 System.out.println(obj);
4 }
5 }
五、类型安全的枚举(Type safe enums)
关键字enum表示枚举类型,它的作用相当于类声明中的class关键字
- 注意事项:
- 不能含有public修饰的构造器,即构造器只能是private修饰,如果没有构造器编译器同样也会自动生成一个带private修饰无参默认构造器。
- 所有的枚举值默认都是public static final 修饰的;
- 枚举值与值之间用逗号分割,最后一个用分号,如果枚举值后面没有任何东西该分号可以省略
- 每一个枚举值就是一个枚举类型的实例
- 枚举类型中可以定义带任意修饰符的非枚举值变量
- 枚举值必须位于枚举类型的第一位置,即非枚举值必须位于枚举值之后
- 枚举类型自带两个方法,values() 和 value(String name) 两个方法
六、格式化输出
JDK5推出了printf-style格式字符串的解释器 java.util.Formatter 工具类,和C语言的printf()有些类似。
//创建对象时指定将结果输出到控制台
Formatter formatter = new Formatter(System.out);
formatter.format("x = %d , y = %s\n",1 , "test");
formatter.close();
六、泛型
七、ProcessBuilder
ProcessBuilder可以用来创建操作系统进程,它的每一个实例管理着Process集合,start()方法可以创建一个新的Process实例
八、内省
在类Person中有属性name、age和address。通过 getName/setName来访问name属性,getAge/setAge来访问age属性,getAddress/setAddress来访问address属性,这是我们默认遵循的规则。Java JDK中提供了一套 API用来访问某个属性的 getter/setter 方法,这就是内省
剩下的就不再赘述了,感兴趣的可以去原文链接查看
网友评论