JAVASE
2021-08-19 09:48:13 7 举报
AI智能生成
Java学习笔记
作者其他创作
大纲/内容
Java语言
计算机语言发展史
硬件系统
软件系统
计算机语言
DOS命令
Java的诞生
JAVA SE 基础版
JAVA ME 移动版
主要应用于安卓
JAVA EE 企业版
Java语言特征
简单性 安全性 面向对象 高性能 编译性 解释性 分布式处理 健壮性 开源 跨平台
JDK
开发者工具包
配置环境变量
JRE
运行环境
运行java程序最小的环境
JVM
负责加载.class并运行.class文件
Hello word
Java Hello.java
生成.class文件
IDEA
软件的安转和使用
Java是一种 编译型 解释型语言
基础语法
注释
单行注释
格式: //
多行注释
格式: /**/
文档注释
格式: /** */
javadoc生成帮助文档
标识符
关键字
数据类型
基本数据类型
整数型
byte
1字节
short
2字节
int(默认)
4字节
long
8字节
浮点型
float
4字节
double(默认)
8字节
字符
char
2字节
布尔
boolean
1字节
引用数据类型
类
接口
数组
拓展
ascii 码表
128个字符
utf-8 编码格式
中文编码格式
类型转换
低到高排序: byte,short,char→ int→ long→float→double
自动类型转换
低转高
强制类型转换
高转低
浮点型转整数型
舍弃小数
变量和常量
tybe varName [=value]
作用域
类变量
实例变量
局部变量
常量
final MAX_A =10;
命名规范
1. 见名知意
2. 驼峰命名 (变量 方法)
3. 类首字母大写 (驼峰命名)
4. 常量: 大写+下划线
5. 不要使用拼音命名
运算符
算数运算符
+ - * / % ++ --
赋值运算符
= += -= *= /=
关系(比较)运算符
> < >= <= == != instanceof
逻辑运算符
& && | || !
位运算符
^ ~ >> << >>>
三目运算符
? :
包机制
域名倒写
防止命名冲突
package
import
JavaDoc
JDK帮助文档
javadoc
@author
@version
@since
@param
@return
@throws
流程控制
Scanner
用户交互System.in
顺序结构
程序默认的结构,自上而下执行
选择结构
if 单选择结构
if-else 双选择结构
if-else if-else 多选择结构
switch
jdk支持了String类型
case 穿透现象
break
default
循环结构
while
尽量避免死循环
do while
for
for (int i = 0; i < 100); i++)
九九乘法表
增强for循环
break & continue
break
跳出循环
continue
结束当前循环
return
结束方法的运行
方法
什么是方法!
方法的定义
修饰符 返回值 方法名 (参数名) {return: 返回值;}
方法调用
类名.方法
对象.方法
方法重载
名字相同, 参数列表不同
命令行传参
给main方法传递参数
递归
自己调用自己, 给自己一个出口
数组
数组的定义
new int[5]
{1, 2, 3, 4, 5}
必须是同一个类型
数组的使用
通过下标取值
增强for循环遍历
ArrayIndexoutofBounds
二维数组
int[][]
Arrays工具类
排序算法
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
基数排序
面向对象
什么是面向对象
类与对象
类是对象的抽象: 模板Class
对象是类的具体
构造方法
构造的重载
默认无参构造
如果手动定义了有参构造就必须再手动添加一个无参构造
单例模式, 需要构造器私有!
new对象
栈存放引用
堆存放具体的对象
封装
基本介绍:
封装就是把抽象出来的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作【方法】,才能对数据进行操作。
封装就是把抽象出来的数据【属性】和对数据的操作【方法】封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作【方法】,才能对数据进行操作。
封装的理解和好处
- 隐藏实现细节。
- 可以对数据进行验证,保证安全合理。
属性私有, get, set
继承
extends
Object
子类拥有父类的全部特征
方法重写
this
super
java是单继承,只能继承一个父类
多态
多态基本介绍
方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础上的。
方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础上的。
父类的引用指向子类对象 Person person = new Student();
instanceof关键, 如果匹配, 可以进行类型之间的转换
修饰符
public
protected
private
static
final
abstract
接口
interface
约束, 只能定义方法名
子类实现接口, 必须重写其中的方法
只有一个方法的接口叫做函数式接口, 可以使用lambda表达式简化
接口比抽象类更抽象
一个类可以实现多个接口
内部类
局部内部类
静态内部类
匿名内部类
异常
Throwable
Exception
运行时异常
1/0(除数不能为0)
ClassNotFound
NullPoint
UnKownType
下标越界异常
检查型异常
Error
AWT错误
JVM错误
StackOverFlow
OutOfMemory
异常处理
try{}
catch() {}
先小后大
finally{}
throw
手动抛出异常
throws
方法抛出异常
自定义异常
继承Exception类即可
常用类
Object类
hashcode ()
toString ()
clone ()
getClass ()
notify ()
wait ()
equals ()
Math类
常见的数学运算
Random类
生成随机数
UUID
File类
创建文件
查看文件
修改文件
删除文件
包装类
自动装箱和拆箱
Date类
Date
SimpleDateFormat
yyyy-MM-dd HH:mm:ss
Calender
String类
字符串不可变 final修饰
操作量较少
StringBuffer
可变长, 效率低, 线程安全
多线程数据量较大
StringBuilder
可变长, 效率高, 线程不安全
单线程数据量较大
集合框架
Collection
List(有序可重复)
ArrayList (常用)
add
remove
contains
size
LinkedList (常用)
getFirst()
getLast()
removeFirst()
addFirst()
Vector
Stack
Set(无序不可重复)
HashSet (常用)
TreeSet
Iterator: 迭代器
Map
HashMap
JDK1.8 : hash表=数组+链表+红黑树
TreeMap
Collections 工具类
泛型 <> 约束, 避免类型转换之间的问题
IO流
字节流
输出: OutputStream
输入: InputStream
字符流
Reader
Wirter
节点流
CharArrayReader, Writer, InputStream, OutputStream
StringReader, Writer
pipe (管道流), PipedOutputStream
File
处理流
butter
bufferInputStream
bufferOutputStream
bufferReader
bufferWriter
序列化
反序列化
Serializable
transient (透明的)
data
DataInputStream
DataOutputStream
object流
转换流
InputstreamReader
OutputStreamWriter
Filter
四个
Print
PrintWriter
PrintStream
多线程
进程和线程
run (), Start ()
线程创建的方式
Thread
start0, 本地方法: java无权调用, 交给底层的c处理
private native void start0();
Runnable
函数式接口
lambda 表达式
Callable
可以有返回值
静态代理
new Thread(Runnable).start();
Lambda 表达式
函数式编程
避免内部类定义过多
new Thread(()->{
System.out.printIn();
}).start();
System.out.printIn();
}).start();
线程的状态
新建
就绪
运行
阻塞
对象锁阻塞
等待阻塞
其他阻塞
终止
常用的方法
sleep
join
yield
isLive
start
setPriority
interrupt
线程同步
多个对象操作同一个资源, 并发
队列 + 锁
悲观锁
每次对某资源进行操作时,都会持有一个独占的锁
乐观锁
它不需要持有锁,将”比较-替换”这两个动作作为一个原子操作尝试去修改内存中的变量
Synchronized
同步方法
弊端: 锁太多
同步代码快(常用)
第一个线程拿到锁, 后面的就要排队了, 直到这个人释放锁, 后面拿到锁才能进去
死锁: 两个进程都抱着对方的锁
互斥
请求与保持
不剥夺条件
循环等待条件
Lock (优先级高)
ReentrantLock
lock
trylock
unlock
线程通信
缓冲区: 消息队列
标志位: 红绿灯
wait () :
notifyAll () :
线程池
池化技术
池的大小
最大连接数
保持时间
注解与反射
注解
元注解
JDK内置注解
自定义注解
反射读取注解
反射
Class
newInstance();
类加载机制
Method
invoke
存在重载, 也需要写参数的类型
Field
set
Construct
newInstance();
获取的时候需要, 传递参数的class类型
破坏私有关键字
setAccessible(true);
性能分析
正常> 检测关闭的反射> 默认的反射
反射获得注解, 泛型
Stream
ForkJoin
效率对比
网络编程
IP
端口
Socket编程
TCP
三次握手
四次挥手
面向连接
UDP
无连接
Packet
URL
初始Tomcat
聊天通信
文件上传
设计模式(23种)
创建型模式
单例模式(常用)
懒汉式
饿汉式
原型模式
建造者模式
工厂方法模式
抽象工厂模式
结构型模式
装饰模式
组合模式
桥接模式
外观模式
亨元模式
代理模式
适配器模式
行为型模式
模板模式
状态模式
策略模式
命令模式
访问者模式
观察者模式
中介者模式
责任链模式
备忘录模式
迭代器模式
解释器模式
0 条评论
下一页