首页 > 编程语言 >Java [ 基础 ] Java 8以上新特性 ✨

Java [ 基础 ] Java 8以上新特性 ✨

时间:2024-07-08 22:28:11浏览次数:15  
标签:Java 示例 基础 System 特性 println public out

✨探索Java基础 Java 8以上新特性✨

Java 8 及以上的新特性

Java 8 引入了一些重大更新和新特性,这些特性极大地增强了Java的功能和性能。随着Java 9、10、11、12及以后的版本发布,Java持续引入更多的改进和新功能。本文将介绍Java 8及以上版本的一些关键新特性。

Java 8 新特性

1. Lambda 表达式

Lambda表达式提供了一种更简洁的方式来表示单方法接口(即函数式接口)的实现。

示例代码:

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("John", "Jane", "Jack");
        // 使用Lambda表达式打印每个名字
        names.forEach(name -> System.out.println(name));
    }
}
2. 函数式接口

函数式接口是只包含一个抽象方法的接口,可以使用Lambda表达式来创建其实例。

示例代码:

@FunctionalInterface
interface Greeting {
    void sayHello(String name);
}

public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        // 使用Lambda表达式实现函数式接口
        Greeting greeting = (name) -> System.out.println("Hello, " + name);
        greeting.sayHello("John");
    }
}
3. Stream API

Stream API 提供了一种高效且易于使用的方式来处理集合数据,可以执行过滤、排序、映射等操作。

示例代码:

import java.util.Arrays;
import java.util.List;

public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("John", "Jane", "Jack");
        // 使用Stream过滤以J开头的名字并打印
        names.stream()
             .filter(name -> name.startsWith("J"))
             .forEach(System.out::println);
    }
}
4. 默认方法和静态方法

接口可以包含默认方法和静态方法,默认方法允许在不破坏现有实现的情况下向接口添加新方法。

示例代码:

interface MyInterface {
    // 默认方法
    default void defaultMethod() {
        System.out.println("默认方法");
    }

    // 静态方法
    static void staticMethod() {
        System.out.println("静态方法");
    }
}

public class DefaultStaticMethodExample implements MyInterface {
    public static void main(String[] args) {
        DefaultStaticMethodExample example = new DefaultStaticMethodExample();
        // 调用默认方法
        example.defaultMethod();
        // 调用静态方法
        MyInterface.staticMethod();
    }
}
5. 新的日期时间API

Java 8 引入了新的日期和时间API,包括LocalDateLocalTimeLocalDateTime等类。

示例代码:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class DateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate date = LocalDate.now();
        System.out.println("当前日期: " + date);
        
        // 获取当前时间
        LocalTime time = LocalTime.now();
        System.out.println("当前时间: " + time);
        
        // 获取当前日期和时间
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println("当前日期和时间: " + dateTime);
    }
}

Java 9 新特性

1. 模块系统 (Project Jigsaw)

Java 9 引入了模块系统,使得开发者可以更好地组织和封装代码,提升了应用程序的可维护性和安全性。

示例代码:

// module-info.java
module com.example.module {
    requires java.base;
    exports com.example.module;
}
2. JShell

JShell 是Java 9 新增的交互式工具,允许开发者在没有编写完整类的情况下,快速测试代码片段。

示例代码:

jshell> System.out.println("Hello, JShell!");
Hello, JShell!

Java 10 新特性

1. 局部变量类型推断

Java 10 引入了var关键字,使得编译器可以自动推断局部变量的类型。

示例代码:

public class VarExample {
    public static void main(String[] args) {
        var message = "Hello, Java 10!";
        System.out.println(message);
    }
}

Java 11 新特性

1. 单文件程序执行

Java 11 允许直接运行单文件Java程序,无需编译步骤。

示例代码:

java HelloWorld.java
2. 新的字符串方法

Java 11 添加了一些新的字符串方法,如isBlank()lines()strip()等。

示例代码:

public class StringMethodsExample {
    public static void main(String[] args) {
        String str = "  ";
        System.out.println(str.isBlank()); // true
        
        String str2 = "Hello\nWorld";
        str2.lines().forEach(System.out::println);
        
        String str3 = "  hello  ";
        System.out.println(str3.strip()); // "hello"
    }
}

Java 12 新特性

1. Switch表达式 (预览功能)

Java 12 引入了增强的Switch表达式,使得Switch语句更简洁和强大。

示例代码:

public class SwitchExpressionExample {
    public static void main(String[] args) {
        int day = 2;
        String dayName = switch (day) {
            case 1 -> "Monday";
            case 2 -> "Tuesday";
            default -> "Invalid day";
        };
        System.out.println(dayName); // Tuesday
    }
}

面试题及解答

以下是一些关于Java 8及以上新特性的面试题及其解答。

面试题 1:什么是Lambda表达式,如何使用它?

解答: Lambda表达式是一种简洁的表示单方法接口(函数式接口)实现的方法。可以使用它来简化匿名内部类的代码。语法格式为 (参数列表) -> {方法体}

示例代码:

List<String> names = Arrays.asList("John", "Jane", "Jack");
names.forEach(name -> System.out.println(name));
面试题 2:什么是函数式接口?请举例说明。

解答: 函数式接口是只包含一个抽象方法的接口,可以用Lambda表达式来实现。使用@FunctionalInterface注解可以标记函数式接口。

示例代码:

@FunctionalInterface
interface Greeting {
    void sayHello(String name);
}
面试题 3:什么是Stream API,它有哪些常用操作?

解答: Stream API 是一种处理集合数据的高效工具。常用操作包括filtermapsortedforEach等。

示例代码:

List<String> names = Arrays.asList("John", "Jane", "Jack");
names.stream()
     .filter(name -> name.startsWith("J"))
     .forEach(System.out::println);
面试题 4:Java 8 引入了哪些新的日期时间类?请简单介绍。

解答: Java 8 引入了新的日期时间API,包括LocalDateLocalTimeLocalDateTime等类,用于更方便地处理日期和时间。

示例代码:

LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
面试题 5:Java 10 引入了什么新的关键字?它有什么作用?

解答: Java 10 引入了var关键字,用于局部变量类型推断。编译器会自动推断变量的类型。

示例代码:

var message = "Hello, Java 10!";
System.out.println(message);

结论

本文介绍了Java 8 及以上版本引入的一些关键新特性。从Lambda表达式到模块系统,再到局部变量类型推断和增强的Switch表达式,每一个新特性都大大提升了Java的开发体验。

觉得有用的话可以点点赞 (/ω\),支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦 >人< 。

标签:Java,示例,基础,System,特性,println,public,out
From: https://blog.csdn.net/jgk666666/article/details/140252557

相关文章

  • java---方法
    乐观学习,乐观生活,才能不断前进啊!!!我的主页:optimistic_chen我的专栏:c语言欢迎大家访问~创作不易,大佬们点赞鼓励下吧~前言在编程中,某段功能的代码可能会频繁的使用到,如果每次都重新实现一遍,那么程序效率低下,并且不利于维护,而且需要改动时,所有用到该代码的代码的位置都......
  • docker基础
    Docker原理和概念镜像:类似于c++中的类,创建出一种具有独特属性的类容器:类似于c++中的实例化的对象仓库:储存镜像的地方,可以订阅别人创好的镜像,也可以上传自己的对象使用Client-Server架构模式,DockerClient和DockerDaemon之间,通过Socket或者RESTfulAPI进行通信安装配置......
  • 基础算法训练题单之排序(从入门到入土)——题解
    A.P1177【模板】排序三种方法:快速排序,归并排序,STL库的sort函数。法一、三:https://www.cnblogs.com/expect-999/p/17594345.html法二:https://www.cnblogs.com/expect-999/p/17599008.htmlB.P1923【深基9.例4】求第k小的数模板题目,直接对数组进行升序排序,如果数组从......
  • C++基础入门语法--代码基础框架
    文章内容概括:了解学习导入头文件、使用usingnamespacestd简化代码、创建程序基础框架、学习使用return(如需要直接复制请到文章最末尾)正文:1.学习导入头文件:    在Dev-C++编辑器中新建文件,在文件的第一行中输入:#include<iostream>    以上代码为C++导入......
  • 【js面试题】深入理解尾递归及其在JavaScript中的应用
    面试题:举例说明尾递归的理解,以及应用场景引言:在编程中,递归是一种常见的解决问题的方法,它允许函数调用自身来解决问题。然而,递归如果不当使用,可能会导致栈溢出错误,特别是在处理大量数据时。尾递归是一种特殊的递归形式,它能够优化递归调用,避免栈溢出的问题。本文将深入探......
  • 软件设计之Java入门视频(13)
    软件设计之Java入门视频(13)视频教程来自B站尚硅谷:尚硅谷Java入门视频教程,宋红康java基础视频相关文件资料(百度网盘)提取密码:8op3idea下载可以关注软件管家公众号学习内容:该视频共分为1-717部分本次内容涉及360-389在写代码时,总是需要来回切换界面来看代码要求......
  • Java方法重写,匿名对象,抽象类
    1-方法重写什么是方法重写?子类和父类出现了一模一样的方法的声明(方法名,参数列表)为什么要学习方法重写?当子类需要使用父类的功能,但是父类的功能又满足不了子类,那么子类需要重写,这样既可以使用父类的功能,也可以增加新的功能如果进行方法重写?子......
  • JavaWeb__HTML&CSS
    目录一、HTML1、网页的组成部分2、HTML文件的书写规范3.HTML标签的介绍4、标签的语法5、常用标签介绍二、CSS1、CSS技术介绍2、CSS语法规则3、CSS和HTML的结合方式3.1、行内式3.2、内嵌式3.3、外部样式表4、CSS选择器4.1、标签名选择器4.2、id选择器4.3、class选择......
  • 构建自己的docker基础镜像
    构建自己的docker基础镜像构建一个完全定制的基础镜像意味着您需要从一个非常小的镜像(例如scratch镜像)开始,然后逐步添加您需要的所有内容。scratch镜像是一个空白的基础镜像,可以用来创建高度定制的容器环境。创建一个基础镜像构建debian基础镜像准备根文件系统:要构......
  • JavaScript总结2
    概述JavaScript是世界上最流行的脚本语言。JavaScript是一种轻量级的编程语言,可以插入HTML页面的编程代码。JavaScript插入HTML页面后,可由浏览器执行。特点语法简单,易学易用;解释性语言;跨平台,基于对象和事件驱动,可用于客户端。作用可以动态改变网页内容,网页外观;验证表......