一、java语言初始
- java的三个方向
java SE
java ME(android)
java EE
- JDK 开发工具包 配置环境变量
- JER 运行环境
二、基础语法
- 注释
行内注释
多行注释
文档注释 /** */ javadoc生成帮助文档
- 标识符
- 数据类型
整数 byte/short/ int(默认)/ long
浮点数 float/ double(默认)
字符 char /ascii /utf-8 (定义中文) /Unicode
布尔值 boolean(只有0和1)
- 引用数据类型
类
接口
数组
三、类型转换
- 自动类型转换 底转高
- 强制类型转换 高转低
四、变量与常量
- 变量 type varName[=value];
- 作用域
- 常量 final MAX_A=10;
- 命名规则
1,见名知意 2,驼峰命名(变量,方法)
3,类,首字母大写,驼峰命名 4,常量:大写+下划线
5,不要拼音命名
五,运算符
六,包机制
- 域名倒写
- 防止命名冲突
- package
- import
七, Javadoc 【生成文档】
- @author
- @version
- @since
- @param
- @ruturn
- @throws
public class HelloWorld{
/**
* @author 狂神
* @param args 命令参数
* @since 1.0
*
* */
public static void main(String[] args){
System.out.println("hello");
}
}
八、流程控制
- scanner 用户交互 system.in
- 顺序结构 程序默认结构
- 选择结构
- if 单选择结构
- if-else 双选择结构
- if-else if-else 多选择结构
- switch jdk 支持String类型
case 穿透现象
break
delault
4.循环结构
- while 尽量避免死循环
- do ...while
- for for(int i=0;i<100;i++)
5.
- break 跳出循环
- continue 终止当次循环
- return 总结方法的运行
九,方法
- 方法的定义 : 修饰符 返回值 方法名 (参数名){return 返回值;}
- 方法调用 : 类名.方法
对象.方法
- 方法重载 : 名字相同,参数列表不同
- 命令行传参 :给main方法传递参数
- 可变长参数 :必须放在最后一个参数
- 递归 :自己调用自己,给自己一个出口
十,
- 数组的定义 new int[5]
{1,2,3,4,5}
- 数组的使用 通过下标拿到值
数组下标异常:ArrayIndexoutoBounds
- 二维数组 int[][]
- Arrays工具类
- 排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
- 基数排序
十一,面向对象
- 类与对象
- 类是对象的抽象:模板Class
- 对象是类的具体
- 构造方法:构造重载
- 默认的无参构造
- 如果手动添加了有参构造,就要再手动添加一个无参构造
- 单例模式,需要构造器私有
- new对象
- 堆栈放引用
- 堆栈方具体的对象
- 封装 属性私有,get、set
- 继承
- extend
- object
- 子类拥有父类的全部特性
- 方法重写
- this
- super
- 多态
- 父类的引用指向子类的对象 Person person = new Student();
- instanceof 关键,如果匹配,可以进行类型之间转换
- 修饰符
- public
- protected
- private
- static
- abstract
- final
- 接口
- interface
- 约束,只能定义方法名
- 子类实现接口,必须重写其中的方法
- 只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
- 接口比抽象类更抽象
- 一个类可以实现多个接口
- 内部类
- 局部内部类
- 静态内部类
- 匿名内部类(重点)
十二、异常
- Throwable '
- Exception 运行时异常 1/0
ClassNotFound
NullPoint
UnKownType
下标越界异常
.........
检查型异常
- Error AWT错误
JVM错误 StackOverFlow
OutOfMemory
- 五个关键字
- try{}
- catch{}
- finally{}
- throw 手动抛出异常
- throws 方法抛出异常
- 自定义异常 继承Exception类
十三、常用类
- Objcet类
- hashcode()
- toString()
- clone()
- getClaee()
- notify()
- wait()
- equals()
- Math类
- Random类 生成随机数
- File类
- 创建文件
- 查看文件
- 修改文件
- 删除文件
- 包装类 自动装箱和拆箱
- Date类
- Date
- SimeDateFormat yyyy-MM-dd HH:mm:ss
- Calendar (建议使用)
- String类 不可变性 final
- StringBuffer 可变长 append() 多线程 数据量大 效率低 安全
- StringBuilder 可变长 单线程 数据量大 效率高 不安全
- String str = "a" +1+2
十四、集合框架
- Collection
- List (有序可重复) ArrayList add / remove / contains / size
LinkedList getFirst() / getLast() / removeFirst() / addFirst() / ......
- Set (无序不可重复) HashSet
TreeSet
- Map
- HashMap 【天天用】 JDK1.8:hash表=数组+链表+红黑树
- TreeMap
- Collection 工具类
- 泛型<>约束,避免类型转换之间的问题
十五、IO流
- 字节流
- 输出 OutputStream
- 输入 InputStream
- 字符流
- Reader
- Wirter
- 节点流
- CharArrayReader ,Writer ,InputStream,OutputStream
- StringReader, Writer
- 处理流
- buffer bufferInputStream
bufferOutputStream
bufferReader
bufferwriter
- data DataInputStream
DataOutputStream
- 转换流 InputStreamReader
OutputStrramWriter
- Filter 四个
- print PrintWriter
PrintStream
十六、多线程
- 进程和线程
- run() Start()
- 线程创建的方式
- Thread start0,本地方法:java无权调用,交给底层c处理 private native void start()
- Runnable 函数式接口 lambda
- Callable 可以有返回值
- 静态代理 new Thread(Runnable).start()
- Lambda表达式
- 函数式编程
- 避免内部类定义过多
- new.Thread(()->{System.out.println();}).start();
- 线程的状态
- 新建状态
- 就绪
- 运行
- 阻塞
- 死亡
- 常用方法
- sleep
- join
- yield
- isLive
- start
- setPriority
- interrupt()
- 线程同步
- 多个对象操作同一个资源,并发
- 队列+锁
- Synchronized 同步方法
同步代码块
第一个线程拿到锁,直到释放锁,后面人才能拿到锁
死锁 :两个人相互抱着对方的锁(互斥 、请求与保持、不剥夺条件、循环等待条件)
- Lock ReentrantLock lock
trylock
unlock
- 线程通信
- 缓冲区:消息队列
- 标志位:红绿灯
- wait()
- notifyAll()
- 线程池(pool)
- 池化技术
- 池的大小
- 最大连接数
- 保持时间
- 。。。。。
十七、网络编程
- IP
- 端口
- TCP
- 三次握手
- 四次挥手
- 面向连接
- UDP
- 无连接
- packet
- URL
- 初识Tomcst
- 聊天通信
- 文件上传
十八、GUI
- AWT
- Frame
- 监听事件 鼠标 、键盘、窗口、动作事件
- Swing
- 文本框
- 标签
- 按钮
- 文本域
- 面板
- 布局方式
- 关闭窗口
- 列表
- 贪食蛇
- Timer
- 键盘监听
- 游戏帧的概念
十九、注解与反射
- 注解
- 元注解
- 内置注解
- 自定义注解
- 反射读取注解
- 反射
- Class newInstance
- 类加载机制
- Method invoke(user3,"秦3");
- Field set(user4,秦4)
- Construct newinstance();
获取时需要参数传递class类
- 性能分析 正常>检测关键的反射>默认的反射