基础知识

概念

JDK

JRE

JVM

  • 先编译,再执行。先用javac编译.java文件成.class文件,再用java执行。

JDK

环境搭建,下载,安装。

安装的时候遇到问题:

点击下一步没有反应,然后在某处看到是百度输入法的问题,试试把百度输入法切换到系统输入法就好了。

配置环境变量:

问题:java 不是内部或外部命令,也不是可运行的程序

window10 路径:控制面板 -> 系统 -> 高级系统设置 -> 环境变量

在系统变量中,新建:

  • 变量名:JAVA_HOME
  • 变量值:C:\Program Files\Java\jdk1.8.0_321安装目录

再到变量名Path中,新建:

  • %JAVA_HOME%\bin
  • %JAVA_HOME%\jre\bin

Java 平台

  • Java SE: 桌面程序
  • Java EE: web 程序
  • Java ME:移动程序

工具

  • 开发工具: eclipse

类型转换

!imageopen in new window

数据类型

基本数据类型

  • 整数类型:byte,short,int,long

  • 浮点数类型:float,double

  • 字符类型:char

  • 布尔类型:boolean

引用类型

  • 所有 class 和 interface 类型,除了上述基本类型其它都是引用类型

反射

在程序运行时动态创建对象,动态调用方法,动态修改属性。

大多数 Java 框架都是基于反射实现参数配置、动态注入等特性。

反射的核心类

  • Class:类的对象
  • Constructor:类的构造方法
  • Method:类的方法
  • Field:类的成员变量

Class 核心方法

  • Class.forName("类名"):返回类的对象
  • Class.newInstance():返回类的实例
  • Class.getConstructors():返回类的所有构造方法
  • Class.getMethods():返回类的所有 public 修饰方法
  • Class.getFields():返回类的所有 public 修饰成员变量

Lambda 表达式

JDK8 开始支持,用来让代码更简洁,更易读。更简洁的实现匿名内部类与函数声明与调用。

约束条件:Lambda 表达式只能用来实现函数式接口。

函数式接口:只有一个抽象方法的接口。

语法

参数列表 -> 方法体

  • 参数列表:参数类型可以省略,如果只有一个参数,小括号可以省略
  • 方法体:如果只有一条语句,大括号可以省略,如果有返回值,return 也可以省略
(int a, int b) -> a + b
1

函数式编程

函数式编程是基于 lambda 表达式的编程方式。

函数式编程理念是将代码作为可重用数据带入到程序运行中。非常灵活,非常轻松。

  • 函数式接口:只有一个抽象方法的接口
  • 函数式编程:基于 lambda 表达式的编程方式

Java 函数式接口

常用接口:

  • Predicate:有参数,返回 boolean
  • Function:有参数,有返回值
  • Consumer:有参数,无返回值
  • Supplier:无参数,有返回值

添加注解

  • @FunctionalInterface:标记函数式接口

通知编译器这是函数是接口,如果接口中有多个抽象方法,编译器会报错。

Stream 流式处理

是建立在 Lambda 表达式基础上的一种数据处理方式。

对集合数据处理进行高度抽象,让我们用一种声明式的方式来处理数据,极大简化代码量,实现对集合的快速处理,迭代、去重、筛选、排序、聚合等一系列处理。

特点

  • 不是数据结构,不会保存数据
  • 不会改变源对象,会返回一个持有结果的新 Stream
  • 惰性求值,只有终止操作的时候才会执行

流的操作

  • 创建流
  • 中间操作
  • 终止操作

创建流

  • 通过 Stream.of() 创建流
  • 通过集合创建流:stream()
  • 通过数组创建流:Arrays.stream()
  • 创建无限流:Stream.iterate()Stream.generate()

中间操作

  • forEach:遍历
  • filter:过滤
  • limit:限制
  • map:映射
  • flatMap:扁平化
  • skip:跳过
  • sorted:排序
  • distinct:去重
  • count:计数
  • collect:收集

终止操作

  • allMatch:所有元素都匹配
  • anyMatch:任意一个元素匹配
  • noneMatch:所有元素都不匹配
  • findFirst:返回第一个元素
  • findAny:返回任意一个元素
  • max:返回最大值
  • min:返回最小值
  • reduce:规约
  • forEachOrdered:有序遍历
Last Updated: 2023/8/2 10:45:34
Contributors: licong23@xdf.cn, licong96, 黎聪