公共基础语言(Java)
2019-08-12 16:56:13 0 举报
AI智能生成
初次学习java,知识点总结
作者其他创作
大纲/内容
关键字
四个访问权限关键字
public
private
default
protected
this关键字
在什么时候需要用到this关键字
需要明确指出对当前对象的引用时
将当前对象传递给其他方法时
三个应用
static静态关键字
特点
注意事项
尽量使用 类名.属性名 使用
修饰对象
类方法
静态方法
优先级
static优先于对象创建
静态>main>{}构造块>构造方法
常见static试题
静态初始化
静态变量与非静态变量区别
非static变量及方法可以访问static变量和方法
static变量及方法不能访问非static的
静态变量与成员变量的区别
静态的使用场景
用静态代替构造方法的好处
final关键字
修饰的变量即常量
方法不能被重写
修饰的类不能被继承
面向过程
面向对像
类和对象的概念
如何定义类
如何创建对象
属性(成员变量)
方法(局部变量)
构造方法(构造器)
构造方法重载
特点
方法与类名一致
不能声明返回值类型
声明在类内部
封装
定义
优点
功能
set get方法
继承
extends
特点
构造器不能被继承
子类构造方法有参时一定要调用父类构造器
即构造方法里先写super()
方法重写
重写的规则
重写与重载的区别
多态
传值
void method(int a)
传址
引用传递
数组
数组在堆里
运行时技术
赋值多态
A a = new B()
工厂模式
传参多态
public void foo(A a)
多态存在的必要条件
继承
重写
父类的引用指向子类的对象
使用场景
接口interface
接口没有构造方法
全部都是抽象的
必须有普通方法 必须用default修饰
常量
面向对象的特征
抽象
抽象类
abstract
抽象方法
接口的概念
定义行为,便于扩展
如何定义接口
枚举
集合
Collection
List线性表
有序
ArrayList
顺序查询→乱序查询 + 追加元素→插入元素-
线性结构 线程不安全,效率高
Collection(list)
排序方法
LinkedList
顺序查询→乱序查询 - 追加元素→插入元素+
无序,增删效率高
有下标
可利用get(下标)取值
可重复
vector
线程安全,效率低
Set视图
不可重复,无序
无下标
遍历方法
普通for循环
for each循环
迭代器:set.iterator
HashSet
基于哈希散列表
无序,不可重复
TreeSet
红黑树
有序
接口可以被继承
类可以被继承
Map队列
Map类型具有唯一性
HashMap
基于哈希散列表
key_value形式存放
TreeMap
二叉树
遍历方式
迭代器
分别获取key和value
利用KeySet()
查询全部key
根据key获取value
利用entrySet()
getKey() getValue()
异常
错误error
错误是不可处理的
异常exception
运行时异常
运行时出现的意外情况
检查异常
受外部影响
编译时异常
一般是语法错误
IO流
File
文件本身
文件夹
文件是磁盘上的
流
流是内存中的
方向
in/输入流
out/输出流
类别
字节流
InpuStream/OutputStream
抽象类
InputStream in = new FileInputStream(file_hello)
in.read(): 读出文件,返回int,返回ASCII码
!= -1
不等于-1则继续往下读
byte[] data = new byte[in.available()]
in.read(data)
for-each输出
String result = new String(data)
in.available()
返回可读字节数
readlimit
读取进度
OutputStream out = new FileOutputStream()
out.write(data): 写出文件
out.flush(): 清空缓冲器
apache_common-io
/fileupload
java字节流 每次从文件中读取字节
字符流
字符流 每次从文件中读取单个字节
输入流
reader
FileReader
输出流
writer
FileWriter
可追加内容
缓冲流
输入流
BufferReader
一行行读
输出流
BufferWriter
一行行写
file_hello.exists()
exists:判断是否存在
file_hello.isFile
isFile:判断是否是文件
线程
进程
每个进程都有独立的代码和数据空间(进程上下文),进程间切换开销大,一个进程包含1~n个线程
进程是资源分配的最小单位
线程
同一类线程共享代码和数据空间,每个线程有独立运行栈和pc程序计数器,切换开销小
线程是cpu调度的最小单位
线程的实现
1.继承Thread类
2.实现Runnable接口
实现Runnable接口比继承thread类具有的优势
1.适合多个相同的程序代码的线程去处理同一个资源
2.避免java中单继承的限制
3.增加程序的健壮性,代码可被多个线程共享,代码和数据独立
4.线程池只能放入实现Runnable或callable类线程,不能直接放入继承Thread类
3.实现Callable接口并与Future,线程池结合使用
线程状态转换
1.新建状态New
新创建了一个线程对象
2.就绪状态Runnable
线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中,等待获取cpu的使用权
3.运行状态Running
就绪状态的线程获取了CPU,执行程序代码
4.阻塞状态Blocked
线程因为某些原因放弃CPU使用权,暂时停止运行
阻塞的情况
等待阻塞
同步阻塞
其他阻塞
5.死亡状态Dead
线程执行完了或因其他异常推出了Run()方法,该线程结束生命周期
线程调度
分时调度
所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间
抢占式调度
根据线程的优先级别来获取CPU使用权。JVM的线程调度采用了抢占式模式
String类 不可变
String池
a = new String()
存放在堆栈中
a = " "
存放在常量池中
String a = new String
字符串只能重新指向,不能变
final
不可重写,不可继承
char[ ]
数组是连续空间
StringBuilder/StringBuffer
StringBuilder
char[] 线程不安全,效率高
可变字符串
StringBuffer
线程安全,效率低
api
append
insert
delete
Integer
int a = 1,b = 1
true
int a = -129,b = -129
false
范围:-128~127
自动装箱与拆箱
将int转为Integer
int型数据能够装入只接收Integer的容器中
int的默认值为0,而Integer的默认值为null,在使用Integer前需要初始化
递归方法
自己调用自己
容易造成内存溢出
应用
求阶乘
求斐波那契数列
java常用设计模式
单例模式
工厂模式
装饰者模式
代理模式
前置内容
环境搭建
jdk
环境变量
命名规则和规范
标识符
变量
数据类型
基本数据类型
整数型
byte
short
int
long
浮点型
float
double
char型
boolean布尔型
引用数据类型
数组
类
接口
类型转换
特例
强制转换
自动转换
运算符
赋值运算符
算术运算符
比较运算符
三目运算符
拓展运算符
字符连接符
位运算
逻辑运算
数组
初始化
动态初始化
静态初始化
操作
排序
冒泡排序
选择排序
插入排序
堆排序
希尔排序
快速排序
归并排序
基数排序
遍历
求值
搜索
赋值
优缺点
获取长度
多维数组
拷贝
方法
方法的定义
方法名
返回值参数
参数列表
如何调用方法
方法递归
方法重载
常用的方法
输入
随机数
数组的操作
流程控制语句
分支语句
if else
switch case
循环语句
for循环
for each
while
do while
泛型
泛型方法
泛型类
Api
System
构造函数
private
成员变量
三个流
in
out
err
静态方法
arraycopy:复制数组
currentTimeMillis:获取时间的毫秒表现形式
Array
全是操作数据相关的静态方法
基本数据类型包装类
Integer
Long
Byte
Short
Float
Double
Character
Boolean
此处符号含义
+ 表示效率相比更高
- 效率更低
→ 大家都一样
收藏
收藏
0 条评论
下一页