首页 > 编程语言 >【JAVA】JavaSEの歴史(1.6~17)

【JAVA】JavaSEの歴史(1.6~17)

时间:2024-02-07 09:05:17浏览次数:30  
标签:1.6 JAVA String JDK System Sample println JavaSE out

Start

 ■Jdk1.6〜8、追加のクラス又は新しい機能

(1)Lambda

// JDK 1.6
new Thread(new Runnable() {
    public void run() {
        System.out.println("Hello, World!");
    }
}).start();

// JDK 8
new Thread(() -> System.out.println("Hello, World!")).start();
Sample

(2)Stream API

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

// JDK 1.6
List<String> filteredNames = new ArrayList<>();
for (String name : names) {
    if (name.length() > 3) {
        filteredNames.add(name.toUpperCase());
    }
}

// JDK 8
List<String> filteredNames = names.stream()
    .filter(name -> name.length() > 3)
    .map(String::toUpperCase)
    .collect(Collectors.toList());
Sample

(3)Java.time

// JDK 1.6
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = sdf.parse("2020-01-01");
Date endDate = sdf.parse("2020-12-31");
long days = (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24);

// JDK 8
LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.of(2020, 12, 31);
long days = ChronoUnit.DAYS.between(startDate, endDate);
Sample

(4)Optional

// JDK 1.6
String value = map.get("key");
if (value != null) {
    System.out.println(value.toUpperCase());
}

// JDK 8
Optional<String> value = Optional.ofNullable(map.get("key"));
value.ifPresent(v -> System.out.println(v.toUpperCase()));
Sample

(5)インタフェースのディフォルト関数(又は静的関数)を追加

// JDK 1.6
public interface MyInterface {
    void doSomething();
}

// JDK 8
public interface MyInterface {
    void doSomething();

    default void doSomethingElse() {
        System.out.println("Doing something else...");
    }
}
Sample

 

■Jdk8〜11、 追加のクラス又は新しい機能

(1)HttpClient APIの追加

・HttpClient:請求と応答の発送

・HttpRequest:請求

・HttpResponse:応答

・WebSocket:通信の処理

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://example.com"))
        .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
Sample

(2)Lambdaの更新(varの利用)

// Before Java 11
BiConsumer<String, String> concat = (String a, String b) -> System.out.println(a + b);

// With Java 11
BiConsumer<String, String> concat = (var a, var b) -> System.out.println(a + b);
Sample

(3)Switchの更新

// Before Java 12
String day = "MONDAY";
String result;
switch (day) {
    case "MONDAY":
        result = "Start of the week";
        break;
    case "TUESDAY":
        result = "Second day";
        break;
    default:
        result = "Other day";
}

// With Java 12
String day = "MONDAY";
String result = switch (day) {
    case "MONDAY" -> "Start of the week";
    case "TUESDAY" -> "Second day";
    default -> "Other day";
};
Sample

 

■Jdk11〜17、 追加のクラス又は新しい機能

(1)文本処理の更新

//Before 17
String str = "Hello World! " +
                  " zhang 3 "+
                  " li 4 ";


//After 17
String str = """
                  Hello World!
                  zhang 3
                  li 4
                  """;
Sample

(2)キー「record」の追加(Lombokの切り替え)

public record SampleRecord(String name, String age) {
}

public class SampleMain {
    public static void main(String[] args) {
        SampleRecord record1 = new SampleRecord("zhang 3",12);
        SampleRecord record2 = new SampleRecord("li 4",15);
        SampleRecord record3 = new SampleRecord("wang 5",18);
    }
}
Sample

(3)キー「Sealed」の追加

sealed abstract class A
    permits B, C {}

final class B extends A {
    // ...
}

final class C extends A {
    // ...
}

// This class would not be allowed to extend Shape
// class D extends A {}
Sample

(4)instanceofの更新

Object obj = "Hello, World!";

// Before Java 16
if (obj instanceof String) {
    String str = (String) obj;
    System.out.println(str.length());
}

// With Java 16
if (obj instanceof String str) {
    System.out.println(str.length());
}
Sample

(5)Switchの再更新

sealed interface Shape permits Circle, Rectangle {}

record Circle(int radius) implements Shape {}
record Rectangle(int width, int height) implements Shape {}

Shape shape = new Circle(5);

// With Java 17
String result = switch (shape) {
    case Circle(var radius) -> "Circle with radius " + radius;
    case Rectangle(var width, var height) -> "Rectangle with width " + width + " and height " + height;
    default -> "Unknown shape";
};

System.out.println(result); // Circle with radius 5
Sample

end

标签:1.6,JAVA,String,JDK,System,Sample,println,JavaSE,out
From: https://www.cnblogs.com/lnsylt/p/18005514

相关文章

  • 【JAVA】JDK8~17の新しい機能の紹介
    JDK8(2014年发布):Lambda表达式:允许在Java中使用函数式编程风格,简化代码并提高可读性。StreamAPI:提供了一种新的数据处理方式,支持函数式编程和并行处理。接口的默认方法和静态方法:允许在接口中定义具有实现的方法,提高了接口的灵活性。新的日期和时间API:引入了java.time包,提......
  • Java的软引用、弱引用和强引用学习
    一、强引用强引用可以直接访问目标对象,所指向的对象在任何时候都不会被系统回收,JVM宁愿抛出OOM异常也不会回收强引用所指向的对象,但是有可能会导致内存泄漏。packagelearn;/***@authorqx*@date2024/1/5*@des*/publicclassDemo{publicstaticvoidmain(S......
  • Java和JavaScript区别与联系
    区别和联系Java和JavaScript是两种不同的编程语言,尽管它们的名称相似,但它们有着不同的特性、用途和工作环境。以下是对它们之间区别与联系的详细说明:语言类型:Java:Java是一种静态类型的编程语言,意味着在编译时需要声明变量的类型,并且强调面向对象编程。JavaScript:JavaScri......
  • 已解决java.lang.IllegalAccessException异常的正确解决方法,亲测有效!!!
    已解决java.lang.IllegalAccessException异常的正确解决方法,亲测有效!!!文章目录问题分析与报错原因解决思路解决方法总结 ----------------------------------------------------------------------------------------------------------------问题分析与报错原因java.lang.IllegalA......
  • 基于Java+Neo4j开发的知识图谱+全文检索的知识库管理系统(源码分析)
    在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现数字......
  • Java之UDP,TCP的详细解析
     练习四:文件名重复publicclassUUIDTest{publicstaticvoidmain(String[]args){Stringstr=UUID.randomUUID().toString().replace("-","");System.out.println(str);//9f15b8c356c54f55bfcb0ee3023fce8a}}```publicclassClient{public......
  • java基础语法之匿名内部类的优化格式lambda
    一:lambda表达式的概述lambda表达式实质上就是对匿内部类的优化但是又不同于匿名内部类。它的使用前提是有且仅有一个抽象方法,有一个接口。二:具体说明<1>函数式编程思想的介绍在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”在数学中,函数就是有输......
  • Java 数学运算与条件语句全解析
    JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对值Math.random():返回一个介于0.0和1.0之间的随机......
  • Java 数学运算与条件语句全解析
    JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对值Math.random():返回一个介于0.0和1.0之间的随......
  • Java之lambda的妙用
    一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作Lambda表达式的类型。使用@FunctionalInter......