java基础--高薪技术--JDK1.5新特性
来源:互联网 发布:龙腾刷枪软件下载 编辑:程序博客网 时间:2024/05/05 05:32
一、JDK1.5新特性
1.JDK1.5
(1)装箱和拆箱
A.自动装箱
Integer num = 12; //就是自动把int类型的12 转为Integer类型
B.自动拆箱
System.out.println(num + 10);
C.基本数据类型的对象缓存
Integer num1 = 12;Integer num2 = 12;这块相等,<=127都是真的System.out.println(num1 == num2);Integer num3 = 129; 这块不相等,因为是对象Integer num4 = 129;System.out.println(num3 == num4);Integer num5 = Integer.valueOf(12);Integer num6 = Integer.valueOf(12) ; 这块的道理同上System.out.println(num5 == num6);
(2)泛型
A.概述
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中非法输入,编译器编译带类型说明的集合时会去掉“类型”信息,使程序运行效率不受影响
B.格式
<数据类型>
注意:该数据类型只能是引用类型
C.好处
D.泛型的前世今生a.把运行时期的问题提前到了编译期间
b.避免了强制类型转换
c.优化了程序设计,解决了黄色警告线问题,让程序更安全
a.泛型的由来
Object类型作为任意类型的时候,在向下转型的时候,会隐含一个转型问题
b.泛型类
/* * 泛型类:把泛型定义在类上 */public class ObjectTool<T> {private T obj;public T getObj() {return obj;}public void setObj(T obj) {this.obj = obj;}}c.泛型方法
/* * 泛型方法:把泛型定义在方法上 */public class ObjectTool {public <T> void show(T t) {System.out.println(t);}}d.泛型接口
/* * 泛型接口:把泛型定义在接口上 */public interface Inter<T> {public abstract void show(T t);}e.泛型高级通配符
?:任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E:向下限定,E及其子类
? super E:向上限定,E极其父类
E.我们在哪里使用呢?(3)增强for一般是在集合中使用
A.语法for(type 变量名:集合变量名){...}
B.注意事项
a.迭代变量必须在()中定义
b.集合变量可以是数组或者实现了Iterable接口的集合类
C.举例
public static int add(int x,int ...args) {int sum = x;for(int arg:args) {sum += arg;}return sum;}(4)静态导入
A.import语句可以导入一个类或某个包中的所有类
B.import static 语句导入一个类中的某个静态方法或所有静态方法
C.语句举例
import static java.lang.Math.sqrt;import static java.lang.Math.*;
(5)可变参数A .特点a.只能出现在参数列表的最后;b. ...位于变量类型和变量名之间,前后有无空格都可以
c.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体重以数组的形式访问可变参数B.例子
public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(add(1,2,3,5));System.out.println(add(2,3,5));}public static int add(int x,int ...args) {int sum = x;for(int i=0;i<args.length;i++) {sum += args[i];}return sum;}(6)枚举
A.概述
是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有七天,一年只有12个月。
一个类有限个数的实例,才能使枚举类
B.格式
public enum 枚举类名{
枚举项1,枚举项2...;
}
C.注意
a.枚举类可以有构造器,但必须是private的,她默认的也是private的
b.枚举类也可以有抽象方法,但是枚举项必须重写该方法
D.常用方法
int compareTo(E o)
String name()
int ordinal()
String toString()
<T> T valueOf(Class<T> type.String name)
values() 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
E.例子
/* * 通过JDK5提供的枚举来做枚举类 */public enum Direction3 {FRONT("前") {@Overridepublic void show() {System.out.println("前");}},BEHIND("后") {@Overridepublic void show() {System.out.println("后");}},LEFT("左") {@Overridepublic void show() {System.out.println("左");}},RIGHT("右") {@Overridepublic void show() {System.out.println("右");}};private String name;private Direction3(String name) {this.name = name;}public String getName() {return name;}public abstract void show();}
二、JDK1.7新特性(了解)
(1)二进制字面量
可以用二进制来表示整数(byte,short,int和long) ;语句简单只要在二进制数组前面加0b或者0B
(2)用_分隔数据
注意:
不能出现在进制标识和数值之间
不能出现在数值开头和结尾
不能出现在小数点旁边
(3)switch语句可以用字符串
(4)泛型推断(菱形泛型)
(5)多catch的使用
就是多个catch合并
(6)自动释放资源的用法(try-with-resources语句)
A.格式:
try(必须是java.lang.AutoCloseable的子类对象){...}
B.好处
资源自动释放,不需要close()
把需要关闭资源的部分都定义在这里就OK了
主要是流体系的对象是这个接口的子类
public class Demo {public static void main(String[] args) {// 二进制字面量int x = 0b100101;System.out.println(x);// 数字字面量可以出现下划线int y = 1_1123_1000;// 不能出现在进制标识和数值之间int z = 0x111_222;// 不能出现在数值开头和结尾int a = 0x11_22;// 不能出现在小数点旁边double d = 12.3_4;// switch 语句可以用字符串// 泛型简化ArrayList<String> array = new ArrayList<>();// 异常的多个catch合并method();}private static void method() {// try-with-resources 语句// try(必须是java.lang.AutoCloseable的子类对象){…} //以前的版本try {FileReader fr = new FileReader("a.txt");FileWriter fw = new FileWriter("b.txt");int ch = 0;while ((ch = fr.read()) != -1) {fw.write(ch);}fw.close();fr.close();} catch (IOException e) {e.printStackTrace();}// jdk1.7可用的代码版本try (FileReader fr = new FileReader("a.txt");FileWriter fw = new FileWriter("b.txt");) {int ch = 0;while ((ch = fr.read()) != -1) {fw.write(ch);}} catch (IOException e) {e.printStackTrace();}}}
- java基础--高薪技术--JDK1.5新特性
- java高薪技术——jdk1.5新特性和枚举
- zz[java基础]jdk1.5新特性
- java基础加强--JDK1.5新特性
- java基础 JDK1.5新特性总结
- Java基础:JDK1.5新特性
- -java jdk1.5新特性
- java JDK1.5新特性
- java--JDK1.5新特性
- Java-JDK1.5新特性
- Java基础加强和JDK1.5新特性1.0
- 黑马程序员--java基础之jdk1.5新特性
- Java 基础加强 - JDK1.5 新特性 - 泛型
- Java 基础加强 - JDK1.5 新特性 - 枚举
- Java 基础加强 - JDK1.5新特性 - 注解
- java基础——泛型(jdk1.5新特性)
- Java基础加强一JDK1.5新特性
- Java基础加强: Jdk1.5新特性 枚举
- java中super关键字小结
- Python初探
- 流
- mosfet拾遗
- c++primer之运算符优先级表
- java基础--高薪技术--JDK1.5新特性
- 《鸟哥的Linux私房菜-基础学习篇(第三版)》(二)
- C中柔性数组(flexible array)的学习
- hdu 1097 A hard puzzle 模幂运算
- 【JavaScript】AJax
- dlutoj 1326 矩阵快速幂
- 全面整理的C++面试题
- java遍历map的集中用法(执行效率)
- hdu 5299 Circles Game 2015 Multi-University Training Contest 1