文档章节

java7-coin项目

土茯苓
 土茯苓
发布于 2015/03/17 16:55
字数 983
阅读 21
收藏 0

coin项目:

1. try-with-resource结构--可自动关闭资源。相比于之前需要调用close()方法才可关闭。

2. switch中添加了字符串支持。

3. 改变了数字常量的展示。现在可以更好的理解一串数字。使用_

4. multi-catch  在一个catch块中可以声明多个要捕获的异常。

5. 钻石语法。 优化泛型处理过程

1. switch语句中的String

JAVA6之前,case语句中的常量只能是bytes char short 和int,也可以是其对应的封装类Byte Character Short Integer 或枚举

JAVA7种新增了String,毕竟String也是常量类型。

2.更强的数值表示法

数字常量(Integer)可以用二进制文本表示

在整数常量中使用下划线

a.二进制文本

举例:JAVA7之前处理二进制,需要基础转换,或者调用parseX

int x = Integer.parseInt("1100110",2)----〉方法调用对性能有影响,需要记住parsex的处理细节。

现在:int x=0b1100110

b.数字中的下划线

Coin项目借鉴了Ruby创意,用下划线_作分隔符。

long textLong=2_123_532_631L;

int bitPattern=0b0001_1100_0011_0100;

3.改善的异常处理

两个改进:multiCatch 和 final

a.multiCatch 使用 |

try{

String fileText=getFile(fileName);

cfg=verifyConfig(ParseConfig(fileText));

}catch(fileNotFoundException | ParserException | ConfigurationException e){

system.out.println("``````");

}catch(IOException iox){}

b.final 重新抛出异常

java7之前:

try{

dothingThrowException();

dothingThrowException();

}catch(Exception e){

}

这样写 真是的抛出异常会被Exception覆盖掉。

java7中:

try{

dothingThrowException();

dothingThrowException();

}catch(final Exception e){

}

关键字final表示实际抛出的异常就是运行时遇到的异常。成为final重抛。

4.try-with-resources(TWR)

基本设想是把资源的作用与限定在代码块内,当程序离开这个代码块时,资源自动关闭。

java7之前:要从一个uRL中读取字节流,并把读取到的内容写入到文件(out)中,

InputStream is= null;

try{

    is=url.openStram();

    OutputStream out=new FileOutputStream(file);

    ..............

    ..............

}catch(IOException e){}

finally{try{

    out.close();

}catch(.....){}}

墨菲定律:任何事情都有可能出错。所以这里会导致文件可能无法打开,无法关闭,无法读写。

java中 --资源自动化管理代码块的基本形式。把资源放在try的圆括号内

try(OutputStream out=new FileOutputStream(file);

        InputStream is = url.openStream() ){

    byte[] buf=new byte[4096];

    int len;

while(){.................}

}

这种情况下,某些资源可能无法关闭。例如:

try(ObjectInputStream in=new ObjectInputStream(new FileInputStream("someFile.bin"))){

............}

要保证trywithresources生效,正确用法:为各个资源声明独立变量。

try(FileInputStream fin=new FileInputStream("somfile.bin");

      ObjectInputStream in=new ObjectInputStream(fin) ){}

TWR另一个好处是改善了错误跟踪的能力,能够更准确跟踪堆栈异常。JAVA7改进了跟踪堆栈。

拓展:使用TWR,try从句中出现的资源类都必须实现AutoCloseable接口。JAVA7大多数资源类都已经被修改。

5.钻石语法

钻石语法用于:泛型。针对创建泛型定义和实例太过繁琐的问题。

Map<Integer,Map<Stirng,String>> userLists=new HashMap<Integer,Map<Stirng,String>>();

钻石语法省去了后面的 Integer,Map<Stirng,String>

Map<Integer,Map<Stirng,String>> userLists=new HashMap<>();

使用类型推断语法可以省出点空间。

6.简化变参方法的调用

变参方法是指参数列表末尾是数量不定但类型相同的参数方法。

基本上所有出现在末尾的变参都被放到了一个数组中。作为一个参数传入。

这样存在一个java泛型缺陷--不允许创建已知类型的泛型数组。如:

HashMap<String,String>[] arrayhm=new HashMap<>[2];--无法编译通过。

只能这样写:

HashMap<String,String>[] warnHm=new HashMap[2];这样编译器会给一个警告。

java7中把警告性息从使用api的地方移到了定义api的地方。

java7还提供了一个新注解JAVA.lang.safeVarargs通过@safeVarargs对这种方法注解,开发人员就不会在里面进行任何危险操作。

 

© 著作权归作者所有

共有 人打赏支持
上一篇: CLOJURE学习文档
下一篇: mac本地启动ftp
土茯苓
粉丝 32
博文 171
码字总数 194079
作品 0
朝阳
高级程序员
私信 提问
java程序员修炼之道

第一部分:用Java7做开发 第一章:初识java7 1.1语言与平台《Java语言规范(JLP)》《JVM规范(VMSpec)》 1.2Coin项目:浓缩的都是精华 修改过程:1.更新JLS 2.在源码编译器中实现一个原型 3.为修改...

zhchl2010
2015/09/20
83
0
一起学Java7新功能扩展——深入历险分享(一)

特此声明:因网友疑问,这里声明一个重要的安全,就是大家所知的java惊现0day漏洞!8月30日,Oralce紧急发布了新版本的JDK和JRE,原因是发现了一个严重的0day漏洞CVE-2012-4681,远程攻击者可...

Beyond-Bit
2012/09/03
0
26
Java7的新特性1-project coin

Project coin project coin是Java一些语法改进的一个项目。 Strings in switch 在Java1.7之前,switch语句只能是byte、char、short和int以及包装类和枚举常量,比如: 在Java7中,扩展了允许...

mushui
2013/07/29
0
4
redis中有大量数据,但数据结构已经变化,如何更新这些数据?

例如在redis中有1亿条这样的记录 user:1 = hashes(name, password, coin, xxx) user:2 = hashes(name, password, coin, xxx) user:3 = hashes(name, password, coin, xxx) ... ... ... user:......

uwaw
2015/10/07
222
1
(#1—孙朋举)是否可以实现多种不同游戏同时都支持moss coin?

根据白皮书介绍“Mossland”是一款以现实中的房产为素材的基于位置的(Location Based)增强现实 (Augmented Reality)手机游戏服务。用户在游戏中可以看到周围现实的房产,可以通过 游戏来获取...

一九_b280
08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。 在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理...

ThinkGem
17分钟前
10
0
0022-如何永久删除Kafka的Topic

1.问题描述 使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:“marked for deletion”,导致重新创建相同名称的Topic时报错“already exists”。 2.问题复现...

Hadoop实操
20分钟前
0
0
技术工坊|区块链中的p2p网络(上海)

区块链是一个去中心化的系统,每个节点分布在全球各地,那么节点之间是如何自发地组成网络,又如何进行通信的?区块链中的p2p网络算法与bt下载中的p2p网络有什么区别?11月28日,第29期技术工...

HiBlock
25分钟前
1
0
MySQL性能优化之char、varchar、text的区别

在存储字符串时, 可以使用char、varchar或者text类型, 那么具体使用场景呢? 参考下面这个表结构: 1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。 ...

hansonwong
28分钟前
0
0
并发编程系列:4大并发工具类的功能、原理、以及应用场景

一:并发工具包 1.并发工具类 提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作。 2.并发容器 提供各种线程安全...

游人未归
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部