【幻化万千戏红尘】qianfeng-JAVA课程结束总结

时间:2021-07-16 10:30:09

 


JAVA知识点:
面向对象:
面向对象是一种思想
编程的指导

封装:
面向对象2大核心:
1、类:描述信息,抽象
格式:[public/abstract/final] class 类名 {
 属性
 构造方法
 方法
}

2、对象:具体的实例
格式:类名 对象[=new 类名([实际参数列表])];

this的用法
1、代指本类对象
2、调用构造方法

方法的参数传递:
1、基本类型:传输的是数据的本身
2、引用类型:传输的是地址

static:静态
1、修饰属性
2、修饰方法
3、修饰代码块
4、修饰内部类

包:
1、package:声明
2、import:导入

继承:
继承:一个类拥有另一个类的属性或方法
构造器不能被继承
父类、超类、基类
子类、派生类
extends

super:用在子类中
1、可以调用父类中的属性或方法
2、可以调用父类中的构造方法


重写:扩展父类中的方法
规则:
1、访问修饰符不能比父类的严格
2、静态、非静态、返回值类型、方法名、形式参数列表相同

重载:相似功能的方法采用同一方法名
规则:
1、方法名相同
2、形式参数列表不同

访问修饰符:
public---->protected--->默认---->private

abstract:抽象
1、修饰方法
2、修饰类
抽象类不一定有抽象方法
有抽象方法的类一定是抽象类

final:最终的
1、修饰变量
2、修饰方法
3、修饰类

接口:由抽象方法和常量组成的

java只能单继承,但是可以多实现

Object类:所有类的祖宗类

==和equals的区别?

开发中优先选择接口其次抽象类

多态:
1、编译时多态
重载
2、运行时多态
重写
对象转型
 1、向上转型:自动,子类---->父类
 2、向下转型:强制,父类----->子类
instanceOf:验证对象是否可以强制转换

内部类:
1、成员内部类
2、匿名内部类
3、静态内部类
4、局部内部类

设计模式:
1、单例模式
2、简单工厂模式
3、装饰者模式

数组:存储一组相同数据类型的数据结构
2大核心:
1、元素的类型
2、数组的长度

2种创建方式
1、静态
2、动态
索引:0~length-1

Arrays:数组工具类
二维数组

异常的处理:
1、try{
 可能引发异常的代码块
}catch(异常类){
对异常的处理
}finally{
一定会执行的代码
}

2、throws

常用类:
日历类Calendar
SimpleDateFormat
String
StringBuilder
Math

集合:动态的存储对象
存储数据时,优先使用数组,其次再使用集合
元素个数不定使用集合

1、Collection<E>:继承迭代器接口,所以可以增强for循环
 1、List<E>:有序,可重复,有索引
  add
  get
  set
  remove
  1、ArrayList<E>:底层数组,新增和删除的效率较低,查询和修改的效率较高
  2、LinkedList<E>:底层双链式,新增和删除效率较高,查询和修改效率较低
 2、Set<E>:无序,不可重复,无索引
  add
  remove
  1、HashSet:效率较高
  元素应该重写hashCode和equals
  2、TreeSet
  元素必须可排序
   
  3、LinkedHashSet
2、Map<K,V>:键值对存储
 put
 get
 1、HashMap
 2、TreeMap

比较器接口:
1、Comparable<T>:自然顺序
2、Comparator<T>:自定义

Collections:集合工具类

流:数据通信的管道
File类:操作文件或目录的类
常用方法:
mkdir
mkdirs
length
getName
renameTo
delete
list
listFiles

FileNameFilter:文件名过滤器接口

递归遍历
递归删除

I/O流:
流是数据通信的管道
数据的来源:
1、文件
2、内存
3、网络
流的分类:
按照流向分:
1、输入流
2、输出流
按照传输单位分:
1、字节流
2、字符流
按照功能分:
1、节点流
2、过滤流

常用的流类:
1、文件流:操作文件的流
4个
2、内存流:操作内存的流
2个
3、缓冲流:提高读写效率
4个
4、转换流:字节和字符之间的转换,指定编码格式---字符流
2个
5、对象流:所有数据类型的写出和读取,序列化和反序列---字节流
2个
6、打印流:支持所有数据类型的输出
2个
7、数据流:基本类型和String的写出和读取
2个
8、随机读取文件类:读取和写入
RandomAccessFile

Serializable接口
序列化接口
transient:暂态的

java中的多线程:
进程:独立的应用程序
线程:程序内部的一条执行路径
多线程开发

线程的创建方式:
1、继承Thread类,重写run方法
2、实现Runnable接口

用户线程和守护线程
默认的线程是用户线程
守护线程会受到对应的用户线程的约束,对应的用户线程销毁的时候也跟着一起销毁

优先级:获取CPU的概率
[1,10]

线程的start和run的区别?

线程的调度:改变线程状态的方法
1、sleep
2、join
3、yield
4、wait
5、notify/notifyAll

线程的生命周期
新建
就绪
运行
阻塞
死亡

线程的安全:
当多个线程操作同一数据源时,有可能会引发数据安全

解决多线程安全:
synchronized:互斥锁关键字
1、修饰代码块:同步代码块
格式:synchronized(Object){
 可能引发安全的代码块
}
2、修饰方法:同步方法
 1、修饰非静态方法:锁的是当前类对象
 2、修饰静态方法:锁的是当前类的Class对象

死锁:当前的线程进入了阻塞互相等待阻塞条件结束

TCP/IP协议:传输控制协议/网际协议
IP
端口号
TCP编程:
ServerSocket
Socket
TCP的特点:
1、面向连接
2、每次传输无大小限制
3、字节流数据交互

SQLite数据库
SQL语句:
1、create
2、alter
3、drop
4、insert
5、update
6、delete
7、select

Http协议:超文本传输协议
请求属性
请求参数

请求方式:
1、GET
不安全,信息敏感
大小有限制
中文乱码
速度快
2、POST
安全
大小无限制
速度慢

常用的Http技术:
1、HttpURLConnection
使用步骤:
1、创建URL对象
2、创建连接对象
3、设置请求信息
4、连接
5、验证状态响应码
6、获取响应结果
7、关闭

2、okHttp
使用步骤:
1、创建客户端对象
2、创建请求内容对象(POST)
3、创建请求对象
4、创建响应对象
5、验证是否成功
6、获取响应内容

XML:可扩展的标记语言
描述数据
XML解析:
1、SAX
使用步骤:
1、根据数据创建类
2、创建DefaultHandler类的子类,并重写
3、解析
 1、创建解析工厂 SAXParseFactory
 2、创建解析器
 3、创建自定义DefaultHandler类的子类的对象
 4、开始解析
 5、获取解析结果
 
2、PULL
使用步骤:
1、根据数据创建类
2、解析
 1、创建解析工厂XmlPullParseFactory
 2、创建解析器
 3、设置解析数据源
 4、开始解析
  1、创建集合存储解析结果
  2、获取初始事件
  3、循环获取事件
事件常量:
0---开始文档
1---结束文档
2---开始标签
3---结束标签
4---文本内容

JSON:字符串的规则
规则:
{}--->对象
[]--->数组
:---->连接属性和值
,---->多个属性或多个元素隔开
""---->属性名称或字符串类型的值

遇到{}就是对象
遇到[]就是数组

解析方式:
1、JSON官方
JSONObject:对象
JSONArray:数组
2、Gson谷歌
Gson类
3、FastJson阿里
JSON工具类

接口回调:
声明接口类型的遍历,通过实现类对象完成实例化
再使用接口变量调用接口中的方法,这就叫接口回调

 

HTML:超文本标记语言
显示数据

固定标签
不区分大小写
嵌套使用

HTML5+CSS3+JavaScript

Servlet:java语言编写运行在服务器上的程序
使用步骤:
1、创建Servlet(Web项目)
2、重写doGet和doPost方法
3、发布


正则表达式:字符串的校验,替换

反射:Class
1、运行时获取类的属性、方法、构造方法、注解
2、执行私有方法或私有属性

注解:为代码添加的注释
Annotation
@interface定义注解
四大元注解:
1、@Target
2、@Retantion