JavaSE 复习
基础语法
注释
- 行内注释 //
- 多行注释 /**/
- 文档注释 /** */ javadoc 生成帮助文档
标识符
java关键字 (百度复习)
数据类型
-
基本数据类型 (四类8种)
-
数据类型 类型 字节 整数 byte 1 整数 short 2 整数 int 4 整数 long 8 浮点数 float 4 浮点数 double(默认) 8 字符 char 2 布尔型 boolean 1(位) 浮点数 BigDecimal
引用数据类型
- 类
- 接口
- 数组
类型转换
- 自动类型转换 低 转 高
- 强制类型转换 高 转 低 (低)高
变量和常量
type varName [=value];
作用域
- 类变量
- 实例变量
- 局部变量
常量 final MAX_A = 10;
命名规范
- 见名起意
- 驼峰命名(变量,方法)
- 类,首字母大写,驼峰命名
- 常量:大写+下划线
- 不要使用拼音命名
-
运算符
- 算术运算符 + - * / % ++ –
- 赋值运算符 =
- 关系运算符 > < >= <= == != instanceof
- 逻辑运算符 && || !
- 位运算符 & | ^ ~ >> << >>>
- 条件运算符 ? : (三目运算符)x ? y : z
- 扩展运算符 += -= *= /=
包机制
- 域名倒写
- 防止命名冲突
- package
- import
JavaDoc
- JDK 帮助文档
- 1.javadoc
- @auther 作者名
- @Version 版本
- @Since 最早支持的JDK版本
- @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: 终止当次循环
- 带标签continue
- return: 结束方法的运行
方法
- 什么是方法!
- 方法的定义 修饰符 返回值 方法名(参数名){return 返回值;}
- 方法调用
- 类名.方法
- 对象.方法
- 方法重载 名字相同,参数列表不同
- 命令行传参 给main方法传递参数 cmd 输出 java.class文件 运行
- 可变长参数
- …
- 必须放在最后一个参数
递归
- 自己调自己,给自己一个出口
- 面试常问 leetcode
数组
-
数组的定义
- new int[5]
- {1,2,3,4,5}
- 必须同一类型
-
数组的使用
- 通过下标拿到值
- ArrayIndexoutofBounds
- 增加for循环遍历
-
二维数组 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
- 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
- Calendar(建议使用)
- String类 不可变性 final
- StringBuffer 可变长 append() 多线程数据量大 效率低,安全
- StringBuilder 可变长 单线程数据量大 效果高,不安全
集合框架
- Collection
- List(有序可重复)
- ArrayList (常用)
- add
- remove
- contains
- size
- LinkedList(常用)
- getFirst()
- getLast()
- removeFirst()
- addFirst()
- …
- Vector
- Stack
- ArrayList (常用)
- Set(无序不可重复)
- HashSet(常用)
- TreeSet
- Iterator: 迭代器
- List(有序可重复)
- Map
- HashMap(重点 面试高频问点)
- JDK1.7:数组+链表
- JDK1.8: hash表=数组+链表+红黑树
- TreeMap
- HashMap(重点 面试高频问点)
- Collections 工具类
- Hutool 工具类 (大部分都有)
- 泛型 < > 约束,避免类型转换之间的问题
IO流
- 字节流
- 输出:OutputStream
- 输入:InputStream
- 字符流
- 写入: Reader
- 写出: Wirter
- 节点流
- CharArrayReader, Writer, InputStream, OutputStream
- StringReader,Writer
- pipe(管道流)PipedOutputStream
- 处理流
- buffer
- bufferInputStream
- bufferOutputStream
- bufferReader
- bufferWriter
- 序列化
- 反序列化 Serializable transient (透明的)
- data
- DataInputStream
- DataOutputStream
- 转换流
- InputstreamReader
- OutputStreamWriter
- Filter 四个
- print
- PrintWriter
- PrintStream
- buffer
多线程
- 进程和线程
- run(), Start()
- 线程创建的方式
- Thread start0,本地方法:java无权调用,交给底层的C处理 private
- Runnable 函数式接口 lambda
- Callable 可以有返回值
- 静态代理
- new Tread(Runnable).start();
- Lambda表达式
- 函数式编程
- 避免内部类定义过多、
- new Thread(() -> {
- Sout();
- }).start();
- 手动推导一遍lambda表达式
- 线程的状态
- 新建状态
- 就绪
- 运行
- 阻塞
- 死亡
- 常用的方法
- sleep
- join
- yield
- isLive
- start
- setPriority
- interrupt
线程同步
- 多个对象操作同一个资源
- 队列 + 锁
- Synchronized
- 同步方法 弊端:锁太多了 第三个
- 同步代码块(常用!) 第二个
- 第一个线程进来拿到锁,后面就要排队了,直到这个人释放锁,后面拿到锁才能进去
- 死锁:两个人都抱着对方的锁
- 互斥
- 请求与保持
- 不剥夺条件
- 循环等待条件
- Lock(优先级高)最高级
- ReentrantLock
- lock
- trylock
- unlock
- ReentrantLock
- 线程通信
- 缓冲区:消息队列
- 标志位:红绿灯
- wait();
- notifyAll();
- 线程池 (Pool)
- 池化技术
- 池的大小
- 最大连接数
- 保持时间
- 。。。。
网络编程
- IP
- 端口
- Socket编程
- TCP
- 三次握手
- 四次挥手
- 面向连接
- UDP
- 无连接
- Packet
- URL
- 初识Tomcat
- 聊天通信
- 文件上传
GUI
- AWT
- Frame
- 监听事件
- 鼠标
- 键盘
- 窗口
- 动作事件
- Swing
- 文本框
- 标签
- 按钮
- 文本域
- 面板
- 布局方式
- 关闭窗口
- 列表
- 贪吃蛇
- Timer
- 键盘监听
- 游戏帧的概念
注解和反射
- 注解
- 元注解
- 内置注解
- 自定义注解
- 反射读取注解
- 反射
- Class newlnstance();
- 类加载机制
- Method
- invoke(user3,“广州”);
- 存在重载,也需要写参数的类型
- Field set(user4,“广州”);
- Construct
- newlnstance();
- 获取的时侯需要,传递参数的class类型
- 破坏私有关键字
- setAcce’s’sible(true);
- 性能分析 正常>检测关闭的反射>默认的反射
- 单例模式的探究
- Stream
- ForkJoin
- 效果对比