JavaSE
2021-01-20 09:29:18 0 举报
AI智能生成
javaSE知识点总结
作者其他创作
大纲/内容
java基础语法知识
关键名词
jdk
jre
jvm
java历史
jdk7或者jdk8
helloworld
标识符
给类、变量、方法等起的名称
规则
首字母可以是字母、下划线、美元符号,但是不能是数字
其他部分只能是字母、下划线、数字、美元符号
java严格区分大小写
java驼峰标示和见名知意
保留字(关键字)
留给系统使用的关键字
运算符
算术运算符
比较运算符
赋值运算符
逻辑运算符
三目运算符
位运算符
注意:各个运算符的优先级
数据类型
基本数据类型
整型
byte
short
int
long
浮点型
float
double
字符型
char
布尔型
true或者false
只占1位
引用数据类型
String
数组
对象
接口
流程控制语句
顺序结构
代码从上向下依次执行
分支结构
if
if...else
if..else if ...else
switch
循环结构
do ..while
while
for
增强for循环
流程控制的语法规则
break
跳出当前循环
continue
跳出本次循环
return
1、返回结果值
2、如果后面没有参数,返回值,则表示结束程序
oop-面向对象
编程思想
面向过程编程
面向对象编程
面向接口编程
面向切面编程
函数式编程思想
类和对象
类是对象的抽象,对象是类的实例化
如何创建对应的对象
构造器
定义好一个类之后,会有默认的无参构造方法,如果自己添加了构造方法,则无参构造方法失效
注意:每次写具体的类的时候,一定要写上无参构造方法
this
指代当前对象
用途
可以在构造方法中使用,区分参数和成员属性
在普通方法中使用,表示调用当前的属性或者当前类的方法,可以省略
static
表示静态
用途
可以定义在属性上,被所有的对象共享
可以定义在方法上,可以通过类名直接调用
可以定义在类上,但是是内部类
final
表示最终的
用途
定义在类上,表示类不可以被继承
定义在方法上,表示方法不能被重写
定义在属性上,表示值不可以被修改
package
打包:区分同名的文件,分布在不同的目录
将不同的功能代码整合到一起
静态导包
使用类中的某些方法的时候不在需要写类名,直接调用方法即可
import
导包
方便引用其他包的java类
或者第三方的组件
访问修饰符
规定方法、类等的访问范围
分类
private
只能在本类中使用
default
只能在本类和本包中使用
protected
只能在本类、本包、继承的子类中使用、
public
任意地方都可以被访问
方法的重载
在同一个类中,定义了多个同名的方法
重载有三种展示形式
参数列表的个数不同
参数列表的类型不同
参数列表的顺序不同
封装
广义的封装
在代码中可以将某个代码块变成方法,抽象出某些工具类
狭义的封装
特点
1、将属性设置成私有,不能被外部直接访问
2、提供共有的set和get方法,使外部可以进行调用
3、可以实现更加复杂细致的内部逻辑判断
总结:保护类的内部实现细节,只提供公共的对外访问接口,保护类的安全
继承
解释说明
子类可以拥有父类的某些属性和方法,但是私有的除外
java中式严格意义上的单继承
使用extends关键字来实现继承
重写
当父类中的某些方法不能满足子类的需要的时候,子类可以重写父类的方法,要求跟父类的方法名称一致
子类方法的访问修饰符>父类的访问修饰符
建议添加@override注解,在编译时提示错误
super
表示的是父类的对象
在创建对象的时候,可以在子类中直接通过super关键字调用父类的构造方法
在子类方法中可以使用super.的方法调用父类的方法和属性
多态
通俗解释;对于同一个指令,不同的对象给予的不同反应
前提
1、必须有继承关系
2、子类必须重写父类方法
3、父类引用指向子类对象
父类和子类对象的转换
由子类到父类,自动转换
由父类到子类,强制转换,一般通过instanceof进行判断
接口
接口代表一种能力
接口代表一种规范
接口可以在一定程度上实现java的多继承
接口中的方法都是public abstract这样的访问修饰符,不能包含具体的方法实现
子类如果实现了某个接口,那么接口中的所有方法都要被重写,且实现具体的逻辑,如果没有实现的话,那么子类要么是子接口要么是抽象类
接口中的属性都是常量值
抽象类
抽象类跟接口类似,可以定义抽象方法,也可以包含具体的实现
抽象类和抽象方法需要使用abstract关键字来进行修饰
抽象类的子类必须重写抽象类中的抽象方法,如果不重写的话,那么该子类也会成为一个抽象类
内部类
静态内部类
方法内部类
匿名内部类
使用最多,形式上像是new 接口,但是只适合于该接口只使用一次的应用场景
成员内部类
异常
表示程序在运行过程中出现的非正常情况,编写代码的过程中尽可能少的减少异常出现的情况
分类
Throwable
Error
代码级别无法解决的异常情况
Exception
运行时异常
在程序运行过程中,由于输入的参数值的不同,可能会发生也可能不会发生
checked异常
编译时异常,在ide中会显示的检查出来
异常的处理
捕获异常
try...catch...
try...catch...finally
在进行异常捕获的时候,return语句的不同位置会造成结果的不同
抛出异常
throws
将异常情况抛出给调用者
注意,如果整个程序的运行过程中都没有异常的处理的话,最终异常会抛给jvm,不太友好,一般都要对异常进行处理
自定义异常
java中提供了非常多的异常类,但是在某些项目中需要自己定义独特的异常处理方式,此时需要自定义异常
步骤
1、继承Exception
2、编写构造方法,可以传入自己想打印的异常信息
3、调用的时候通过throw向外抛出异常
常用类
表示的是一些在程序编写过程中经常用到的类,可以进行提取,变成工具类
分类
包装类
基本数据类型都由对应的包装类
int
Integer
byte
Byte
...
...
自动拆箱和自动装箱
String
不可变字符串
String
可变字符串
StringBuffer
StringBuilder
Date
使用比较少,一般用于获取当前时间及当前时间的毫秒值
Calendar
日历类
非常好用
返回格林威治时间
Math
数学类
枚举类
enum
枚举类也是一个类,可以定义属性和方法,甚至可以写构造方法,填写具体的枚举类对象的时候,可以带参数,但是要跟构造方法进行匹配
File
对当前文件系统进行操作的类
集合
一组相同类型的数据的集合,可以使用不同的数据结构来存储数据
分类
数组
数据的类型必须是一致的
数组必须在声明的时候显示的给出长度
数组在插入和删除的时候,频繁的移动元素,效率比较低
数组在查找元素的时候可以按照下标查找
注意:排序方法问的相当多
Collection
List:有序不唯一
ArrayList
Vector
LinkedList
Set:无序唯一
HashSet
TreeSet
Map:键值对的数据
HashMap
扩展知识:ConcurrentHashmap
hashtable
TreeMap
泛型
结合框架中可以使用不同类型的数据进行存储,但是某些方法无法使用,因此提出泛型的概念,来强制约束对应的结合处理类,保证处理的集合都是同一个数据类型
泛型类
泛型接口
泛型方法
高阶应用
泛型的上限
泛型的下限
io
处理数据的读取和写出,不止是文件,还包含网络数据的处理
分类
按照字节字符分
字节流
字符流
按照输入输出分
输入流
输出流
按照流是否嵌套
节点流
处理流
详细子类
InputStream
OutputStream
FileInputStream
FileOutputStream
Reader
Writer
FileReader
FileWriter
BufferedInputstream
BufferedOutputStream
BufferedReader
BufferedWriter
ByteArrayInputStream
ByteArrayOutputStream
InputStreamReader
OutputStreamWriter
DataInputStream
DataOutputStream
ObjectInputStream
ObjectOutputStream
PrintStream
System.in
System.out
注意事项
1、创建流之后相当于源数据和目的数据上建议连接,需要占用一定的系统资源
2、每次使用完流之后一定要进行关闭操作
3、字节流是万能的,可以输入输出任意类型的数据
4、在处理纯文本文件的时候可以使用字符流
线程
核心概念
程序
进程
线程
线程的创建方式
继承Thread类
要在run方法中填写具体的代码逻辑
实现Runnable接口
要在run方法中填写具体的代码逻辑
线程的运行
不要直接调用run方法,而需要使用Thread类的start方法才能够启动线程,直接调用run相当于就是一次普通的方法调用
线程的生命周期
新生状态
只是创建了一个线程,并没有启动
就绪状态
等待cpu的调度执行
运行状态
在规定的时间片之内运行代码逻辑
死亡状态
线程正常结构
stop强制结束
异常情况
阻塞状态
sleep
join
等待io设备
线程安全问题
使用同步代码块
需要锁定一个监视器对象,也就是共享资源
使用同步方法
死锁
两个线程分别占用一份资源,同时又想占用对方的资源,但是两方谁也不先释放资源
生产者和消费者的问题
高阶知识:线程池
池化技术:频繁的创建和销毁线程比较浪费时间,因此可以将线程放到线程池中,需要的时候直接获取即可,省去创建和销毁的时间,通过可以更加方法的管理线程
分类
newCachedThreadPool
newFixedThreadPool
newSingleThreadPool
newSingleThreadScheduledExecutor
newScheduledThreadPool
ForkJoinPool
newWorkStealingPool
ExecutorThreadPool:创建线程池
参数列表
核心线程数
最大线程数
存货时间
时间单位
任务队列
blockingqueue
线程工厂
拒绝策略
executor方法的执行
execute和submmit方法的区别
线程池的核心执行流程
线程池的生命周期
running
shutdown
stop
tidying
terminated
网络
网络三要素
ip地址
端口
通讯协议
InetAddress类的api处理
网络模型
OSI
开放互联参考模型
7层协议
tcp/ip
四层的通讯协议
TCP
稳定的连接,必须要经过三次握手以及四次分手
安全,传输的数据报比较大
UDP
不需要稳定的连接,直接发送,不用管对方是否接受
不安全,传输的内容比较少
网络编程
TCP
Socket
套接字
ServerSocket
开发服务端的端口等待连接
UDP
DatagramSocket
DatagramPacket
lambda表达式
0 条评论
下一页