java8学习
java8安装与环境变量配置
choco
choco官网
安装命令: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{}
抽象类与抽象方法
- 前加abstrat的类无法构造对象
- 普通类不能包含抽象方法
- 抽象方法必须在子类里重构
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调用父类中被重写的函数
数据类型
基本数据类型
- boolean 在编译时常常转为int
- byte 8字节数据,范围-128~127,常用于大量数据处理,如文件读写,网络传输
- char:0 ~ 65,535
- double:有效数字大约为 15 到 17 位
- float:有效数字大约为 6 到 7 位
float f1 = 3.14f; // 注意要在数字后⾯加上 f 表示这是⼀个 float 类型
float f2 = 1.23e-4f; // 科学计数法表示⼩数
- int: -2,147,483,648~2,147,483,647
- long:-9,223,372,036,854,775,808~9,223,372,036,854,775,807
- short:-32768~32767(少用,一般int)
引用数据类型
- 数组
- calss
- 接口
- String
引用数据默认值为null
强制类型转换
char value_char = (char) value_int;
以下为可以发生的隐式转换
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()
super
代表父类的引用,类似this
- super.son调用父类成员变量
- super.jjjj()调用父类函数
- super()调用父类构造函数
变量
注:== 是⽤来⽐较两个对象的地址
- 局部变量:必须先初始化才能使用
- 成员变量:可以不初始化,存在默认值
- 静态变量:可以不初始化,存在默认值
引用数据默认值为null
String类
String类存储在堆上的字符串常量池中,非必要不需要new
intern
其他方法
拼接字符串
- StringBuilder append
String类的split和contains函数可以直接使用正则表达式
StringBuilder
StringBuffer
Math
System
RunTime
RunTime是单例类,整个程序只能由一个对象
BigDecimal
时间类
calender
时间格式化
Period
Duriation
Arrays
Lambda表达式
方法引用
Collections
Map
Stream
File
字符编码
IO流
字节流
字符流
缓冲流
转换流
打印流
打印流的重定向
数据输出流
数据输入流
序列化流
IO框架
Files
Properties
XML
使用Dom4j库完成读取
日志logback
通过修改xml文件实现日志输出设置
正则表达式文档
instanceof
判断类的从属或者继承或者端口实现关系并强制转换
如果结果应当为false的话编译器会报错,因为无法强制转换
特例:null instanceof String会输出false但是不会报错
final
final double PI = 3.14159265359;
表示常量- 表示⼀个不能被⼦类重写的⽅法。这在设计类时,确保某个⽅法的实现不会被⼦类修改时⾮常有⽤。
class Animal {
final void makeSound() {
System.out.println("动物发出声⾳.");
}
}
class Dog extends Animal {
// 错误: ⽆法覆盖来⾃ Animal 的 final ⽅法
// void makeSound() {
// System.out.println("狗吠叫.");
// }
}
- 表示⼀个不能被继承的类。这在设计类时,确保其不会被其他类继承时⾮常有⽤。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遍历方法
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
与空指针异常息息相关
注释
- 单行
//deqwd
- 多行
/* */
- 文档注释
/** */
可使用javadoc命令根据文档注释生成项目文档
注释规约
- 类、字段、方法必须使用文档注释,不能使用单行注释和多行注释。因为注释文档在 IDE 编辑窗口中可以悬浮提示,提高编码效率。
- 所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
- 所有的类都必须添加创建者和创建日期。
- 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
- 代码修改的同时,注释也要进行相应的修改。
注释的三种类型
Junit