JDK7特性

1. 二进制字面量

二进制字面量也就是可以在java代码中通过二进制的形式来表示,用0b开头

例如:在控制台打印出6

public static void test1(){
	System.out.println(0b110);
}

2. 数字字面量可以出现下划线

我们通常表示比较大的数值的时候,会三位为一组,用逗号隔开,但是在java中不能这样做,在jdk1.7之后,可以用下划线来代替逗号分隔

例如:打印100万

public static void test2(){
	System.out.println(100_0000);
}

注意:java处理之后打印出来的数据是没有下划线的。 

3. switch语句可以用字符串

public static void test3(String name){
	switch (name) {
	case "张三":
		System.out.println("我是张三");
		break;
	case "李四":
		System.out.println("我是李四");
		break;
	default:
		System.out.println("我就是我,我谁也不是");
		break;
	}
}

4. 泛型简化、菱形泛型

在JDK7之前,声明泛型对象的代码如下:

List<String> list = new ArrayList<String>();

而在JDK7中,可以使用如下代码:

List<String> list = new ArrayList<>();

因为编译器可以从前面(List)推断出推断出类型参数,所以后面的ArrayList之后可以不用写泛型参数,只用一对空着的尖括号就可以。Java 7 只支持有限的类型推断:只有构造器的参数化类型在上下文中被显著的声明了,才可以使用类型推断,否则不行,例如:

List<String> list = new ArrayList<>();

list.add("A");

list.addAll(new ArrayList<>()); //这样声明不合法

List<? extends String> list2 = new ArrayList<>(); //这样声明合法

list.addAll(list2);

5. 异常多个合并,每个异常用或|

try{
    ...
}catch(异常名1 | 异常名2 | ...  变量 ) {
    ...
}

注意:这个方法虽然简洁,但是也不够好。
             A:处理方式是一致的。(实际开发中,好多时候可能就是针对同类型的问题,给出同一个处理)
            B:多个异常间必须是平级关系。 

例如:

try {
    System.out.println(a / b);
    System.out.println(arr[3]);
} catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
    System.out.println("出问题了");
}

6. try-with-resources语句

        JDK7提供的自动关闭资源的功能为管理资源(如文件流、数据库连接等)提供了一种更加简便的方式。这种功能是通过一种新的try语句实现的,叫try-with-resources,有时称为自动资源管理。try-with-resources的主要好处是可以避免在资源(如文件流)不需要的时候忘记将其关闭。

语法:

try(resource-specification) {
    // 使用资源
}

        这里,resources-specification是声明并初始化资源(如文件)的语句,包含变量声明,用被管理对象的引用初始化该变量。这里可以创建多个资源,用分好分隔即可。当try块结束时,资源会自动释放。如果是文件,文件将被关闭,因此不需要显式调用close方法。try-with-resources语句也可以不包含catch语句和finally语句。
注意:

        并非所有的资源都可以自动关闭。只有实现了java.lang.AutoCloseable接口的那些资源才可以自动关闭。该接口是JDK7新增的,定义了close方法。java.io.Closeable接口继承了AutoCloseable接口。这两个接口被所有的流类实现,包括FileInputStream和FileOutputStream。因此,在使用流(文件流)时,可以使用try-with-resources语句。

public static void startTest() {
        try (MyAutoCloseA a = new MyAutoCloseA();
             MyAutoCloseB b = new MyAutoCloseB()) {
            a.test();
            b.test();
        } catch (Exception e) {
            System.out.println("Main: exception");
            System.out.println(e.getMessage());
            Throwable[] suppressed = e.getSuppressed();
            for (int i = 0; i < suppressed.length; i++)
                System.out.println(suppressed[i].getMessage());
        }
    }

对文件的操作

public void test2() throws IOException {
        String filepath = "D:\\gui-config.json";

        try (
                FileReader fileReader = new FileReader(filepath);
                BufferedReader br = new BufferedReader(fileReader)
        ) {
            String curline = null;
            while ((curline = br.readLine()) != null) {
                System.out.println(curline);
            }
        }

    }

7. Path 与 Paths

        java.nio.file.Path接口代表一个平台无关的平台路径,描述了目录结构中文件的位置。Paths提供的get()方法用来获取Path对象.

Path get(String first,String ... more):用于将多个字符串串联成路径

Path常用方法:

方法描述
Boolean endsWith(String path)判断是否以path路径结束
boolean startWith(String path)判断是否以path路径开始
boolean isAbsolute()判断是否是绝对路径
Path getFileName()返回与调用Path对象关联的文件名
Path getName(int idx)返回的指定索引位置idx的路径名称
int getNameCount()返回Path根目录后面元素的数量
Path getParent()返回Path对象包含整个路径,不包含Path对象指定的文件路径
Path getRoot()返回调用Path对象的根路径
Path resolve(Path p)将相对路径解析为绝对路径
Path toAbsolutePath()作为绝对路径返回调用Path对象
String toString()返回调用Path对象的字符串表示形式

8. Files类

java.nio.file.Files用于操作文件或目录的工具类。常用方法有:

1)用于文件操作的方法

方法描述
Path copy(Path src,Path dest,CopyOption ... how)文件复制
Path createDirectory(Path path,FileAttribute<?> ... attr)创建一个目录
Path createFile(Path path,FileAttribute<?> ... arr)创建一个为路径
void delete(Path path)删除一个文件
Path move(Path src,Path dest,CopyOption ... how)将src移动到destory位置
long size(Path path)返回path指定文件的大小

2)用于判断

方法描述
boolean exists(Path path,LinkOption ... opts)判断文件是否存在
boolean isDirectory(Path path,LinkOption ... opts)判断是否是目录
boolean isExecutable(Path path)判断是否是可执行文件
boolean isHidden(Path path)判断是否是隐藏文件
boolean isReadable(Path path)判断文件是都可读
boolean isWritable(Path path)判断文件是否可写
boolean notWxists(Path path,LinkOption ... opts)判断文件是否不存在
public static<A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption ... option)获取与path指定的文件相关联的属性

3)用于操作内容

方法描述
SeekableByteChannel newByteChannel(Path path,OpenOption ... how)获取与指定文件的连接,how指定打开方式
DirectoryStream newDirectoryStream(Path path)打开Path指定的目录
Inputstream newInputStream(Path path,OpenOption ... how)获取InputStream对象
OutStream newOutputStream(Path path,OpenOption ... how)获取OutputStream对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值