java7,8的几个特性自己的理解,大神们多指

getName()方法实现了获取方法参数名的功能 7)新增optional类 处理空指针 8)新增Stream类 和函数式编程统一 9)日期新特性 10)增加了调用javaScript的引擎 11)Base64 字符编码格式 用来作为电子邮件 或webService附件的传输编码 12)并行数组 更多的特性,请J对比JAVA下7以及8的JDK 的相关内容 ...
java7,8的几个特性自己的理解,大神们多指
JDK 1.7部分新特性 1)switch支持String类型 本质上是对int类型的匹配, 实现原理为:通过case后面的str对象调用hashcode()方法,得到一个int类型的hash值,然后用这个hash值来唯一标识这个case.当匹配时,首先调用这个字符串的hashcode()方法,获得一个hash值,用这个hash值与case匹配,若没有则不存在,若有则接着调用equals()方法进行匹配。String变量不能为null ,case后的字符串也不能为null ,否则会出现NullPointerException. 2)可以在catch中捕获多个异常 3)对数值字面量进行了改进
增加了二进制字面量的表示 0B001 0b001
在数字中可以添加分隔符 123_456 下划线只能用在数字中间 编译时被去掉
4)使用泛型的时候增加了类型推断机制 java7之前 Map<String,String> map = new HashMap<String,String>(); java7引进类型推断后 Map<String,String> map = new HashMap<>();
5)增加了 try-with-resources语句 (声明一个或多个资源的try语句) 资源指在使用完成后,必须关闭释放的对象,try-with-resources语句确保在该语句执行之后关闭每个资源
try(InputStream fis = new FileInputStrean("input.txt");){ while(fis.read()!=1){ System.out.println(fis.read()); }}catch(Exception e){ e.printStackTrace();}DK 1.8 部分新特性 1)增加了 Lambda表达式的支持 Lambda表达式是一个匿名函数 允许把函数作为一个方法的参数 示例
Arrays.AsList(2,8,1).forEach(i->System.out.println(i)); //1Arrays.AsList(2,8,1).forEach((Integer i)->System.out.println(i)); // 2在java8以前 对于列表的排序 如果有自定义的类 则需要制定自定义的排序方法
Person []people = {new Person("Iack",22),new Person("Tony",35)};Arrays.sort(people,new Comparator<Person>(){//自定义排序方法 new 一个Conparator 重写compare方法 @Override public int compare(Person a,Person b){ return a.getAge()-b.getAge(); }});for(Person p:people){ System.out.println(p);}Lambda表达式
Arrays.sort(people,(Person a,Person b)->a.getAge()-b.getAge());Arrays.sort(people,(a,b)->a.getAge()-b.getAge());Lambda表达式是通过函数式接口实现的 (只有一个方法的普通接口)。函数式接口可以隐式的转换为Lambda表达式,为了与普通的接口区分开,增加了注解@FunctionalInterface
@FunctionalInterfaceinterface fun{ void f();}2)接口增加了方法的默认实现和静态方法 JDK1.8通过使用关键字 default可以给接口中的方法添加默认实现,此外,接口中还可以定义静态方法。
interface In8{ void f(); default void g(){ System.out.println("default"); } static void h(){ System.out.println("static"); }}引入接口默认方法实现 是为了实现接口升级 在原有的设计中,如果想要升级接口,例如给接口中添加一个新的方法,会导致所有实现这个接口的类都需要被修改。
3)方法引用 方法引用指的是可以直接使用java类或对象的方法
Arrays.sort(people,Comparator.comparing(Person::getAge));方法引用共有下面四种方式
引用构造方法 ClassName::new
引用类静态方法 ClassName::methodName
引用特定类的任意对象方法 ClassName::methodName
引用某个对象的方法 instanceName::methodName
4)注解
JDK 1.5中引入了注解机制 但有限制 相同注解在同一位置只能声明一次 JDK 1.8中引入了重复注解机制后,相同的注解在同一个地方可以声明多次
扩展注解使用范围 可以给局部变量 泛型 和方法异常等提供注解
5)加强了类型推测机制 6)参数名字 在编译时增加 -parameters选项 以及增加反射API 与 Parameter.getName()方法实现了获取方法参数名的功能 7)新增optional类 处理空指针 8)新增Stream类 和函数式编程统一 9)日期新特性 10)增加了调用javaScript的引擎 11)Base64 字符编码格式 用来作为电子邮件 或webService附件的传输编码 12)并行数组
更多的特性,请J对比JAVA下7以及8的JDK 的相关内容
2018-07-28
mengvlog 阅读 10 次 更新于 2025-07-19 19:08:34 我来答关注问题0
  • JDK 1.7部分新特性 1)switch支持String类型 本质上是对int类型的匹配, 实现原理为:通过case后面的str对象调用hashcode()方法,得到一个int类型的hash值,然后用这个hash值来唯一标识这个case.当匹配时,首先调用这个字符串的hashcode()方法,获得一个hash值,用这个hash值与case匹配,若没有则不存在...

  •  阿暄生活 Java7和Java8有什么区别

    Java7:不支持方法与构造函数引用。Java8:Java8允许通过方法引用和构造函数引用来直接引用现有的方法或构造函数,进一步简化了Lambda表达式的使用。五、Lambda作用域与访问局部变量 Java7:无此特性。Java8:在Java8中,Lambda表达式可以访问其外部作用域中的局部变量,但这些变量必须是final或“effectively fi...

  •  翡希信息咨询 史上最全jdk新特性总结,涵盖jdk8到jdk15!

    自Java 8至Java 15的JDK新特性总结如下:Java 8: 函数式编程:引入了java.util.function包,包括Predicate、UnaryOperator、BiFunction和Function等接口,显著减少了代码量,提高了代码简洁性。Java 9: 不可变集合:加强了不可变集合的使用,通过集合工厂方法简化了创建过程。 接口私有方法:允许在接口中定...

  •  翡希信息咨询 Java 8到21新特性一览,以及未来新特性展望

    Java 8到21新特性一览:Java 8:Lambda表达式和方法引用:引入了函数式编程的核心元素,使代码更简洁灵活。流式计算:提供高效的数据处理方式。可空容器:有效处理空值问题。工具类增强:如Files和Base64,提升了编程便利性。CompletableFuture:增强了异步编程能力。时间API重构:日期和时间操作更为直观和强大...

  • Java8引入了全新的时间日期API,提供了更强大的时间日期操作功能。七、Optional类 Optional类用于表示一个值的存在或不存在,取代了使用null来表示。它提供了更好的代码健壮性,并能有效避免空指针异常。综上,Java8的这些新特性显著提升了Java编程的效率和可读性,为开发者提供了更多灵活的编程手段。

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部