java版本介绍
- java SE 是 java 平台的核心 ,提供了标准的java 应用程序开发的基础库
- java EE 是基于java SE 上做拓展 拓展了 开发企业级和分布式的库和工具
- java ME 是 java SE 改造而来,针对资源受限的设备开发的独立版本,改动是简化了API 和 一些特定设备的拓展
java包介绍
一个jdk里通常包含 jvm jre java开发工具包 ,仅需要运行java程序的 仅安装jre 即可 需要进行开发调试的,需要安装 jdk jvm 则是所有跨平台以及java 内存的核心
- jvm :java虚拟机,是java 程序运行的地方,java的跨平台运行的实现就是依赖于 jvm 不同的设备,平台对应有对应的jvm 他们都遵守相同的规范和字节码解析方式,唯一不同的是,他们对比对机器都存在其特定的系统指令集对应,和对应机器的特殊优化,从而达到,一次编译,到处运行的要求
- jre :是java 程序运行的基本条件,它包含了基本类库和jvm ,基本类库提供了丰富的工具类,框架操作,失去类库,程序无法正常运行,比如,字符串处理,io 网络通信等
- jdk:包含 jre + 开发工具包 = (jvm + 基本类库 + 开发工具包) 包含,java的编译工具 javac java文档工具 javadoc java调试工具 jdb java打包工具 jar java反编译器 javap 所以,jdk是开发工具包
java基本特性
java 是面向对象的,存在四大核心概念,也可以叫基本特征
- 抽象:抽象是指把现实世界的复杂实体简化为编程世界中的模型。它通过提取对象的关键特征,而忽略非关键的细节,从而简化复杂问题,其目的是为了 通过抽象,程序员可以专注于对象的本质特征和行为,而不是其具体实现细节,具体的表现形式为 抽象类和接口
abstract class Animal {
abstract void makeSound();
}
class Dog extends Animal {
void makeSound() {
System.out.println("Bark");
}
}
- 封装:将对象的属性和行为(方法)包装在一个单独的单元中,并对其进行访问控制。它通过私有化属性并提供公共的访问方法(getter和setter),实现对数据的保护和隐藏,目的是为了提高了数据的安全性,防止外部代码对对象内部状态的不合理访问和修改,具体的表现形式为 访问修饰符(如private、protected、public)
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 继承:是指一个类(子类)从另一个类(父类)继承属性和方法,从而获得父类的行为和特征。子类可以扩展或修改父类的行为,目的是为了 促进了代码的重用性和层次化设计,使得子类可以复用父类的代码,同时可以增加新的功能或修改现有功能。具体表现形式为 extends 关键字
class Animal {
void eat() {
System.out.println("This animal eats food");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Bark");
}
}
// 继承演示
Dog myDog = new Dog();
myDog.eat(); // 继承自Animal类
myDog.bark(); // Dog类特有的方法
- 多态:是指同一操作在不同对象上的不同表现形式,即同一个方法可以在不同对象中具有不同的实现,目的是为了 提高代码的灵活性和可扩展性,使得一个接口或者方法可以有多种实现,具体表现形式为方法重载(Overloading)和方法重写(Overriding)
class Animal {
void makeSound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow");
}
}
// 多态演示
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // 输出 "Bark"
myCat.makeSound(); // 输出 "Meow"
JAVA 包介绍
- java.lang 核心类库
- java.util 集合框架
- java.io io输入输出
- java.nio 非阻塞io 文件系统
- java.net 网络变成 url socket http
- java.sql 数据库连接和操作
- java.math 大数字和高精度计算
- java.time 日期和时间api
java.lang 包
java lang 包下包含了java 的核心类 这些类都是自动注入的,其中分为 7个大类
基本类
Object:所有类的父类,定义了对象的基本行为,如equals()、hashCode()、toString()和clone()。Class:用于表示类和接口的运行时信息。System:包含一些有用的类字段和方法,例如标准输入、输出流和垃圾回收的方法。String:不可变的字符序列。StringBuilder和StringBuffer:用于可变的字符序列操作,StringBuilder是非线程安全的,StringBuffer是线程安全的。Math:包含用于基本数学运算的方法,如sin()、cos()、sqrt()等。Thread和Runnable:用于创建和管理线程。Throwable:所有错误或异常的超类。
基本数据类型包装类
Boolean:包装boolean值。Character:包装char值。Byte:包装byte值。Short:包装short值。Integer:包装int值。Long:包装long值。Float:包装float值。Double:包装double值。Void:不可实例化的占位符类,用于表示关键字void
实用工具类
Math:提供数学运算方法。StrictMath:与Math类类似,但所有计算都是严格确定的(例如,使用 IEEE 754 算法)。Runtime:与应用程序的运行时环境交互。Process:代表本地操作系统进程。ProcessBuilder:用于创建操作系统进程
反射相关类
Class:提供关于类或接口的运行时信息。ClassLoader:定义了一个类加载器。Package:提供有关包的信息。ReflectiveOperationException:所有反射操作异常的通用超类
异常和错误类
Exception:表示程序可以捕获和处理的异常。RuntimeException:无需显式捕获的异常。Error:指示严重错误,程序一般不应捕获。NullPointerException:当程序尝试在没有对象的引用上调用方法时抛出。ArrayIndexOutOfBoundsException:当程序试图访问数组的非法索引时抛出。ClassNotFoundException:当程序无法加载某个类时抛出。
并发类
Thread:表示一个线程。Runnable:应由任何实例的类实现,该类的实例打算由线程执行。ThreadLocal:提供线程局部变量。
标记接口
Cloneable:指示一个类允许其实例被克隆。Comparable<T>:强制实现此接口的类对其对象进行排序。Appendable:表示实现此接口的类可以接收字符序列。Readable:表示实现此接口的类可以读取字符数据。