学习视频笔记1
Java语言初识
- 我能不能学会这个语言?
- 注册博客:27+
- MarkDown语法
- 简单的Dos命令
- 计算机语言发展
- java的诞生
- 1995
- JavaSE
- JavaME(Android)
- JavaEE
- 2006 Hadoop
- 1995
- JDK 开发者工具包 配置环境变量
- JRE 运行环境
HelloWorld
- javac Hello.java 生成calss
- java Hello
- 编译型
- 解释型语言
- IDEA
基础语法
注释
- 行内注释 //
- 多行注释 /***/
- 文档注释/** */ javadoc生成帮助文档
标识符
关键字
数据类型
- 基本数据类型
- 整数
- byte 1字节
- short 2
- int(默认) 4
- long 8
- 进制(二进制(0b) 十六进制 (0x)八进制(0))
- 浮点数
- float 4
- double(默认) 8
- BigDecimal
- 字符
- char 2
- ascli
- utf-8
- Unicode
- ‘/u0000’ ( \b \n \r \t \’ \" \\)
- 布尔值
- boolean 1位
- if(a)
- 整数
- 引用数据类
- 类
- 接口
- 数组
- 类型转换
- 自动类型转化(低转高)
- 强制类型转化(高转低 (低)高)
- 变量和常量
- type varName [=value]
- 作用域
- 类变量
- 实例变量
- 局部变量
- 常量 final MAX_A = 10;
- 命名规范
- 见名知意
- 驼峰命名(变量,方法)
- 类,首字母大写,驼峰命令
- 常量:大写+下划线
- 不要使用拼音命令
- 运算符
- 算术运算符 + - * / % ++ –
- 赋值运算符 =
- 关系运算符 < > <= >= == != instanceof
- 逻辑运算符 && || !
- 位运算符 & | ^ ~ >> << >>>
- 条件运算符 ? :
- 扩展运算符 += -= *= /=
- 包机制
- 域名倒写
- 防止域名冲突
- package
- import
- javaDoc
- JDK帮助文档
- javadoc (javadoc -encoding UTF-8 -charset UTF-8 HelloWorld.java)
- @author 作者名
- @Version
- @Since 版本号
- @param 命令参数
- @return 返回值说明
- @throws 抛出异常说明
l流程控制
- Scanner 用户交互System.in
- 顺序结构 程序默认的结构,自上而下的执行
- 选择结构
- if 单选择结构
- if-else 双选择结构
- if-else if-else 多选择结构
- switch
- jdk 支持了String类型
- case 穿透现象
- break
- default
- 循环结构
- whlie
- do …while
- for (for(int i=0;i<100;i++)
- 增强for循环
- break & continue
- break:跳出循环
- continue:终止当次循环
带标签的break,continue- return:结束方法的运行
方法
- 什么是方法
- 方法的定义 修饰符 返回值 方法名 (参数名)(return 返回值;)
- 方法调用(类名.方法名 对象.方法名)
- 方法重载 名字相同,参数列表不同
- 命令行传参 给main方法传递参数
- 可变长参数(… 必须放在最后一个参数)
- 递归 自己调用自己 给自己一个出口
数组
- 数组的定义
- new int[56]
- (1,2,3,4,5)
- 必须是同一个类型
- 数组的使用
- 通过数组下标使用
- ArraylndexoutofBounds 数组下标越界异常
- 增加for循环遍历
- 二维数组
- Arrays 工具类
- 排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
- 基数排序
面向对象
- 什么是面向对象
- 类与对象(类是对象的抽象:模板class 。对象是类的具体)
- 构造方法 构造的重载
- 默认的无参构造
- 手动定义了有参构造默认无参构造无效
- 单例模式,需要构造器私有
- new对象(栈存放引用,堆存放具体的对象)
- 封装 属性私有,get,set
- 继承
- extends
- Object
- 子类拥有父类的全部特性
- 方法重写
- this
- super
- 多态
- 父类的引用指向子类的对象
- instanceof关键,如果匹配 可以进行类型之间的转换
- 修饰符
- public
- private
- protected
- static
- final
- abstract
- 接口
- interface
- 约束,只能定义方法名
- 子类实现接口,必须重写其中的方法
- 只有一个方法的接口叫函数式接口,可以使用lambda表达式简化
- 接口比抽象类更抽象
- 一个类可以实现多个接口
- 内部类
- 局部内部类
- 静态内部类
- 匿名内部类
异常
- Throwable
- Exception
- 运行时异常
- I/O
- ClassNotFound
- NullPoint
- UnKownType
- … …
- 检查型异常
- 运行时异常
- Error
- AWT错误
- JVM错误
- StackOverFlow
- OutOfMenory
- Exception
- 五个关键字
- try()
- eatch(){} 先小后大
- finally{}
- throw 手动抛出异常
- throws 方法抛出异常
- 自定义异常 继承Exception类即可
常用类
- Object类
- hashcode()
- toString()
- clone()
- getClass()
- notify
- wait()
- equale()
- Math类 常见的数学运算
- Random类 生成随机数 UUID
- File
- 创建文件
- 查看文件
- 修改文件
- 删除文件
- 八大基础数据类型包装类(自动装箱和拆箱)
- Date类
- Datepl
- SimpleDateFromat yyyy-MM-dd HH-mm-ss
- Calendar(建议使用)
- String类 (不可变性)
- StringBuffer(可变长 建议多线程数据量较大 效率低)
- StringBuilder(可变长 建议单线程数据量较大 效率高)
集合框架
- Collection
- list(有序可重复)
- ArrayList(常用)
- add
- remove
- contains
- size
- LinkedList(常用)
- getFirst()
- getLast()
- removeFirst()
- addFirst()
- …
- Vecor
- Stack
- ArrayList(常用)
- set(无序不可重复)
- HashSet(常用)
- TreeSet
- iterator:迭代器
- list(有序可重复)
- Map
- HashMap(重点,面试高频问点)
- JDK1.7 数组加链表
- JDK1.8数组加链表加红黑树
- TreeMap
- Collections工具类
- 泛型<>约束,避免数据类型转换之间的问题
IO流
- 字节流
- 输出:OutputStream
- 输入:InputStream
- 字符流
- Reader
- wirter
- 节点流
- 处理流
- 序列化 反序列化 Serializable transient(透明的)
- buffer
- bufferOutputStream
- bufferInputStream
- bufferReader
- bufferwirter
- data
- DataInputStream
- DataOutputStream
- object流(常用)
- objectInputStream
- objectOutputStream
- 转换流()
- InputStreamReader
- OutputStreamwirter
- Filter(四个)
多线程
-
进程和线程
-
run()和Start()
-
线程创建的 方式
- Thread start()本地方法;java无权调用,交给底层处理
- Runnable 函数式接口 lambda
- Callable 可以有返回值
-
静态代理模式
-
Lambda表达式
- 函数式编程
- 避免内部类定义过多
- 手动推导一遍lambda表达式
-
线程的状态(新建,就绪,运行,阻塞,死亡)
-
线程的方法
- sleep
- join
- yield
- isLive
- start
- setPriority
- interrupt
-
线程同步
- 多个对象操作同一个资源,并发
- 队列+锁
- Synchronizad
- 同步方法 弊端:锁太多了
- 同步代码块
- 第一个线程进来拿到 锁,后面的就要排队了,直到这个人释放锁,后面拿到锁才能进去
- 死锁:俩个人都抱着对方的锁
- 互斥
- 请求与保持
- 不剥夺条件
- 循环等待条件
- Lock Reentrantlock
- lock
- trylock
- unlock
- 优先级 :Lock>同步代码块>同步方法
-
线程通信
- 缓冲区:消息队列
- 标志位:红绿灯
- wait()
- notifyAll()
-
线程池(Pool)
- 池化技术
- 池的大小
- 最大连接数
- 保持时间
- 。。。。。。
网络编程
- IP
- 端口
- Socket编程
- TCP
- 三次握手
- 四次挥手
- 面向连接
- UDP
- 无连接
- Packet
- URL
- 初识Tomcat
- 聊天通信
- 文件上传
GUI(可选)
- AWT
- Frame
- 监听事件
- 鼠标
- 键盘
- 窗口
- 动作事件
- Swing
- 文本框
- 标签
- 按钮
- 文本域
- 面板
- 布局方式
- 关闭窗口
- 列表
- 贪吃蛇
- Timer
- 键盘监听
- 游戏帧的概念
注解和反射
- 注解
- 元注解
- 内置注解
- 自定义注解
- 反射读取注解
- 反射
- Class
- 类加载机制
- Mathod(invoke(user3,"value3"存在重载,也需要写参数类型)
- Field (set(user4,“value4”))
- Construct(newinstance()获取的时候需要,传递参数的class类型)
- 破坏私有关键字 setAccessible(ture)
- 性能分析 正常>检测关闭反射>默认的反射
- 反射获得注解,泛型…
- 单例模式的探究
- Stream
- Forkjoin 效率对比
观看狂神说JAVASE总结文档 ↩︎