java介绍

114 阅读5分钟

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:不可变的字符序列。
  • StringBuilderStringBuffer:用于可变的字符序列操作,StringBuilder 是非线程安全的,StringBuffer 是线程安全的。
  • Math:包含用于基本数学运算的方法,如 sin()cos()sqrt() 等。
  • ThreadRunnable:用于创建和管理线程。
  • 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:表示实现此接口的类可以读取字符数据。