标签:链表,01,--,数据类型,笔记,---,线程,数组 From: https://www.cnblogs.com/av404/p/17323063.html1. 回顾
java
1.java基础----软件不要安装在中文目录下。 (1)JDK环境---版本:1.8---配置环境变量:[java javac命令只能在当前所在目录使用] 可以在全局使用java和javac命令 (2)写了HelloWorld (3)变量 语法: 数据类型 变量名=值; [1]数据类型: 基本数据类型和引用数据类型。 基本数据类型8个: byte short int long float double boolean char. 引用数据类型: 接口,类,数组,枚举[常量] [2]变量名定义规则: 1.有字符,数字,_和$组成 2.不能以数字开头 3.不能使用关键字。 (4)运算符: [1]赋值运算符:=,+=,-=,*=,/=,%= [2]算数运算符: +,-,*,%,/,++,-- [位置可以放在前面和后面] [3]关系运算符: >,>=,<,<=,==,!= 返回结果一定是boolean类型 [4]逻辑运算符: &&,||,! 连接关系运算符 [5]三目运算符: 表达式?值:值 优先级: 算数运算符>关系运算符>逻辑运算 ==比较: 基本类型:比较的是值,引用类型:比较的引用地址。 equals()比较: 只能比较引用类型。默认比较的是引用地址。如果想比较值那么必须重写equals方法。因为String,Integer重写了equals (5)控制语句: if(){}else if(){}.....else{} ==if可以单独使用== switch(表达式){ case 值: 语句块;break; case 值: 语句块;break; .... default: } 表达式:得到的结果可以是什么类型? byte,short,int,char,String类型【1.7以后】 //碰到满足需要的case后,会把该case后的所有case以及default都执行 for(初始化;条件;变化){ //初始化只会执行一次 循环体。 } while(条件){ 循环条件; } 语句嵌套: 1.99乘法表。 (6) 数据组: 格式: 数据类型[] 数组名=new 数据类型[长度]; 下标从0~长度-1; 数组名[0]获取第一个元素 格式: 数据类型[] 数组名={元素,元素....}; 算法: 排序 [冒泡排序 手写,插入排序,选择排序....] for(int i=0;i<arr.length;i++){ //遍历的次数 for(int j=arr.length-1;j>i;j--){ if(arr[j]<arr[j-1]){ int tmp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=tmp; } } } System.out.println(Arrays.toString(arr)); (7) java OOP面向对象编程。---纵向编程。 三大特点: 封装:使用了private修改类成员,使其外界无法直接访问。一般封装属性。 继承:extends继承父类中的成员。提高代码的复用性。 只能单继承。 抽象类: 使用abstract来修饰。不能被实例化,只能被子类继承。 接口: interface.里面的属性都是静态常量,方法都是抽象方法 多态: 一个对象具有多种形态。 向上转型:子类对象可以转化为父类对象。自动转化 向下转型: 父类对象转化为子类对象,需要手动转化
2. 高级
1. 异常: 处理异常的方式: try{可能发生异常}catch(){捕获异常}finally{资源关闭} throws 抛出异常 写在方法名()后面, 调用者。 2. 集合体系结构: Collection: |--List: 有序,可重复。 |---ArrayList:底层数据结构:数组,特点:查询快,增删慢。当数组元素满了,动态扩容。把数组中原来的元素复制到新数组。新数组的长度是原来的1.5倍。 |---LinkedList: 底层双向链表。特点: 查询慢, 增删快。 |--Set:无序,不可重复。 |---HashSet:底层哈希算法。 Map:8 |---HashMap: 底层1.7和1.8不一样。 1.7:底层使用数组+链表。链表是头部插入 1.8: 底层使用数组+链表 或者数组+红黑树,链表使用尾部插入。 如果冲突个数特多时使用红黑树。当冲突个数高于8个转化为红黑树。 Collections:集合的工具类 3. IO流: InputStream: 字节输入流 OutputStream:字节输出流 ==========================文件操作===================== Reader:字符输入流 Writer:字符串输出流 =========================文本操作====================== 4. 线程 (1)创建线程的方式:1.继承Thread重写run方法 2.实现Runnable接口 3.实现Callable接口。 Callable有返回值,Runnable无返回值。 (2)线程的状态: NEW--->Start---进入就绪状态---->获取CPU时间片--->进入运行状态---> syn--->堵塞状态---sleep|wait--等待状态。----终止状态 NEW--->RUNABLE--->BLOCKED---->WAITING----TIME_WAITING----TERMINATED (3)线程池: 创建方式: new ThreadPoolExecutor()原始的线程池。 单一线程池: 固定长度的线程池: 可变线程池: 延迟线程池: 5. JDK8的新特性: 1.Lambda表达式: 接口必须是函数式接口。函数接口:有且仅有一个抽象方法。 2.Stream流:针对集合和数组的操作。Stream流类中包含很多方法。 3.方法引用: 4.时间类: 6. 设计模式: 23种 [1]单例模式: ---恶寒和懒汉【线程安全问题--->双重校验锁 手写】 [2]工厂模式: [3]动态代理:---JDK动态代理[基于接口]和Cglib动态代理[基于当前类的子类]。 [4]观察者: [5]建造者模式 [6]适配器模式: [7]桥接模式 等等
Mysql数据库:--CRUD 增删改sql语句没有难度。
查询: 单表查询没有难度 多表查询和嵌套查询。
select * from t1 join t2 on 链表条件 join t3 on 链表条件 .