注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Java7 Coin  

2012-08-06 20:40:07|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
关于coin项目
http://openjdk.java.net/projects/coin/
The goal of Project Coin is to determine what set of small language changes should be added to JDK 7. That list is:
    1.Strings in switch
    2.Binary integral literals and underscores in numeric literals
    3.Multi-catch and more precise rethrow
    4.Improved type inference for generic instance creation (diamond)
    5.try-with-resources statement
    6.Simplified varargs method invocation

1.Strings in switch
-----------------------------------------------------------------------------
package coin.test;

public class TestCoin {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
        //关于对switch(表达式) 其中表达式必须是整型或字符型,int 和 char
        //如果想使用字符串,可以转换成枚举。
        //Java7增加了对字符串的支持
    private String getLevel(String level){
        String message = "";
        switch(level) {
            case "A level":
                message = "you got A level." ;
                break;
            case "B level":
                message = "you got B level." ;
                break;
            case "C level":
                message = "you got C level." ;
                break;
            default:
                message = "you got D level." ;
        }
        return message;
    }
}
------------------------------------------------------------------------------
2.Binary integral literals and underscores in numeric literals
------------------------------------------------------------------------------
Java7新增一种字面量值 二进制
就是在数字面前加0b或0B
int a = 0b101

//Java7增加对二进制字面量的支持 0b或0B
    private void numeric() {
        //Java6支持 八进制,十进制,十六进制
        int octonary = 023;
        int hexadecimal = 0x15;
        int binary = 0b101;
    }
------------------------------------------------------------------------------
在数值字面量中使用下划线
就是为了便于阅读,注意下划线必须出现在数字中间
------------------------------------------------------------------------------
//字面量中引入_
private void numeric_() {
    int number = 50_000;
    double dou = 3_2.5_23
}
------------------------------------------------------------------------------
3.Multi-catch and more precise rethrow
------------------------------------------------------------------------------
private void testException() {
    try {
        Class<?> clazz = Class.forName("java.lang.string");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
        sdf.parse("2008-12-12");
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //Multi-catch (使用|分割异常)
    //注意,不能出现重复或者一个异常是另一个异常的子类
    try {
        Class<?> clazz = Class.forName("java.lang.string");
        sdf.parse("2008-12-12");
    } catch (ClassNotFoundException |ParseException e ) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
------------------------------------------------------------------------------
4.try-with-resources statement (自动释放资源)
------------------------------------------------------------------------------
private void testTry(String srcFile, String toFile) {
    try {
            FileReader fr = new FileReader(srcFile);//创建FileReader对象
            BufferedReader br = new BufferedReader(fr);   
            FileWriter fw = new FileWriter(toFile);//创建FileWriter对象
            BufferedWriter bw = new BufferedWriter(fw);   
            String line;   
            while (br.ready()) {
                line = br.readLine();//读取一行
                bw.write(line); //写入文件
                bw.newLine();
            }
            bw.flush();  
            /*
            释放资源,这些现在就不需要写了
            bw.close();
            br.close();
            fw.close();
            br.close();
            fr.close();
            */
        } catch (IOException e) {
            e.printStackTrace();
    }
}
------------------------------------------------------------------------------
5.Simplified varargs method invocation
------------------------------------------------------------------------------
private int sum(int ... nums) {
    int sum = 0;
    for (int i : nums) {
        sum += i;
    }
    return sum;
}
//对于下面这种类型不确定的可变参数方法使用。Java6在该方法会出现警告,
//我们一般会使用@SuppressWarnings,避免警告,但是这样不好
//Java7 引入一个新的注解@SafeVarargs,它只能用于static 或 final 且参数长度可变的方法上
@SafeVarargs
private static <T> List<T> asList(T... elements) {
    return Arrays.asList(elements);
}
------------------------------------------------------------------------------
6.Improved type inference for generic instance creation (diamond)
------------------------------------------------------------------------------
private void testArrayList() {
    List<String> strs = new ArrayList<>();
    List<?> objs = new ArrayList<>();
    Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
    Map<String, List<String>> anagrams2 = new HashMap<>();
}

参考资料:(更详细内容如下)
https://blogs.oracle.com/darcy/entry/project_coin_final_five
  评论这张
 
阅读(712)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017