文档章节

java7-coin项目

土茯苓
 土茯苓
发布于 2015/03/17 16:55
字数 983
阅读 20
收藏 0
点赞 0
评论 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对这种方法注解,开发人员就不会在里面进行任何危险操作。

 

© 著作权归作者所有

共有 人打赏支持
土茯苓
粉丝 30
博文 168
码字总数 193692
作品 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
Java 7 最快要到 2012 年中发布

Mark Reinhold 发了篇博客关于 Java 7 的发行计划,他在这篇博客中称,目前的 JDK 7 的发行计划完全是不现实的,主要是因为 Sun 被 Oracle 收购后增加了一些新项目(lambda, Coin, Jigsaw) 导...

红薯
2010/09/09
1K
13
虚拟币交易平台源码修改 二次开发 btchanges 增加充值3级奖励分红功能

虚拟币交易平台源码修改 二次开发 btchanges 增加充值3级奖励分红功能 找到文件 Application/Admin/Controller/FinanceController.class.php 修改function myczQueren() 为 public function ...

dandan688
2016/11/29
0
0
CitrusEngine系列教程二:结合starling和Box2D开发游戏

教程出自 cls分享站 CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程...

clschen
2013/05/05
0
0
使用jquery插件coin-slider轻松打造幻灯片教程

1,加载必备组件 (下接:http://ce.sysu.edu.cn/hope2008/Education/UploadFiles_5303/201008/2010082521003053.rar) 这个coin-slider是jquery的一个插件,当然离不开jquery了。所以我们要...

EDIAGD
2013/11/10
0
0
Oracle 宣布更多 Java 9 新特性

随着Oracle确认了其余的4个Java 9特性,下一代Java的计划开始变得更清晰了,Oracle已经公布了第二套Java 9特性。自从Oracle在今年早些时候宣布了3个新的API和模块化源码后,这是Oracle首次推...

oschina
2014/12/05
21.4K
65
EOS coin:如何零风险获得年化收益700%

有了EOS就相当于有了下金蛋的鸡! 圈外的人可能觉得我神经不正常,但币圈的人知道,在这个神奇的世界,什么都有可能发生…… 也许大家错过了平台币,错过了“交易即挖矿”,也许大家正在为币...

朵朵的朵朵
07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring配置xml启动报错 Connot find 'beans'

1.我们先看一下spring的原始配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc......

江湖鱼大虾
1分钟前
0
0
与女儿谈商业模式 (4):戴尔的成功秘诀

分类:与女儿谈商业模式 | 标签: 戴尔 经济学 陈志武 2007-05-15 10:26阅读(7434)评论(36)   2007年5月《创富志》与“女儿谈商业模式”专栏 (之四)   戴尔的成功秘诀   陈志武   ...

祖冲之
10分钟前
0
0
www.w3.org被qiang导致logback报错:Connect reset

web项目部署到tomcat后,web项目中的logback不能运行,报错信息如下: Reported exception: ch.qos.logback.core.joran.spi.JoranException: I/O error occurred while parsing xml file......

浮躁的码农
24分钟前
0
0
JDeveloper中文乱码解决

全局设置字体; 全局设置环境编码; 项目设置编译器环境编码。

wffger
52分钟前
2
0
MySQL主从介绍 , 准备工作,配置主,配置从, 测试主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

TaoXu
今天
2
0
线性代数学习总结

亭子happy
今天
1
0
Java8:Lambda表达式增强版Comparator和排序

1、概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排序。 这篇文章是...

孟飞阳
今天
0
0
从架构到组件,深挖istio如何连接、管理和保护微服务2.0?

近几年我一直从事于微服务系统的设计以及实现方面的工作,属于微服务架构一线实践者。之前做过一些单体系统的微服务改造,在微服务拆分、治理等方面都有一定的经验。 本人比较特殊一点的经历...

xiaomin0322
今天
1
0
基于vue的h5文件切片上传(获取文件md5,实现秒传、进度条实现)

template <button @click="file"></button><label ref="upload" style="position: relative;"> <input type="file" @change="selectFile" style="position: abs......

hkaikai
今天
2
0
Spring Boot 2.0 项目实现自同步AD域账号

在通过Spring Boot的自动化装配功能及JDK自带的LDAP模块,可通过如下几个简单步骤实现业务系统自动同步AD域账号功能。 1. Java自带ldap搜索域账号信息核心代码: try { LdapContext ctx...

B超
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部