语言背景

  • Java于1995年诞生,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web引用开发和移动应用开发
  • Java有三个版本
    • JavaSE(标准版)
    • JavaEE(企业版)
    • JavaME(微型版)
  • 2006年发布Hadoop
  • JDK:java开发工具包,里面包含了各种用于java程序开发的基本工具包
  • JRE:java运行环境

基础语法

注释

  • 单行注释: //
  • 多行注释: /**/
  • 文档注释: /** */

标识符

  • 标识符即关键字,如: publicfinally

数据类型

  • 基本数据类型

    • 整型
      • byte
      • short
      • int
      • long
    • 字符型
      • char
    • 浮点型
      • double
      • int
    • 布尔型
      • boolean
  • 引用数据类型

    • 接口
    • 数组
  • 类型转换
    • 自动转换(低转高)
    • 强制转换(高转低)

变量与常量

  • type varName [=value];
  • 作用域
    • 类变量
    • 实例变量
    • 局部变量
  • 常量

    • final MIN_B = 10;
  • 命名规范

    • 见名知意
    • 驼峰命名法
    • 类命名首字母大写
    • 常量: 大写+下划线
    • 不使用驼峰命名法

运算符

  • 算术运算符
    • +,-,*,/,%,++,-- (加、减、乘、除、取余数、自增、自减)
  • 赋值运算符
    • =
  • 关系运算符
    • >,<,=>,<=,==,!= instance of (大于、小于、大于等于、小于等于、等于、不等于、判断是否为类的实例化对象)
  • 逻辑运算符
    • &&,||,! (与、或、非)
  • 位运算符
    • &,|,^,~,>>,<<,>>> (位与、位或、位异或、位非、左移、右移、无符号右移)
  • 条件运算符
    • ?: (表达式 ? 为真语句 :为假语句)
  • 扩展运算符
    • +=,-=,*=,/= 
      • a+=2 === a=a+2
      • a*=2 === a==a*2
      • a-=2 === a=a-2
      • a/=2 === a=a/2

包机制

  • 域名倒写
  • 防止命名冲突
  • package
  • import

JavaDoc

  • JDK帮助文档
  • javadoc
    • @author
    • @version
    • @since
    • @param
    • @return
    • @thoows
  public Class Welcome {
    /**
    * @author theMan
    * @param args
    * @since 1.0
    * @throws 无异常抛出
    */
    public static void main(String[] args){
      System.out.println("welcome");
    }
  }

流程控制

  • Scanner
    • 用户交互 System.in
  • 顺序结构
    • if单选择结构
    • if-else多选择结构
    • switch多选结构
      • jdk支持了String类型
      • case穿透现象
      • default默认
  • 循环结构
    • while避免死循环
    • do-while先执行,后判断
    • for
    • 增强for循环
  • 特殊
    • break跳出循环
    • continue终止本次循环
    • return结束方法运行

方法

  • 何为方法
    • 修饰符 返回值 方法名(参数名){return 返回值;}
  • 方法调用
    • 类名.方法
    • 对象.方法
  • 方法重载
    • 名字相同,但参数列表不同
  • 命令行传参
    • 给main方法传递参数
  • 可变长参数
    • ...
    • 必须放在最后一个参数
  • 递归

数组

  • 数组举例
    • new int[10]
    • {1,2,3}
    • 同一数组内的数据必须相同类型
  • 数组的使用
    • 通过下标拿到值
    • ArrayIndexOfBounds
    • 增强的for循环遍历
  • 二维数组
    • new int[][]
  • Array工具类
  • 排序算法
    • 冒泡排序
    • 选择排序
    • 插入排序
    • 快速排序
    • 归并排序
    • 希尔排序
    • 堆排序
    • 桶排序

面向对象

  • 何为面向对象

    • 把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
  • 类与对象

    • 类是对象的抽象:即模板Class
    • 对象是类的实例
  • 构造方法
    • 构造的重载
      • 默认为无参构造
      • 如果手动定义了一个有参构造就必须再加一个无参构造
      • 单例模式,需要构造器私有!
  • new对象
    • 栈存放引用
    • 堆存放具体的对象
  • 封装
    • 属性私有,即:getset方法
  • 继承

    • extends
    • Object
    • 子类拥有父类的全部属性
    • 方法重写
    • this
    • super
    • Java是单继承,只可继承一个父类
  • 多态

    • 父类的引用指向子类的对象  Person person = new Student();
    • instance of关键,如果匹配,可以进行类型之间的转换
  • 修饰符

    • public
    • protected
    • private
    • static
    • final
    • abstract
  • 接口

    • interface
    • 约束:只能定义方法名
    • 子类实现接口时,必须重写其方法
    • 只有一个方法的接口叫做函数式接口,可使用lamda表达式进行简化
    • 接口比抽象类更抽象
    • 一个类可以实现多个接口
  • 内部类

    • 局部内部类
    • 静态内部类
    • 匿名内部类

异常

  • Throwable

    • Exception
      • 运行时异常
        • 1/0
        • ClassNotFound
        • NullPoint
        • UnKonwnType
        • ArrayIndexOutOfBounds
      • 检查时异常
    • 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
    • simpleDateFormatyyyy-MM-dd HH:mm:ss
    • Calendar
  • String类
    • 不可变性final,操作量较少
  • StringBuffer
    • 可变长
    • append()
    • 多线程数据量较大
    • 效率低,安全
  • StringBuilder
    • 可变长
    • 单线程数据量较大
    • 效率高,不安全
  • String str = "a"+1 + 2
  • String str = 'a' + 1 + 2
  • String str = 1+2+'a'

集合框架

Collection

  • List
    • ArrayList
      • add()
      • remove()
      • contains()
      • size()
    • LinkedList
      • getFirst()
      • getLast()
      • removeFirst()
      • addFirst()
    • iterator迭代器
  • Set
    • HashSet
    • TreeSet

      Map

    • HashMap
    • TreeMap

      Collections工具类

      泛型

  • 约束,避免类型转换之间的问题

I/O流

字节流

  • 输出:OutputStream
  • 输入:InputStream

字符流

  • Reader
  • Wirter

节点流

  • CharArrayReaderWirterinputstreamoutputstream
  • StringReaderWriter
  • pipepipedOutputStream
  • File

处理流

  • buffer

    • bufferInputStream
    • bufferOutputStream
    • bufferReader
    • bufferWriter
  • data

    • DataInputStream
    • DataOutputStream
  • object流
  • 转换流
    • InputStreamReader
    • OutputStreamWriter
  • Filter
    • 四个
  • print
    • PrintWriter
    • PrintStream

多线程

进程和线程

  • run()
  • Start()

线程创建的方式

  • Thread
  • Runnable
  • Callable

静态代理

  • new Thread(Runnable).start();

Lamda表达式

  • 函数式编程
  • 避免内部类定义过多
  • new Thread(()->{System.out.printIn();}).start();

线程的状态

  • 新建态
  • 就绪态
  • 运行态
  • 阻塞态
  • 死亡态

常用的方法

  • sleep()
  • join()
  • yield()
  • isLive()
  • start()
  • setPriority()
  • interrupt()

线程同步

  • 多个对象操作同一个资源,并发
  • 对列+锁
  • Synchronized
    • 同步方法
    • 同步代码块(常用)
    • 锁,第一个线程进来拿到锁,后面的就要排队了,直到这个线程释放锁,后面的线程才能拿到锁进去
    • 死锁,两个人都抱着对方的锁
      • 互斥
      • 请求与保持
      • 不剥夺条件
      • 循环等待条件
  • Lock
    • ReentrantLock
      • lock
      • trylock
      • unlock

线程通信

  • 缓冲区:消息队列
  • 标志位:红绿灯
  • wait()
  • notifyAll()

线程池

  • 池化技术
  • 池的大小
  • 最大连接数
  • 保持时间

网络编程

  • IP
  • 端口
  • Socket编程
  • TCP
    • 三次握手
    • 四次挥手
    • 面向连接
  • UDP
    • 无连接
    • Packet
  • URL
  • 初识Tomcat
  • 聊天通信
  • 文件上传

GUI

AWT

  • Frame
  • 监听事件
    • 鼠标
    • 键盘
    • 窗口
    • 动作事件

Swing

  • 文本框
  • 标签
  • 按钮
  • 文本域
  • 面板
  • 布局方式
  • 关闭窗口
  • 列表

注解和反射

注解

  • 元注解
  • 内置注解
  • 自定义注解
  • 反射读取注解

反射

  • Class
    • newInstance()
  • 类加载机制
  • Method
    • invoke(person1,"kevin");
    • 存在重载,需要些参数的类型
  • Field
    • set(person2,"marvin");
  • Construct
    • newInstance()
    • 获取的时候需要传递参数的class类型
  • 破坏私有关键字
    • setAccessible(true);
  • 性能分析
    • 正常>检测关闭的反射>默认的反射
  • 反射获得注解、泛型

请我喝[茶]~( ̄▽ ̄)~*

Peter Pan 微信支付

微信支付

Peter Pan 支付宝

支付宝