day006-01JAVASE小总结Summary
-
//行内注释 /***/ 多行注释
-
/** */ 文档注释 javadoc
-
基本数据类型
-
byte 1 字节 short 2个字节 int 4个个字节 long 8个字节 float 4个字节 double8个字节 char 2个字节 boolean 1位 \b退回 \n 换行 \r \t 回车 转义 \\ \ '' 0b二进制 0x 16禁止 0 8进制
-
-
引用数据类型
-
类
-
接口
-
数组
-
-
类型转换
-
自动类型转换 低转高
-
强制类型转换 高转低 金融计算中不能用double会丢失 用BigDecimal
-
-
变量和常量
-
type varName = value;
-
变量有类变量static 实例变量 局部变量 方法中的
-
常量 final MA = 11;
-
命名规范:见名知意,驼峰
-
运算符,!&& || ?:
-
包机制 域名反写 防止命名冲突 package import
-
JavaDoc @Author @Version @Since @Param
-
-
流程控制
-
Scanner 程序用户交互关键字
-
顺序结构 自上而下顺序执行
-
选择 if if else if else if swithc case 记得加break 不然会case穿透 continue 跳过 (可以带标签)
-
循环 while do while for for each
-
-
方法
-
public type methodName(paramType param){ methodBody}
-
class.method obj.method
-
方法重载 方法名相同参数列表不同
-
命令行传参 java Hello aaa bbb cccc打印出args
-
...可变长传参数 必须放在参数的最后一位
-
递归 自己调用自己 最后一侧执行的条件满足跳出循环
-
-
数组(一种数据结构)
-
int [] ia = new int[3];必须同一个类型
-
数组通过index拿到元素值
-
异常 ArrayIndexOutOfBounds for 循环遍历一个数组
-
二维数组 int
-
Arrays sort升序
-
排序 冒泡排序 选择排序 插入排序 快速排序 归并排序 堆排序 基数排序
-
-
面向对象
-
什么是面向对象 OOP万物皆对象
-
类是模板class 对象的抽象 对象是类的具体表现
-
构造方法super默认无参 构造重载 如果写了有参构造必须把无参写出来 单例模式构造器私有
-
new 对象 栈中放引用 堆中放对象
-
封装get set 继承extends obj为所有类的父类 多态this super 父类的引用指向子类对象 instanceof 检测有无父子关系
-
Person per = new Teacher
-
public protected private static abstract final修饰符
-
接口 interface 约束只能定义方法名 及参数列表,实现类必须实现其中方法 接口比抽象类更抽象 不能有实现
-
java是单继承只能extends一个父类,可以实现多个接口
-
局部内部类 静态内部类 匿名内部类
-
-
Throwable
-
Exception 运行时异常,检查型异常
-
1/0 ClassNotFound UnKnowType arrayindexoutofbounds 运行异常
-
Error JVM错误 StackOverFlow递归栈溢出 OutofMemory OM 内存溢出,不断创建对象或值大于类型范围 AWT错误
-
try catch finally throw 方法内手动抛出 throws方法外
-
自定义异常继承Exception类写toString方法输出信息
-
-
常用类
-
Object
-
hashcode()
-
toString()
-
clone()
-
getClass()
-
notify()
-
wait()
-
equals
-
-
Math 数学
-
-
File
-
创建文件 查看文件 修改 删除
-
-
Date
-
Date
-
SimpleDateFormat
-
Calendar
-
-
包装类 八大基本类型的自动拆箱
-
Random
-
UUID随机数
-
-
StringBuffer 可变长 append() 多线程 效率低安全
-
Stringbuilder 可变长 单线程
-
String final不可变
-
-
集合框架 Cllection
-
list ArrayList 数组 add() remove() contains() size() Iterator迭代器
-
LinkedList 链表 getFrist() getLast()首尾 pull() pol()
-
Vector Stack
-
set HashSet 无序不可以重复的 TreeSet
-
Map HashMap JDK7 数组+链表 JDK8 数组+链表+红黑树 链表数据超过8太长转换为红黑树处理
为什么都是2的等次幂 保证均匀分配 ,位运算2的N次方减少碰撞 JDK8扩容解决了死锁
-
Collection工具类 泛型<>类型约束
-
-
IO流
-
input 进去 字节 InputStream 字符 Writer 节点 CharArrayReader Writer StringReader Writer
-
output 出去 字节 outputStream 字符 Reader
-
管道处理流加在中间buffer处理流 Data 二进制数据流 Object 对象流 filter过滤流 print控制台打印流 InputStreamReader outputStreamWriter 转换流 File文件
-
序列化 serializable transient(排除序列化此属性)
-
-
进程和线程
-
run() thread.start()
-
线程创建需要实现Thread 或者Runnable Thread已经实现了Runnable
-
start()本地方法java无权调用 交给底层C处理 private native void start()
-
Callable 可有返回值 Rnnable 函数式接口lambda
-
静态代理 new Thread(Runnable).start()
-
Lambda表达式 避免内部类定义过多
-
线程状态 创建 就绪 运行 阻塞 死亡
-
常用方法 sleep join yield isLive start setPriority优先级 interrupt中断,不建议使用
-
线程同步 多个对象操作同一个资源,并发设计线程安全,加锁解决 排队的思想 队列+锁
-
synchronized
-
同步方法 同步代码块(常用) 排队拿锁
-
死锁
-
互斥 一个资源只能被一个进程调用不能被多个进程调
-
请求保持 一个资源被一个进程调用卡住,进程不能抱着资源不放
-
不剥夺条件 此进程正在调用此资源,未使用完时不能强行拿走资源
-
循环等待 很多线程形成闭环需求
-
-
-
Lock 锁优先用这个锁
-
lock trylock unlock 可以判断在哪一步锁
-
-
线程通信
-
缓冲区 消息队列
-
标志位 红绿灯 wait()等待 notifyAll()唤醒
-
-
线程池 pool
-
池子大小 最大连接数 保持时间
-
Executor.new FixedThreadPool(); 底层new ThreadpoolExecutor()
-
-
网络编程
-
url ip 端口 socket TCP 面向连接 三次握手 四次挥手 UDP无连接 packet
-
聊天通信小程序
-
-
GUI
-
Awt Frame 监听事件 鼠标键盘 窗口 动作 键盘
-
Swing 画工具 文本框 按钮 标签 面板 布局方式 关闭窗口 列表下拉选
-
贪吃蛇 Timer 定时器+监听+game帧
-
-
-
元注解 内置注解 自定义注解 反射读取注解
-
-