《Java口袋指南》-内容总结

 

Java口袋指南
  •  
    一、语言
    •  
      1.命名
      •  
        类名:大驼峰
      •  
        泛型:E标识集合元素
      •  
        方法名:小驼峰
      •  
        变量名:小写
      •  
        包名:小写或下划线
    •  
      2.词法元素/token
      •  
        字符串压缩优化:-XX:-CompactStrings
      •  
        操作符
        •  
          ~:按位取反
        •  
          instanceof:类型对比
    •  
      3.基本类型
      •  
        拆箱:引用变量名.intValue()
    •  
      4.引用类型
      •  
        举例:注解、数组、类、枚举、接口
      •  
        默认值
        •  
          实例变量默认为null
        •  
          本地变量(方法内部)无默认值,直接检查会编译错误☆
      •  
        对比相等
        •  
          相等操作符==和!=比较对象的内存地址,不比较内容
        •  
          equals()方法默认使用==对比,也可覆盖重写比较值是否相等(如String)
      •  
        拷贝
        •  
          拷贝引用:Object o2 = o1
        •  
          克隆对象
          •  
            实现Cloneable接口,调用clone()方法
          •  
            包括浅克隆(对象内部指向的引用对象不生成副本)和深克隆(需要手动定义)
    •  
      5.面向对象编程
      •  
        变长参数列表
        •  
          如:String ... names(实例:printf("%s",String...str))
        •  
          编译时被作为数组,也可通过增强for循环迭代
      •  
        手动定义注解
        •  
          包含:标记注解、单值注解、多值注解
        •  
          定义:public @interface Feedback{String reportName();}
        •  
          取值:this.getAnnotation(Feedback.class)
      •  
        函数式接口
        •  
          又称单参数方法SAM接口,仅定义一个抽象方法的接口
        •  
          可以加@FuncationalInterface标识,但允许有多个默认方法default public xxx
        •  
          创建实例:lambda表达式、方法引用、构造器引用
    •  
      6.语句和代码块
      •  
        控制转移语句
        •  
          包括:break/continue/return
        •  
          添加标签的break语句,可以break+指定标签(通常放在循环前+:)
      •  
        synchronized语句:限制只能有一个线程对代码区进行访问
      •  
        断言语句
        •  
          是Boolean表达式
        •  
          可以包含错误码,即assert express==true:"error express"+express
    •  
      7.异常处理
      •  
        层级结构-Throwable-(Exception,Error)
      •  
        分类
        •  
          检查型异常Exception
          •  
            编译期通过编译器检查
          •  
            可以进行捕获或抛出throws(方法体throw new IOException())
          •  
            如:SQLException/InterruptedException/NoSuchMethodException
        •  
          非检查型异常RuntimeException
          •  
            运行时触发
          •  
            如:DateTimeException/IllegalArgumentException/IndexOutOfBound
        •  
          错误Error
          •  
            如:OutOfMemoryError/StackOverflowError/VirtualMachineError
        •  
          异常和错误均可以进行捕获try catch或抛出throw
      •  
        语句和关键字
        •  
          抛出异常时,可以使用throw new Exception()语句
        •  
          捕获
          •  
            try..catch:优先级从前往后,先写具体异常,最后写通用异常
          •  
            try...finally:用于释放资源始终执行,遇到异常则选择抛出
          •  
            try-with-resources
            •  
              实现AutoClosable接口的资源在不使用时关闭
            •  
              如:try(fileWriter)
      •  
        异常处理过程
        •  
          定义自己的异常类
          •  
            定义各种类型(检查型、非检查型、错误),均需要进行继承各自的类
          •  
            包含无参构造器及有参构造器(包括异常消息和id)
        •  
          打印异常信息
          •  
            getMessage():字符串返回异常详细信息
          •  
            toString():带类名的异常详细信息
          •  
            printStackTrace():带类名和栈跟踪信息的异常描述信息
    •  
      8.修饰符
      •  
        分类
        •  
          定义了类、接口、构造器、方法和数据成员的访问权限
        •  
          访问修饰符
          •  
            default(默认,包私有)、private、protected(包外子类)、public(任意位置)
        •  
          非访问修饰符
          •  
            abstract、final(与抽象互斥)、native(其他语言代码合并)
          •  
            static、synchronized、transient(不被序列化的瞬态关键字)、volatile(线程最新值)
      •  
        修饰符的编码与打印
        •  
          分类:.getClass()得到Class或Member
        •  
          获取修饰符:.getModifier()
        •  
          对修饰符解码:Modifier.toString(xxx..getModifier())
  •  
    二、平台
    •  
      9.JAVA SE(平台标准版)
      •  
        语言工具库:java.lang(唯一默认导入的包)/util
      •  
        基础库:java.beans/io/nio/math/net/file/net/time
      •  
        集成库:java.sql/naming/jws
      •  
        其他
        •  
          远程方法调用库:rmi
        •  
          用户界面库:javax.print/javafx.beans
        •  
          安全库:security
        •  
          可扩展标记语言库:javax.xml
    •  
      10.开发的基础工具
      •  
        命令行工具
        •  
          编译器javac:源码转字节码
        •  
          解释器java:负责程序的执行
        •  
          打包器jar:可将指定文件打入jar包(打印包文件列表)
      •  
        jar文件执行过程
        •  
          javac编译并放入指定包(文件夹)
        •  
          包所在目录创建Manifest.txt文件,声明Main Class
        •  
          执行jar cmf manifest.txt hello.jar com/life,将文件内容加入清单文件METS-INF/MANIFEST.MF
        •  
          java -jar hello.jar运行打包后的文件
    •  
      11.内存管理
      •  
        自动内存管理(GC)
        •  
          任务:分配内存、维护内存中对象的引用、恢复不再引用对象的内存
        •  
          目标:最大的暂停时间、吞吐量目标
      •  
        常见的垃圾收集器
        •  
          Serial收集器:单线程串行执行程序运行与GC
        •  
          Parallerl收集器
        •  
          Parallel整理收集器
        •  
          并发标记清除CMS收集器
        •  
          垃圾优先G1收集器
      •  
        内存管理工具
        •  
          jvisualvm:问题排查工具
        •  
          jconsole:java管理扩展(JMX,Exention)监控工具
        •  
          jstat:JVM统计监控工具
        •  
          jmap:内存映射工具
        •  
          jstack:栈跟踪工具
        •  
          其他:jinfo、jstatd、jmc、jcmd、jdb、jps
      •  
        命令行参数
        •  
          -XX:+PrintGC(Details/Timestamp)
        •  
          -XX:+Use(Serial/G1/Parallel)GC
        •  
          -Xmx/Xmn/Xms:堆空间、新生代大小
      •  
        与GC交互
        •  
          显示调用GC(强制full GC)
          •  
            System.gc()或Runtime.getRuntime().gc()
        •  
          覆盖终结方法finalize()
          •  
            extends继承,try+finally,执行super.finalize()
    •  
      12.基本输入输出
      •  
        标准流in、out、err
        •  
          System.in.read()
        •  
          System.out.write()/print()
        •  
          System.err.print()
      •  
        标准输入输出类
        •  
          层级结构
          •  
            文本:Reader/Writer
          •  
            二进制:InputStream/OutputStream
      •  
        实现类:Buffered/Data/File/Piped/Object(序列化)/Printer+xxx
      •  
        其他
        •  
          Socket(ip,port).getInputStream()读写
        •  
          压缩和解压文件(G)ZipIn(Out)putStream
    •  
      13.新I/O(NIO 2.0)
      •  
        Path接口
        •  
          用于操作文件和目录
        •  
          获取:Paths.get("\root\soft")
        •  
          功能:getName/getRoot/getParent/toUri……
      •  
        Files类
        •  
          用于CRUD文件或目录
        •  
          变动:createDirectories/File/move/copy
        •  
          查询:isReadable/isExecutable/Writable/Hidden
      •  
        其他特性
        •  
          PathMatcher函数式接口查找文件
        •  
          FileVisitor接口递归访问目录树
        •  
          WatchService实现目录监控
    •  
      14.并发(多线程)
      •  
        概述:线程允许使用多个处理器或核心,从而使得计算更高效☆
      •  
        创建(实现run方法,调用实例的start启动)
        •  
          继承/扩展Thread类
        •  
          实现Runnable接口
      •  
        Thread.state枚举状态
        •  
          新建、可运行(就绪)、阻塞、等待(wait/join激活)、时间等待(休眠)、终止
      •  
        常用方法
        •  
          Thread类
          •  
            普通方法:get优先级/状态,检查is中断/存活,中断、设置优先级
          •  
            静态方法:sleep/yield,返回线程数量、引用、中断状态
        •  
          Object类
          •  
            wait、notify、notifyAll
      •  
        同步
        •  
          概述:将synchronized关键字应用到代码块和方法上
        •  
          格式:同步锁synchronized(对象实例this){}、sychronized vod mthod(){}
      •  
        并发工具集(JUC)
        •  
          executor执行器(线程池)
          •  
            接口:Executor,类:(Scheduled)ThreadPoolExecutor
          •  
            方法:newCached/Fixed/Schedule/SingleThreadExecutor(int n)
          •  
            使用:.execute(t1),.shutdown()
        •  
          并发集合
          •  
            ConcurrentMap/HashMap/SkipListMap/Set
          •  
            COW(写时复制副本):CopyOnWriteArrayList/Set
          •  
            (Priority)BlockingQueue/Deque-阻塞队列
        •  
          同步器synchronizer
          •  
            Semaphore/CountDwonLatch/CyclicBarrier/Exchanger
        •  
          时间工具类TimeUint常量
          •  
            tryLock(15L,TimeUnitSECONDS)=15秒,通知方法如何计算时间参数
    •  
      15.集合框架
      •  
        Collection接口:List/Map/Queue/Set
      •  
        方法:put/add/get/remove,contains/Key/Value
      •  
        工具类方法:addAll/max/min/disjoint/copy/rotate/swap/sort/fill/replaceAll
      •  
        Comparator接口与List.of()工厂方法
    •  
      16.泛型框架
    •  
      17.脚本API
      •  
        Script s = scriptEngineManager.getEngineExtention()
      •  
        s.eval(指令或FileReader(文件))
    •  
      18.日期和时间API
    •  
      19.Lambda表达式
      •  
        λE基础
        •  
          包含一个函数式接口FI,理想情况下有@FI注解
        •  
          方法与构造器引用:ArrayList<Integer>::new/String::length
      •  
        函数式接口
        •  
          特定的:FileFilter/Runnable/Callable/Compator
        •  
          通用的:Consumer/Predicate/Supplier
    •  
      20.JSHell
    •  
      21.模块系统
以上内容整理于 幕布文档
posted @ 2022-10-06 21:46  哥们要飞  阅读(26)  评论(0编辑  收藏  举报