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.模块系统
以上内容整理于幕布文档

《Java口袋指南》-内容总结的更多相关文章

  1. 剑指Offer——银行网申内容模版

    剑指Offer--银行网申内容模版 年获得"优秀共青团员"称号 2013.12 科技标兵 2013.10 三好学生 2013.10 "三下乡"优秀学生 2013 ...

  2. 《剑指offer》内容总结

    (1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...

  3. 面试经典算法题集锦——《剑指 offer》小结

    从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...

  4. 《剑指offer》全部题目-含Java实现

    1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...

  5. 剑指Offer——京东实习笔试题汇总

    剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...

  6. 剑指Offer——关于劳动合同,这6件事毕业生必须知道!

    剑指Offer--关于劳动合同,这6件事毕业生必须知道!   求职找工作,不少人拿到劳动合同的那刻,可能连合同内容都没看清,就挥着笔杆子"签签签".别急!劳动合同包含哪些条款你清楚 ...

  7. 剑指Offer——Java实现栈和队列的互模拟操作

    剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列   题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型.   思路:其实就是把队列正常入 ...

  8. 剑指Offer——中国银行面试知识储备

    剑指Offer--中国银行面试知识储备+面试内容 事件介绍 时间:2016.11.23 08:30 地点:北京市海淀区永丰路299号南门(中国银行软件中心) 事件:中国银行面试(中英文面试) 注意事项 ...

  9. 剑指Offer——如何做好自我介绍

    剑指Offer--如何做好自我介绍 前言 自我特点+经历梳理   各位老师好,我叫某某某,XX人.研究生三年级,就读于某某大学信息科学与工程学院软件工程专业.主要使用的开发语言是Java,熟悉基本数据 ...

  10. 剑指Offer——知识点储备--Linux基本命令+Makefile

    剑指Offer--知识点储备–Linux基本命令 1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参 ...

随机推荐

  1. 第六章:Django 综合篇 - 10:消息框架 message

    在网页应用中,我们经常需要在处理完表单或其它类型的用户输入后,显示一个通知信息给用户. 对于这个需求,Django提供了基于Cookie或者会话的消息框架messages,无论是匿名用户还是认证的用户 ...

  2. kvm命令管理虚拟机

    virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式: KVM 工具集合 libvirt:操作和管理KVM虚机的虚拟化 ...

  3. 在Kuboard上安装 Ingress Controller

    快速安装 # 只在 master 节点执行 kubectl apply -f https://kuboard.cn/install-script/v1.18.x/nginx-ingress.yaml ...

  4. SpringBoot项目的CI配置 # 安全变量

    运行GitLab Runner容器 参考Run GitLab Runner in a container - Docker image installation and configuration 执 ...

  5. PVC-U排水管及管件

  6. Linux make编译

    安装问题 linux编译流程 linux开发部分 一般来说著名的linux系统基本上分两大类: RedHat系列:Redhat.Centos.Fedora等 Debian系列:Debian.Ubunt ...

  7. Go实现优雅关机与平滑重启

    前言 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式.而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出 ...

  8. Java19虚拟线程都来了,我正在写的线程代码会被淘汰掉吗?

    Java19中引入了虚拟线程,虽然默认是关闭的,但是可以以Preview模式启用,这绝对是一个重大的更新,今天Java架构杂谈带大家开箱验货,看看这家伙实现了什么了不起的功能. 1 为什么需要虚拟线程 ...

  9. POJ1094 Sorting It All Out (floyd传递闭包)

    关系具有传递性,可以用floyd解决. 将关系都看做i<j的形式,令d[i][j]=1,如果d[i][j]=d[j][i]=1,说明矛盾:d[i][j]=d[j][i]=0,说明i与j的关系无法 ...

  10. 几个Caller-特性的妙用

    System.Runtime.CompilerServices命名空间下有4个以"Caller"为前缀命名的Attribute,我们可以将它标注到方法参数上自动获取当前调用上下文的 ...