Java-java版本特性

Posted 南瓜__pumpkin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-java版本特性相关的知识,希望对你有一定的参考价值。

概述和文章大纲表

目的:在了解Java版本特性的同时,学习Java语言封装的类和方法等等,夯实语言基础。

java特性相关设计
特性1查找的快捷设计hashcode,String类两个方法,util工具类库
特性2二进制 0b 字面量,数字分隔符_
特性3try-with-resource解决 内存泄漏和异常屏蔽问题
特性4

Java 7

switch中添加对String类型的支持

详情见 Java 7~14各个版本新特性详解 ,简单地说:switch有多个case时,先将String转换为hashCode,然后相应的进行处理,JavaCode在底层兼容Java7曾经版本号。

类String
String.hashCode()用于返回字符串的哈希码,计算过程见 Java hashCode() 方法,设计原理见 Java中hashCode的作用,用来在散列存储结构中确定对象的存储地址,主要用于 查找的快捷性

相关String.equals(),String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等,详情参考 Java String equals() 方法

实用工具类库 java.util
在这个包中,Java提供了一些实用的方法和数据结构,详情参考 java.util包详解

java.util 提供的类用途说明
日期(Data)类、日历(Calendar)类来产生和获取日期及时间
随机数(Random)类产生各种类型的随机数
堆栈(Stack)-
向量(Vector)-
位集合(Bitset)-
哈希表(Hashtable)-
等等类来表示相应的数据结构

数字字面量的改进 / 数值可加下划

参考 Java 7~14各个版本新特性详解字面量_百度百科
字面量:在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。

Java7前支持十进制(123)、八进制(0123)、十六进制(0X12AB)。Java7添加二进制表示(0B11110001、0b11110001)。

Java7中支持在数字量中间添加’_'作为分隔符。更直观,如(12_123_456)。下划线仅仅能在数字中间。编译时编译器自己主动删除数字中的下划线。

int one_million = 1_000_000;

异常处理(捕获多个异常) try-with-resources

参考 Java基础之try-with-resource语法糖为什么推荐使用try-with-resources代替try-finally

catch子句能够同一时候捕获多个异常

public void testSequence() { 
	 try { 
		 Integer.parseInt("Hello"); 
	 } catch (NumberFormatException | RuntimeException e) { 
	 //使用'|'切割,多个类型,一个对象e 
	 } 
 } 

try-with-resources,涉及 Java内存管理 和 异常处理 两部分。

在Java使用资源必须手动调用.close()关闭资源,否则会产生 Java内存泄漏问题,可能会严重影响性能。关闭的方法有很多种。比如finalizer、try-catch-finally、try-with-resources等等。

try-catch-finally 语句有两个问题:
在 try 语句中调用资源,就必须在 finally 语句中手动关闭资源,如果使用了多个 try 语句,那么就会导致代码复杂不美观的问题。
如果 catch 语块 和 finally 语块同时发生 exception,那么会产生 异常屏蔽

Java内存泄漏问题:不再会被使用的对象的内存没有回收。
异常屏蔽:由于我们一次只能抛出一个异常,所以在最上层看到的是最后一个抛出的异常,可能会导致某些bug变得极其难以发现。

正题:try-with-resources是jdk1.7引入的语法糖,使用编译器自动关闭资源,使得关闭资源操作无需层层嵌套在finally,同时避免了可能的 Java内存泄漏 问题。并且使用 AutoCloseable接口 解决了异常屏蔽 问题。

语句格式
try-catch-finally语句try {}catch{}finally{}
try-with-resources语句try(资源调用){}

增强泛型推断

参考 什么是Java的泛型Java总结篇系列:Java泛型

泛型

“因为集合存放的数据类型不固定,故往集合里面存放元素时,存在安全隐患,如果在定义集合时,可以想定义数组一样指定数据类型,那么就可以解决该类安全问题。JDK1.5后出现了泛型,用于解决集合框架的安全问题。泛型是一个类型安全机制。”

参考

Java 7~14各个版本新特性详解

以上是关于Java-java版本特性的主要内容,如果未能解决你的问题,请参考以下文章

译ECMAScript 2016, 2017, 2018 新特性之必读篇

Java-Java中System.arraycopy() 和 Arrays.copyOf()两者之间的区别

JAVA-JAVA WEB开发工具下载

Java-Java语言

廖雪峰Java-Java程序基础

廖雪峰Java-Java程序基础-运算规则