完成任务后, 您可以点击图标, 修改为已完成.
命名规则
驼峰命名法
单行注释 // 注释文字
多行注释 /注释文字/
文档注释 /*注释文字/
整数常量
小数常量
字符常量
字符串常量
布尔常量
空常量
二进制
八进制
十进制
十六进制
十进制->二进制
二进制->十进制
十进制->任何进制
任何进制->十进制
八进制->二进制
二进制->八进制
十六进制->二进制
二进制->十六进制
基本数据类型
数值型
整数型
字节型 byte
短整型 short
整型 int
长整型 long
浮点型
单精度 float
双精度 double
8个字节
大概-10308~10308
Java中,小数默认为double
注意:科学计数法
注意:Java中的数值型都是有符号
字符型
char
布尔型
boolean
引用数据类型
隐式转换
显式转换
算术
整数运算完成之后的结果一定是整数
小的类型和大的类型运算,结果应该是大的类型
byte/short/char在运算之后的结果自动提升为int
对于小数而言,运算结果是不精确
除以0
取余运算的结果的符号看的是%左边的数字的符号
++/–
赋值
关系
逻辑
& | ! ^ && ||
^的运算规则:相同为假,不同为真
&&和||的短路特性
位
& | ^ << >> >>> ~
针对的整数的补码进行运算,那么运算结果也一定是补码
数据在计算机中是以补码形式存在
任何一个数据都有原码、反码、补码形式
& | ^:将数据转化为补码之后进行按位运算
&: 0&a=0 a&1=1或0
|: 0|a=a
:aa=0 0^a=a abb=a
交换值
追尾法
加减法
亦或法
<<:在一定范围内,左移几位就是乘以2的几次方
:在一定范围内,右移几位就是除以2的几次方
:无论正负,空出的最高位一律补0
实际上移动的(位数%32)
:i = -i-1
三元
运算符的优先级:一元>二元>三元>赋值
顺序结构
分支结构
判断结构
if
if-else
if-else if
选择结构
switch-case
循环结构
while
do-while
for
循环的要素:定义循环变量,控制循环条件,改变循环变量
注意:循环的嵌套
break和continue
格式
数组的内存
数组的应用
获取数组的元素
获取数组的长度
遍历数组
获取最值
数组元素的排序
冒泡排序
选择排序
Arrays.sort
元素的查找
元素无序—遍历
元素有序—二分查找
数组的反转
数组的复制
System.arraycopy(原数组, 复制的起始位置, 目标数组, 存放的起始位置, 复制的元素的个数);
Arrays.copyOf(原数组, 变化之后的长度);
时间复杂度:程序中必然会执行的代码的执行时间认为是单位1,执行这个单位1所需要的次数
空间复杂度:程序执行过程中,额外开辟的内存空间
格式
二维数组的内存
格式
意义
方法的传参
方法的重载
方法的重写
方法的递归
定义位置
作用范围
内存位置
生命周期
代表当前在活动的对象的引用,可以认为是一个虚拟对象
用于在本类中调用本类中的非静态方法和非静态属性
this语句
局部代码块
构造代码块
封装
体现形式:方法、属性的私有化、内部类
优势
继承
类用extends来继承另一个类
类和类之间是单继承
单继承和多继承的比较
通过继承,子类可以继承父类所有的方法和属性,但是子类只能使用父类中的一部分方法和属性
意义
多态
根据时期
编译时多态
运行时多态
向上造型
方法的重写
基于继承
根据形式
行为多态
对象多态
意义
在子类中代表父类对象的引用
在子类中调用父类中的方法和属性
在创建子类对象的时候必然先创建父类对象
super语句
public
protected
默认
private
在子类中使用的时候,使用哪个子类对象,就必须是在对应的子类中使用
静态变量
静态方法
静态代码块
在类中用static{}包起来的代码
在类第一次被真正使用的时候执行一次
执行顺序
静态内部类
常量
对于基本类型,指的是实际值不可变
对于引用类型,指的是地址不可变,属性值可以改变
成员常量
静态常量
最终方法
最终类
抽象类
抽象方法
方法内部类
成员内部类
静态内部类
匿名内部类
是java中的顶级父类
任何一个对象都可以用Object对象来接住
重要方法
用于指定规则的类
匹配格式
预定义字符
数量词
=1
= 0
捕获组
对于每种基本类型都提供了对应的类形式
注意:所有的数值型的包装类都有一个对应父类是Number
所有的数值型以及Boolean都提供了将字符串转化为对应的类型的方法
所有的包装类对象的哈希码是固定不变的
自动封箱拆箱
Math
BigDecimal
BigInteger
Date
表示日期的类
提供了大量的方法,但是大部分已过时
掌握字符串和日期之间的转换:SimpleDateFormat
Calendar
是java中一套用于问题的反馈和处理的机制
Throwable
Error
Exception
编译时异常(已检查异常)
运行时异常(未检查异常)
自定义异常
异常的处理方式
继续向上抛出-在方法中用throw抛出该异常对象,在方法签名上利用throws来生命
进行捕获处理
finally
是Java中用于存储多个数据的容器,该容器的大小是不固定
顶级接口Collection
列表List
保证元素的存储顺序,允许存储重复元素
顺序表ArrayList
链表LinkedList
向量Vector
底层基于数组
默认初始容量是10
默认增加一倍,底层是基于三元运算
内存空间连续
增删相对复杂,查询相对简单
线程安全
栈Stack
散列集合Set
元素不可重复,底层存储是无序的
HashSet
底层基于哈希码来存储元素
不保证元素存入顺序
底层基于HashMap存储
线程不安全
LinkedHashSet
TreeSet
队列Queue
Comparable
Comparator
Iterable
Iterator
Enumeration
顶级接口Map
HashMap
Hashtable
不允许键或者值为null
默认初始容量是11
默认加载因子是0.75f
同步式线程安全
Properties
是一个可以持久化的映射
键和值默认是String
可以store方法存储到硬盘上
可以通过load方法反持久化回来
键不可重复
每一个键对应一个值 - 键值对
Map.Entry:代表键值对的接口
遍历映射的方式
是java中一套用于数据传输的机制
传输方向
传输形式
四个基本流
InputStream
OutputStream
Reader
InputStreamReader
BufferedReader
Writer
OutputStreamWriter
BufferedWriter
PrintWriter
来源/目的地
流的异常处理
序列化/反序列化
序列化:将对象转化为字节数组的过程
反序列化:将字节数组转化为对象的过程
注意问题
进程
顶级父类Thread
定义线程
线程并发安全
多个线程同时执行,由于线程之间的执行是相互抢占并且抢占是发生在线程执行的每一步,所以会导致出现不符合实际的情况
synchronized
同步代码块
需要锁对象
同步
异步
同步方法
死锁
等待唤醒
线程的状态
创建
就绪
执行/活跃
挂起/阻塞
结束/消亡
状态转化
守护线程
线程的优先级
用于网络进行通信的机制
UDP
不建立连接
不可靠
传输速率相对较快
会对数据进行封包,每个包不超过64KB
DatagramSocket:用于发送端和接收端
发送端
接收端
DatagramPacket:数据包
TCP
建立连接
可靠
三次握手
传输速率相对较慢
不封包,理论上不限制数据大小
客户端Socket
服务器端ServerSocket
自动封箱拆箱
自动封箱
自动拆箱
增强for循环
泛型
参数化类型-ParameterizedType
泛型的擦除
自定义泛型
泛型的边界
上限
下限
静态导入
可变参数
枚举
反射
获取类的字节码,从而分析类的信息
获取Class的方式
Class
Field
Method
Constructor
Package
Annotation
动态代理
注解
顶级父类Annotation
用@interface定义
属性:数据类型 属性名() default 默认值
可以使用的数据类型
在赋值的时候如果属性名为value并且只有一个属性,那么在赋值的时候可以省略名称
元注解
@Target
@Retention
@Documented
@Inherited
内省
存储对象
划分
新生代
老生代
所有线程共享的
存储类信息
划分
静态常量池
运行时常量池
所有线程所共享