A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋斗的青春 金牌黑马   /  2012-10-20 16:09  /  2162 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

jdk 1.7的新特性有哪些 ,求解? 

2 个回复

倒序浏览
1、switch中可以使用字串了
2、"<>"这个玩意儿的运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断。
3、对Java 集合( Collections )的增强支持
   在JDK1.7 中,摒弃了 Java 集合接口的实现类,如: ArrayList 、 HashSet 和 HashMap 。而是直接采用 [] 、 {} 的形式存入对象,采用 [] 的形式按照索引、键值来获取集合中的对象,如下:
Java代码  
  List<String> list=["item"]; //向List集合中添加元素  
String item=list[0]; //从List集合中获取元素  
Set<String> set={"item"}; //向Set集合对象中添加元素  
Map<String,Integer> map={"key":1}; //向Map集合中添加对象  
int value=map["key"]; //从Map集合中获取对象  
4、 语法上支持集合,而不一定是数组
   Java代码  
final List piDigits = [ 1,2,3,4,5,8 ];
5、 新增一些取环境信息的工具方法
Java代码  
  File System.getJavaIoTempDir() // IO临时文件夹   
  
  File System.getJavaHomeDir() // JRE的安装目录   
  
  File System.getUserHomeDir() // 当前用户目录   
   
  File System.getUserDir() // 启动java进程时所在的目录   
6、Boolean类型反转,空指针安全,参与位运算
7、 数值可加下划线
  例如: int one_million = 1_000_000;  

8、 支持二进制文字
  例如: int binary = 0b1001_1001;  
9、简化了可变参数方法的调用
  当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个 “ 非安全操作 ” 的警告

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
别给分了(可能也不会有人加分{:soso_e113:}),这些是从文件中复制的,别人说的,
建议你先看完张孝祥老师的1.5 的新特性,然后在看高级点的东西,不然学起来会不知所踪的。。


下面是Java 1.7 里新出现的功能的一些用法例子:
  对集合的支持
  创建List / Set / Map 时写法更简单了。
List< String> list = ["item"];
String item = list[0];
Set< String > set = {"item"};
Map< String,Integer > map = {"key" : 1};
int value = map["key"];
  对资源的自动回收管理
  下面的代码看起来有点麻烦 … 不是吗?
BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
} finally {
   br.close();
}
  相信你一定会喜欢下面这种写法。
try (BufferedReader br = new BufferedReader(new FileReader(path)) {
   return br.readLine();
}
  泛型实例创建过程中类型引用的简化
  当声明你的对象的接口是,你肯定是不想重复指明泛型类型。
  看看下面的这种写法多好呀…
Map<String,String> hello = new Map<>();
  1Map hello = new Map<>();
  在数字中使用下划线
int billion = 1_000_000_000;
  1int billion = 1_000_000_000;
  我不知道这个能有多少用处。
  对字符串进行switch case
String availability = "available";
switch(availability) {
     case "available":    //code    break;
     case "unavailable":    //code    break;
     case "merged":    //code     default:    //code    break;
}
  注意:在把字符串传进Switch case之前,别忘了检查字符串是否为Null。
  二进制符号
  你可用作二进制字符前加上 0b 来创建一个二进制类型。
int binary = 0b1001_1001;
  一个catch里捕捉多个异常类型
try {
Here comes your code....}
catch(IOException | NullPointerException | ..........) {
}

评分

参与人数 2技术分 +2 收起 理由
谭立文 + 1
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马