JAVA基础知识整理
2022-03-11 00:33:04 1 举报
AI智能生成
java常见的核心的基础知识
作者其他创作
大纲/内容
概述
1、何为java
面向对象:封装、继承、多态
简单易用性:从C++演变而来
健壮性:异常处理、强类型、垃圾自动收集
安全性
支持多线程
平台无关性:java虚拟机
2、java与C++的异同点
相同:均为面向对象语言,支持继承、封装、多态
异同:java自动内存管理、不提供指针直接访问内存、类是单继承的
3、java的版本
Java SE:标准版,是JavaEE和JavaME的基础,提供web服务类
Java EE:企业版,提供web服务、组件和通信,实现企业级面向服务的体系架构
Java ME:主要用于移动设备和嵌入式设备等微机
4、JDK、JRE、JVM的关系
JVM:java运行的虚拟机,java程序运行在此之上,不同平台有不同的虚拟机实现,是java跨平台的基础
JRE:java运行环境,包含了JVM和java程序核心类库(java.lang语言包)
JDK:包含了JRE,同时提供java开发工具、打包工具等(如java.exe运行java程序、javac.exe编译、javaw.exe运行GUI程序)
5、字节码
指java代码通过虚拟机编译后产生的.class文件,只面向java虚拟机
好处:可移植性
代码转换过程:java源程序-->java编译器-->java字节码-->jvm-->解释器-->二进制流
基础语法
数据类型
基础数据类型
数值型:byte(1B)、short(2B)、int(4B)、long(8B)、float(4B)、double(8B)
字符型:char
布尔型:boolean
引用数据类型:类、接口、数组
switch语法:理论上只支持整形int。
byte、short通过向上转型支持
string通过hashcode()和equals()支持
枚举通过枚举类的ordinal()方法得到序列值支持
移位语法:快速计算
左移:左移n位等于乘以2的n次方
右移:右移n位等于除以2的n次方
访问修饰符
private:同一类内部可见。修饰变量、方法,不可修饰外部类
default:同一包内部可见,修饰变量、方法、类、接口
protect:同一包内和所有子类可见,修饰变量、方法,不可修饰外部类
public:所有类可见,可修饰方法、类、变量、接口
常见关键字
final关键字:修饰类、方法、属性,代表不可继承、重写、不可改变变量的引用,内容可以改变。
this关键字:当前对象、取分形参、引用本类构造函数
super关键字:指向离最近父类的一个指针,可直接引用父类成员、子类父类重名属性区分、引用父类构造函数
static关键字
修饰变量、方法、静态代码块、内部类、静态导包
修饰的变量或方法独立于对象,被类的所有实例所共享
java异常体系
概念与异常架构
提供的一种识别和响应异常的一种机制,确立了程序异常与正常业务代码分离的方法,提高了代码健壮性
体系
throwable
error
JVM-error
outofmemory-Error
StackOverflow-Error
AWT-Error
exception
IO-Exception
classcast-Exception
Runtime-Exception
异常关键字
error:标识程序中无法识别的错误,一般与JVM有关,出现该类异常JVM将终止当前线程,程序中不应该处理此类异常
exception:标识程序
中可以处理的异常
运行时异常:runtime-Exception,java编译器不会检查它,一般由程序逻辑错误引起,可以处理也可以不处理,虚拟机会自动抛出并捕获
编译时异常:除runtime-Exception外的其它exception异常,编译器会对它进行检查,我们必须添加捕获语句来处理该类异常
try:监听异常代码块,定义在try内部的异常代码将会抛出
catch:捕获异常
finally:总会执行的代码,一般用于释放锁、IO流、链接等资源。必须执行完finally才会执行try或catch内的return语句。若finally中有return,则直接返回
throw:抛出异常,用于代码内部
throws:抛出异常,作用在方法签名上
面向对象
面向对象与面向过程的区别
面向过程:提供具体化、流程化的实现
面向对象:提供模型化、封装化的实现
面向对象的底层还是面向过程,将面向过程进行抽象和封装方便给我们使用就是面向对象了
抽象:将一类对象的共同特性进行总结构造出类的过程,包括属性和行为抽象
面向对象的特性
封装:将对象的属性私有化,并提供可供外部调用的方法
隐藏对象的属性和实现细节
仅提供公共访问方式,隔离变化,提升复用性和安全性
继承:可在已有的类中作为基础构造出新类,新的类拥有父类的功能并扩展出新功能,方便代码复用
子类可继承父类非private的属性和方法
子类可拥有自己的属性和方法,也可对父类进行扩展
子类可以覆写父类方法
多态:指引用和引用发出的方法调用在编译时不确定,而在运行时才能确定
父类或接口的引用可以指向子类或实现类的实例对象
两种方式实现多态:继承、接口
前期与后期绑定
方法的重载:编译时多态,或成为前期绑定
方法的重写:运行时多态,或称后期绑定
三大必要条件
继承或实现:必须存在继承或实现关系的子类或实现类
重写:覆盖父类方法,提供子类自己的实现
向上转型:子类的引用要赋给父类
面向对象的五大基本原则
单一职责原则(SPR):类的功能要单一
开放封闭原则(OCP):对扩展开放,修改关闭
依赖倒置原则(DIP):模块之间应通过依赖抽象,而不应该依赖具体的实现
里氏替换原则(LSP):子类能替换父类出现的任何地方
接口分离原则(ISP):接口应当按照一定的功能进行分开定义
类与接口
抽象类是用来捕捉子类的公用特性,而接口是抽象方法的集合
抽象类是一种对类的设计,是一种模板;而接口是一种行为规范
构造方法的特性:名字与类名相同、完成类的初始化、类对象创建时自动执行,无需调用
静态变量与实例变量:静态变量属于类,在类的加载过程中只会初始化一次;实例变量每次创建类对象都会进行初始化,有多少个类对象就初始化多少次
内部类
静态内部类:与成员方法同级,用static修饰的内部类,可访问外部类的静态变量和方法
局部内部类:定义在方法内部,可访问外部类、方法的所有变量和方法
匿名内部类:继承或实现了抽象类或接口的无命名类,必须要实现父类方法,不能定义静态成员和静态方法
成员内部类:与成员方法同级的类,可访问外部类的所有静态和非静态方法和变量
IO流
分类
流向:输入流和输出流
操作单元:字符流和字节流
角色:节点流和处理流
流类的划分
reader:字符读取
节点流:fileReader、pipedReader、CharArrayReader
处理流:BufferReader、InputStreamReader
writer:字符写入
节点流:fileWriter、pipedWriter、CharArrayWriter
处理流:BufferWriter、OutputStreamWriter、printWriter
InputStream:字节写入
节点流:fileInputStream、pipedInputStream、ByteArrayInputStream
处理流:BufferInputStream、DataInputStream、ObjectInputStream、SequenceIputStream
OutPutStream:字节写入
节点流:fileOutputStream、pipedOutputStream、ByteArrayOutputStream
处理流:BufferOutputStream、DataOutputStream、ObjectOutputStream、PrintOutputStream
BIO、NIO、AIO
BIO:阻塞式IO,就是传统的IO模型,使用简单、并发处理能力低
NIO:非阻塞IO,java.nio提供了Channel、Selector、Buffer抽象,支持面向缓冲、管道操作,多路复用
AIO:NIO的2.0版本,异步非阻塞IO,基于事件和回调机制实现
0 条评论
下一页