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