java8学习

image

java8安装与环境变量配置

choco

choco官网

image
安装命令:choco install jdk8自动配置环境变量

IDEA

官网安装

java语法

java api中文文档链接 https://www.runoob.com/manual/jdk11api/index.html

注:由于默认具有cpp基础,所以和cpp极为相似的点我不会提及。

传参:对象传递(数组、类、接口)是引用传递,原始类型数据(整形、浮点型、字符型、布尔型)传递是值传递。

enum枚举

public enum PlayerType {
    TENNIS("网球"),
    FOOTBALL("足球"),       //常量FOOTBALL也可以不赋值
    BASKETBALL("篮球");

    private String name;

    PlayerType(String name) {
        this.name = name;
    }
}

实际上,枚举继承自ENUM类,编译时会补全
此外,比较时建议用==,而不是equal(),因为null==null不会报错,而且==会在编译期间检查类型匹配问题

继承

class test extends father{}

抽象类与抽象方法

  1. 前加abstrat的类无法构造对象
  2. 普通类不能包含抽象方法
  3. 抽象方法必须在子类里重构
abstract class Animal {
	abstract void makeSound();
	public void sleep() {
	System.out.println("The animal is sleeping.");
	}
}
class Dog extends Animal {
	void makeSound() {
	System.out.println("The dog barks.");
	}
}

注:重写函数不能使用限制更高的权限修饰符

注:重写方法中不能抛出比父类更高级的异常

注:子类可以使用super调用父类中被重写的函数

数据类型

基本数据类型

  1. boolean 在编译时常常转为int
  2. byte 8字节数据,范围-128~127,常用于大量数据处理,如文件读写,网络传输
  3. char:0 ~ 65,535
  4. double:有效数字大约为 15 到 17 位
  5. float:有效数字大约为 6 到 7 位
float f1 = 3.14f; // 注意要在数字后⾯加上 f 表示这是⼀个 float 类型
float f2 = 1.23e-4f; // 科学计数法表示⼩数
  1. int: -2,147,483,648~2,147,483,647
  2. long:-9,223,372,036,854,775,808~9,223,372,036,854,775,807
  3. short:-32768~32767(少用,一般int)

引用数据类型

  1. 数组
  2. calss
  3. 接口
  4. String

引用数据默认值为null

强制类型转换

char value_char = (char) value_int;

以下为可以发生的隐式转换

image

Java基本数据类型缓存池

包装器类型

包装器类型(Wrapper Types)是 Java 中的一种特殊类型,用于将基本数据类型(如 int、float、char 等)转换为对应的对象类型

  • Byte(对应 byte)
  • Short(对应 short)
  • Integer(对应 int)
  • Long(对应 long)
  • Float(对应 float)
  • Double(对应 double)
  • Character(对应 char)
  • Boolean(对应 boolean)

示例

代码中为过时的方法

// 使用 Integer 包装器类型
Integer integerValue = new Integer(42);
System.out.println("整数值: " + integerValue);

// 将字符串转换为整数
String numberString = "123";
int parsedNumber = Integer.parseInt(numberString);
System.out.println("整数值: " + parsedNumber);

// 使用 Character 包装器类型
Character charValue = new Character('A');
System.out.println("字符: " + charValue);

// 检查字符是否为数字
char testChar = '9';
if (Character.isDigit(testChar)) {
System.out.println("字符是个数字.");
}
Integer integerValue = 42; // 自动装箱,等同于 new Integer(42)
int primitiveValue = integerValue; // 自动拆箱,等同于 integerValue.intValue()

image

super

代表父类的引用,类似this

  1. super.son调用父类成员变量
  2. super.jjjj()调用父类函数
  3. super()调用父类构造函数

变量

注:== 是⽤来⽐较两个对象的地址

  1. 局部变量:必须先初始化才能使用
  2. 成员变量:可以不初始化,存在默认值
  3. 静态变量:可以不初始化,存在默认值

引用数据默认值为null

image

String类

String类存储在堆上的字符串常量池中,非必要不需要new

intern

image
image

其他方法

image

image

拼接字符串

  1. StringBuilder append
  2. image
  3. image
    image

String类的split和contains函数可以直接使用正则表达式

image

StringBuilder

image

StringBuffer

image

Math

image

System

image

RunTime

RunTime是单例类,整个程序只能由一个对象

image
image
image

BigDecimal

image

时间类

calender

image
image
image
image
image

时间格式化

image
image
image

Period

image

Duriation

image

Arrays

image
image

image

image

Lambda表达式

image
image
image

方法引用

image
image
image
image

Collections

image

Map

image

Stream

image
image
image
image

File

image
image

字符编码

image

IO流

image
image

字节流

image
image

字符流

image
image
image

缓冲流

image

image
image

转换流

image
image

打印流

image
image

打印流的重定向

image

数据输出流

image

数据输入流

image

序列化流

image

IO框架

image

Files

image

Properties

image

XML

使用Dom4j库完成读取

image
image

日志logback

通过修改xml文件实现日志输出设置

image
image
image

正则表达式文档

image

instanceof

判断类的从属或者继承或者端口实现关系并强制转换
如果结果应当为false的话编译器会报错,因为无法强制转换
特例:null instanceof String会输出false但是不会报错

final

  1. final double PI = 3.14159265359;表示常量
  2. 表示⼀个不能被⼦类重写的⽅法。这在设计类时,确保某个⽅法的实现不会被⼦类修改时⾮常有⽤。
class Animal {
final void makeSound() {
System.out.println("动物发出声⾳.");
 }
}
class Dog extends Animal {
// 错误: ⽆法覆盖来⾃ Animal 的 final ⽅法
// void makeSound() {
// System.out.println("狗吠叫.");
// }
}
  1. 表示⼀个不能被继承的类。这在设计类时,确保其不会被其他类继承时⾮常有⽤。String 类就是 final 的。
final class Animal {
void makeSound() {
System.out.println("动物发出声⾳.");
 }
}
// 错误: 类型 Dog ⽆法继承 final 类 Animal
// class Dog extends Animal {
// void makeSound() {
// System.out.println("狗吠叫.");
// }
// }

finally

和 try-catch 配合使⽤,表示⽆论是否处理异常,总是执⾏ finally 块中的代码。

try {
int x = 10 / 0; // 抛出异常
} catch (Exception e) {
System.out.println("发⽣了异常:" + e.getMessage());
} finally {
System.out.println("finally 块被执⾏");
}

接口interface

抽象类是对类的抽象,是“是什么?”的问题,而接口是对方法的抽象,是“能做什么?”的问题。

具体见java接口

接口实现implements

public class MyThread implements Runnable {
public void run() {
// 线程执⾏的代码
 }
}

import导入

map遍历方法

image

instanceof

⽤于判断对象是否属于某个类型(class)

Person p = new Student();
if (p instanceof Person) {
System.out.println("p is an instance of Person");
}
if (p instanceof Student) {
System.out.println("p is an instance of Student");
}

声明本地方法native

本地⽅法是指在 Java 代码中声明但在本地代码(通常是C 或 C++ 代码)中实现的⽅法,它通常⽤于与操作系统或其他本地库进⾏交互。
public native void nativeMethod();

null

与空指针异常息息相关

注释

  1. 单行//deqwd
  2. 多行/* */
  3. 文档注释/** */
    可使用javadoc命令根据文档注释生成项目文档

注释规约

  1. 类、字段、方法必须使用文档注释,不能使用单行注释和多行注释。因为注释文档在 IDE 编辑窗口中可以悬浮提示,提高编码效率。
  2. 所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
  3. 所有的类都必须添加创建者和创建日期。
  4. 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
  5. 代码修改的同时,注释也要进行相应的修改。

注释的三种类型

image

Junit

image
image

通过断言式来判断结果是否争取

image

反射

作用:构建框架或编写idea时会用到的方法

image

1. 加载类

image

2. 获取构造器

image

3.获取类的成员变量

image

4. 获取类的成员方法

image

关于反射最好的解释文章:https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html

注解

image

元注解

image

注解的解析

image

动态代理

posted @ 2023-09-08 23:00  adamaik  阅读(76)  评论(0)    收藏  举报