Java SE 重点补遗

Java SE 补遗

1.JDK和JRE的区别

  • jdk:开发者工具包(使用的话需要在本机配置环境变量)
  • jre:java的运行环境

2.编译型语言(对比解释型语言)

  • java属于编译型+解释型语言
  • 此外java属于静态准动态语言
  • java是强类型语言

3.注释

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

4.数据类型

  • 8大基本数据类型
  • 引用数据类型(非基本类型一般都是引用类型)
    • 接口
    • 数组

5.类型转换

  • 自动类型转化
    • 低转高(子类转父类)
  • 强制类型转化

6.变量与常量

  • 作用于

    • 类变量(又称作静态变量) static
    • 实例变量(又称成员变量) static
    • 局部变量(局部变量是方法中或者局部块中声明定义的变量或方法,没有默认初始值,赋值后才能使用)
  • 常量(一经定义不可修改) final int M = 1001;

    成员变量(实例变量)局部变量静态变量(类变量)
    定义位置类中、方法外方法中/方法形式参数类中、方法外
    初始化默认初始值(一般是0)无默认初始值,需要赋值后才可使用默认初始值(一般是0)
    调用方式对象调用/对象调用/类名调用
    声明周期与对象共存亡与方法共存亡与类共存亡
  • 命名规范

    • 见名知意
    • 驼峰命名
    • 首字母大写,驼峰命名
    • 常量 大写+下划线
    • 不要使用拼音命名

7.运算符(这里只列举个别)

  • 拓展运算符 += -= *= += /=
  • 条件运算符 ? :

8.包机制

  • 域名倒写 com.example.java
  • 防止命名冲突
  • package
  • import

9.JavaDoc

  • JDK帮助文档
  • Javadoc标签(会使用IDEA生成Javadoc
    • @author 作者标识
    • @version 版本号
    • @param 说明方法的参数
    • @return 对函数返回值的描述
    • @throws 构造函数或方法会抛出的异常

10.方法重载

  名字相同参数列表不同

11.命令行传参(涉及以后的JVM调优)

  java Main param1 param2 ... param_n

12.数组

  Arrays工具类

13.排序算法

14.面向对象

  • 什么是面向对象(类与对象)

    • 类是对象的抽象
    • 对象是类的具体
  • new对象

    • 栈存放引用
    • 堆存放具体的对象
  • 三大特性

    • 封装
      • 属性私有
      • 提供gettersettertoString
    • 继承
      • extends
      • Object
        • Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类(可以使用Object类中的所有方法)。
        • 关于Object类更详细解释
      • this
      • super(父类指针)
      • 子类拥有父类全部特性
      • 方法重写
    • 多态
      • 父类的引用指向子类的对象 Person p = new Student()
      • instanceof 若匹配,则可以进行类型之间的相互转化
            /** instanceof运算符的解释
             * instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。
             * instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
             */ 
            public class Main {
                public static void main(String[] args) {
                    // Utils (派生)-> CheckUtils
                    Utils utils = new Utils();
                    CheckUtils checkUtils = new CheckUtils();
                    System.out.println(utils instanceof Utils);      // true
                    System.out.println(checkUtils instanceof Utils); // true
                    System.out.println(utils instanceof CheckUtils); // false
                }
            }
        
  • 修饰符

    • public, protected, private
    • static
    • final
    • abstract
      • 抽象类
        • 1.抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
        • 2.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
        • 3.抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
        • 4.构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
        • 5.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
      • 抽象方法
        • 1.如果一个类包含抽象方法,那么该类必须是抽象类。
        • 2.任何子类必须重写父类的抽象方法,或者声明自身为抽象类。
  • 接口 interface

    • 只有一个方法的接口叫函数式接口,可以使用lambda表达式简化
    • 接口比抽象类更抽象
    • 一个类可以实现多个接口
  • 内部类

    • 局部内部类
    • 静态内部类
    • 匿名内部类(重点)
  • 异常

    • Throwable
      • Exception
        • 运行时错误
          • 1/0
          • ClassNotFound
          • UnknownType
          • NullPoint
          • 下标越界
        • 检查型异常(一般不用管,编译时会检查出来)
      • Error
        • AWT错误
        • JVM错误
          • StackOverFlow
          • OutOfMemory
    • 5个关键字
      • try
      • catch
      • finally
      • throw
      • throws
    • 自定义异常
      • 继承Exception类即可
  • 常用类(必学)

    • Object
      • hashCode()
      • toString()
      • clone()
      • getClass()
      • notify()
      • wait()
      • equal()
    • Math
      • 常见数学函数
    • Random
      • 生成随机数
      • UUID
    • File
      • 创建
      • 查看
      • 修改
      • 删除
    • Date
      • Date()
      • SimpleDateFormat()
      • Calendar()
    • String
      • 不可变性 -> 源码中定义:final
      • 适合操作量较少的时候
    • StringBuffer
      • 可变长
      • safe/unsafe? 效率低 安全
      • 适合多线程,数据量较大的时候
    • StringBuilder
      • 可变长
      • safe/unsafe? 效率高 不安全
      • 适合单线程,数据量较大
      // 问线面结果分别都是什么
          String str = "a" + 1 + 2;
          String str = 'a' + 1 + 2;
          String str = 1 + 2 + "a";
          String str = 1 + 2 + 'a';
      
    • 包装类
      • 自动装箱和开箱
  • 集合框架

    推荐使用的遍历方法:iterator(迭代器)

    • Collection
      • List(有序可重复)
        • ArrayList(常用)
        • LinkedList(常用)
        • Vector
        • Stack
      • Set(无序不可重复)
        • HashSet(常用)
        • TreeSet
      • iterator
    • Map
      • HashMap(非常重要,常用,天天用)
      • TreeMap
    • Collection工具类
    • 泛型<>约束,避免类型转换的问题

    说明1:请务必理解这里的有序和无序

    • 无序性:并非按照数组索引存储,而是按照HashCode值进行存储
    • 有序性:根据数组的索引值进行存储

    说明2:HashMap的数据结构(面试高频问题)

    • JDK1.7:数组+链表
    • JDK1.8:数组+链表+红黑树

15.IO流

  • 字节流
    • InputStream
    • OutputStream
  • 字符流
    • Writer
    • Reader
  • 节点流(…)
  • 处理流
    • buffer
      • bufferInputStream
      • bufferOutputStream
    • data
      • DataInputStream
      • DataOutputStream
    • object
    • 转换流
      • InputStreamReader
      • OutputStreamReader
    • Filter(4个)
    • Print
      • PrintWriter
      • PrintStream

16.多线程

  • 进程和线程
  • runstart方法
  • 线程创建的方式
    • Thread
    • Runnable
    • 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()
  • 线程池
    • 池化技术
    • 池的大小
    • 最大连接数
    • 保持时间

17.网络编程

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

18.注解和反射

  • 注解
    • 元注解
    • 内置注解
    • 自定义注解
    • 反射读取注解
  • 反射
    • Class
      • newInstance()
    • 类加载机制
    • Method
      • invoke()
    • Field
    • Construct
      • newInstance()
      • 获取的时候需要,传递参数的class类型
    • 破坏私有关键字
      • setAccessible(true)
    • 性能分析
      • 正常 > 检测关闭的反射 > 默认的反射
    • 反射获得注解,泛型…
  • 单例模式的探究
  • Stream
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水能zai舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值