java基础+注解笔记【狂神说java】
基础部分–总结
基础包的命名
//一般为域名倒置
page com.yang.base
基础语法
类和方法
根据不同的写法–大小写的差异可以判别是类对象还是方法名
类的首字母都要大写,方法首字母小写==可以理解为,类对象是class,方法是函数
类对象
方法
使用类对象都是先
new StringBuffer();
所有java程序的入口
public static void main(String[] args)
//所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
//参数是必须的
修饰符
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final, abstract, static, synchronized
Java 变量
Java 中主要有如下几种类型的变量
- 局部变量
- 类变量(静态变量)
- 成员变量(非静态变量
注释
//单行注释
/*
*多行注释每行还多一个*号
*/
对象和类
类
类可以说是一个模板
狗这个对象,
- 有眼睛有鼻子-属性
- 可以叫,可以吃饭-方法
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。–类里面局部使用
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。–类里面全局使用
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
面向对象
修饰符
接口-interface
接口比抽象类更抽象
一个继承,多个接口
内部类
局部内部类
静态内部类
匿名内部类(重点)
异常
throwable
-
Exception=异常
-
Error
-
JWT错误
-
JVM错误
- StackOverFlow=栈溢出
- OutofMemory=内存溢出
-
五个关键字
-
try{}
-
catch{}{}(先小后大)
-
final
-
throw(内部手动抛出异常)
-
throws(方法抛出异常)
自定义异常
- 继承Exception类即可
常用类
- Object类
- hashcode()
- toString()
- clone()
- getClass()
- notify()
- wait()
- equals()
- Math类
- 常见数学运算
- Random类
- 生成随机数
- UUID
- 生成随机数
- File类
- 创建文件
- 查看文件
- 修改文件
- 删除文件
- 包装类
- 自动装箱和拆箱
- Date类
- Date
- SimpleDateFormat
- yyyy-mm-dd hh:mm:ss
- Calendar(建议使用)
- String类
- 不可变性-final
- 操作量较少
- 不可变性-final
- StringBuffer
- 可变长
- append()
- 多线程数据量较大
- 效率低安全
- 可变长
- StringBuilder
- 可变长
- 按照单线程数据量较小
- 效率高,不安全
集合框架
Collection
-
List=有序可重复
-
ArrayLIst(常用)
-
add
-
remove
-
contains
-
size
联系到Iterator
-
-
LinkList(常用)
- GetFirst()
- Getlist()
- removerFirst()
-
-
Set=无须不可重复
-
Vector
-
Stack
Map
- HashMap(重点,天天用)
- jdk1.7是:数组+链表
- jdk1.8是:hash表=数组+链表+红黑树
- TreeMap
Collection工具类
泛型
- 约束,避免类型转换之间的问题
I/O流
字节
-
输入-InputStream
-
输出-OutputStream
字节流
- CharArrayReader,Writer,inputStream,outputStream
- StringReader,StringWriter
- Pipe(管道流)Inputstream
- 文件流File
字符流
- Writer
- Reader
处理流
- buffer–搭配字节和字节流则有8个
- bufferInputStream
- bufferOutputstream
- filter–4个
- converting:inputstreamReader,OW,
- Object:
- Data
- DataInputStream()
- DataOutputStream()
- Print
- PrintWriter
- PrintStream
- 转换流
- inputStreamReader
- OutputStreamWriter
- 序列化
- 反序列化
多线程
进程和线程
run(),Start()
线程创建的方式
- Thread
- start0,本地方法:java无权调用,交给底层的处理
- private native void start0();
- start0,本地方法:java无权调用,交给底层的处理
- Runable
- 函数式接口
- lambda
- 函数式接口
- Callable
- 可以有返回值
代理模式
- new Thread(Runable).start();
lambda表达式
-
函数式编程
-
避免内部类定义过多
new Thread(()->{ System.out.println(""); }).start();
-
线程的状态
- 新建状态
- 就绪
- 运行
- 阻塞
- 死亡
常用方法
-
sleep
-
join
-
yield
-
start
-
isLive
-
setPriority
-
interupt
线程同步
- 多个对象操作同一个资源,开发
- 队列+锁
- Syschronized
- 同步方法
- 同步代码块(常用方法!)
- 第一个线程进来拿到锁,后面就要排队了,直到锁释放
- 死锁:两个人都抱着对方需要的锁
- 互斥
- 请求与保持
- 不剥夺条件
- 循环等待条件
- lock(优先级高)>同步代码块儿>大于同步方法
- ReentrantLock
- lock
- unlock
- rrylock
- ReentrantLock
线程通信
- 缓冲区:消息队列
- 标志位:红绿灯
- wait();-
- notifyAll();-唤醒
线程池(pool)
- 池化技术
- 池的大小
- 最大连接数
- 保持时间
- …
- Excutors.TreadPoolExecuter();
网络编程
ip
端口
Scoket编程
Tcp
- 三次握手
- 四次挥手
- 面向连接
Udp
- 无连接
- Packet
URl
初识Tomcat
聊天通信
文件上传
GUI(可选)
AWT
- Frame
- 监听事件
- 鼠标
- 键盘
- 窗口
- 文本框
- 动作时间
Swing
- 文本框
- 标签1
- 按钮
- 文本域
- 面板
- 布局方式
- 关闭窗口
- 列表
贪吃蛇
- Timer
- 键盘监听
- 有戏帧的概念
注解和反射
- 注解
- 元注解
- 内置注解
- 自定义注解
- 反射读取注解
- 反射
- Class
- newinsatance
- 类加载机制
- Method
- inboke(user3,”杨龙伟3”)
- 存在重载,也需要写参数的类型1
- Filed
- set(user4,”杨龙伟4”)
- Construct
- nreinstance();
- 获取的时候需要传递参数的class类型
- 破坏私有关键字
- setAccessible(true);
- 性能分析
- 正常>检测关闭的反射>默认的反射
- 反射获取注解,泛型
- 单例模式的探究
- Stream
- ForkJoin
- 效率对比
- Class
注解
内置注解
- @Override
重写方法
- Deprecated
方法即将废弃的提示
- @SupperssWarning(“all”)
警告镇压(要是报错,写了这个就不报错了)
元注解
@Target
描述注解的使用范围
@Retention
定义注解(源码里面都有)
@Target
//
@Interface MyAnnotation{}