当前位置:网站首页 > Java基础 > 正文

java核心技术卷基础



系列:《Java核心技术 卷1》笔记

文章目录

  • 系列:《Java核心技术 卷1》笔记
  • 一)简介
  • 1. 语言特点
  • 2. 数据类型
  • 3. 枚举类型
  • 4. 位运算符之移位
  • 5. 直接输出数组
  • 6. 新的日期时间
  • 7. Java的传参方式
  • 二)OOP
  • 1. 封装
  • 访问权限
  • 2. 继承
  • 3. 多态
  • 4. 类之间的关系
  • 5. 关键字
  • 6. 初始化顺序
  • 7. 抽象类和接口
  • 8. lambda表达式
  • 9. 内部类
  • 10. 函数式接口
  • 三)反射和代理
  • 1. 什么是反射
  • 2. 相关API
  • 3. 静态代理
  • 4. 动态代理
  • 角色
  • 实现机制
  • 四)异常体系
  • 1. 异常层次结构
  • 2. 非检查型异常
  • 3. 检查型异常
  • 4. 如何处理
  • 创建异常类
  • 抛出异常
  • 捕获异常
  • 5. finally
  • 6. 断言
  • 五)泛型
  • 1. 作用
  • 2. 泛型类和泛型方法
  • 3. 限制
  • 4. 泛型擦除
  • 六)集合
  • 1. 迭代器
  • 2. List
  • 3. Queue & Deque
  • 4. Set
  • 5. Map
  • 6. Collections
  • 七)IO
  • 1. 控制台
  • 2. 文件IO
  • 3. 序列化
  • 4. 设计模式:装饰模式,适配模式
  • 5. 网络IO
  • 6. Java中的IO类型
  • 八)并发
  • 1. 什么是线程
  • 2. 实现
  • 3. 线程状态
  • 4. 线程属性
  • 5. 同步
  • 6. 锁
  • 条件对象:Condition
  • 7. 深入
  • 监视器和synchronized
  • volatile
  • 死锁
  • 线程局部变量
  • 8. 线程安全的集合
  • 9. 线程池

一)简介

1. 语言特点

  • 面向对象
  • 健壮性
  • 安全性
  • 可移植性
  • 解释型

2. 数据类型

 
 

  • 对于基本类型,传的值(int等,值)

  • 对于引用类型,传的值(Java引用,值即为指向对象的地址)

  • public

  • protected

  • 默认

  • private

  • 依赖:user-a。方法参数

  • 聚合:has-a。成员属性

  • 继承:is-a。父子类

  • this

  • super

  • static

  • final

  •  

     

     

     

    img src='https://s2.51cto.com/images/blog//0_6613fbf103bc75101.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='java核心技术卷一中文电子版 java核心技术 卷一_Java' title="在这里插入图片描述" style="width: 447px; visibility: visible;">

     

     

     

  • 省去强制类型转换

  • 将运行时错误转到编译期。编译检查

  •  

    col span="1" width="581">

    col span="1" width="581">

    td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-column" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    td data-transient-attributes="table-cell-selection" class="table-last-column table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">

    实现


    说明


    HashSet


    允许一个null


    LinkedHashSet


    TreeSet


    br>

    br>

    br>

    br>

    br>

    br>

    br>

    br>

    br>

    br>

    br>

    6. Collections

    常见API的使用。

    七)IO

    1. 控制台

     
    

    2. 文件IO

     
    

    3. 序列化

    • 基本类型:DataInputStream
    • 对象:ObjectInputStream

    接口:Serializable

    transient:序列化跳过当前关键字修饰的属性。

    说明:可通过重载readObject和writeObject方法实现序列化

    4. 设计模式:装饰模式,适配模式

    具体:java的IO之适配器模式和装饰模式

    字符流Reader/Writer,适配器: InputStreamReader和OutputStreamWriter

    字节流InputStream/OutputStream,装饰器:FilterInputStream和FilterOutputStream

    5. 网络IO

    • ServerSocket
    • Socket

    6. Java中的IO类型

    常见的BIO,阻塞IO。

    然后是NIO,非阻塞IO,基础:IO多路复用

    详情见:Java NIO浅析 美团技术团队

    最后是AIO,异步IO。

    八)并发

    1. 什么是线程

    进程中一个单一顺序的控制流。

    2. 实现

    • Thread
    • Runnable
    • Callable

    3. 线程状态

    新建:new Thread®

    可运行:start

    阻塞:试图获取内部的对象锁,失败,线程被阻塞(synchronized)

    等待:线程等待另一个线程通知调度器出现一个方法时,线程进入等待(wait或join,或j.u.c的Lock或Condition

    计时等待:Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await

    终止:run方法正常退出,或一个没有捕获的异常

    4. 线程属性

    优先级

    中断标志位:静态的Thread.interrupted(),检查当前线程是否被中断,回清除中断状态;成员方法isInterrupted()

    说明:线程被阻塞,其他线程调用interrupt()中断当前线程,会抛出异常

    守护线程

    5. 同步

    通过同步,实现存取的顺序访问

    6. 锁

    • synchronized
    • ReentrantLock
    条件对象:Condition

    7. 深入

    监视器和synchronized

    monitor,略。

    volatile

    JMM模型:略

    • 保证可见性,原理见JMM模型

    三大特性:原子性,可见性,有序性

    • 内存屏障:禁止指令重排
    死锁

    情形描述:多个线程同时被阻塞,它们中的一个或全部都在等待某个资源释放。

    死锁产生的四个必要条件:

    1. 互斥:资源被线程占用,别的线程不能使用
    2. 非抢占:资源只能由占用者释放
    3. 请求和保持:占用资源的线程同时请求资源
    4. 循环等待:存在一个等待队列,P1占用P2需要的资源,P2占用P3的资源,…形成环路

    如何解决死锁:synchronized,或Lock。

    产生死锁的样例:可使用信号量,避免死锁(具体)

     
    
    线程局部变量

    ThreadLocal

    方法:void set(T t)和T get()

    场景一:管理数据库连接Connection,保证当前线程操作的都是同一个Connection,保证事务

    8. 线程安全的集合

    阻塞队列:BlockingQueue

    • ArrayBlockingQueue:必须指定容量
    • LinkedBlockingQueue:可指定容量,默认Integer.MAX_VALUE
    • DelayQueue:无上限阻塞队列
    • PriorityBlockingQueue:无上限
    • TransferQueue

    高效的映射、有序集和队列:ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue

    写数组:CopyOnWriteArrayList

    9. 线程池

    Executors:

     
    

    ThreadPoolExecutor

    • 核心线程
    • 工作队列:阻塞队列BlockingQueue
    • 最大线程数量 & 工作线程
    • 工作线程存活时间
    • 饱和策略
     
    

  • 上一篇: java版基础设置
  • 下一篇: 自学java的基础
  • 版权声明


    相关文章:

  • java版基础设置2025-04-18 09:02:04
  • java线程基础详解2025-04-18 09:02:04
  • java 基础接口2025-04-18 09:02:04
  • java基础类型字符2025-04-18 09:02:04
  • java基础包装类2025-04-18 09:02:04
  • 自学java的基础2025-04-18 09:02:04
  • java 语法 基础2025-04-18 09:02:04
  • java基础会了2025-04-18 09:02:04
  • java基础笔记2025-04-18 09:02:04
  • 零基础学java培训2025-04-18 09:02:04