《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口袋指南》-内容总结的更多相关文章
- 剑指Offer——银行网申内容模版
剑指Offer--银行网申内容模版 年获得"优秀共青团员"称号 2013.12 科技标兵 2013.10 三好学生 2013.10 "三下乡"优秀学生 2013 ...
- 《剑指offer》内容总结
(1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...
- 面试经典算法题集锦——《剑指 offer》小结
从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...
- 《剑指offer》全部题目-含Java实现
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...
- 剑指Offer——京东实习笔试题汇总
剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...
- 剑指Offer——关于劳动合同,这6件事毕业生必须知道!
剑指Offer--关于劳动合同,这6件事毕业生必须知道! 求职找工作,不少人拿到劳动合同的那刻,可能连合同内容都没看清,就挥着笔杆子"签签签".别急!劳动合同包含哪些条款你清楚 ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- 剑指Offer——中国银行面试知识储备
剑指Offer--中国银行面试知识储备+面试内容 事件介绍 时间:2016.11.23 08:30 地点:北京市海淀区永丰路299号南门(中国银行软件中心) 事件:中国银行面试(中英文面试) 注意事项 ...
- 剑指Offer——如何做好自我介绍
剑指Offer--如何做好自我介绍 前言 自我特点+经历梳理 各位老师好,我叫某某某,XX人.研究生三年级,就读于某某大学信息科学与工程学院软件工程专业.主要使用的开发语言是Java,熟悉基本数据 ...
- 剑指Offer——知识点储备--Linux基本命令+Makefile
剑指Offer--知识点储备–Linux基本命令 1.linux下查看进程占用cpu的情况(top): 格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 主要参 ...
随机推荐
- docker -v 和Dockerfile 中VOLUME 区别
在学习Dockerfile的过程中有个VOLUME命令,很多教程或书中说的是用来定义匿名卷的,其作用如下: 容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文 ...
- 3_JavaScript
一. 介绍 JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码 JS是弱类型, Java是强类型 特点 交互性(它可以做的就 ...
- MiniWord .NET Word模板引擎,藉由Word模板和数据简单、快速生成文件。
Github / Gitee QQ群(1群) : 813100564 / QQ群(2群) : 579033769 介绍 MiniWord .NET Word模板引擎,藉由Word模板和数据简单.快速生 ...
- PAT (Basic Level) Practice 1010 一元多项式求导 分数 25
设计函数求一元多项式的导数.(注:xn(n为整数)的一阶导数为nxn−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数).数字间以空格分隔. 输出格式: ...
- NSIS隐藏窗口标题栏自带的按钮(最大化,最小化,关闭X)
这个问题实在八月份逛csdn论坛的时候偶然遇到的,当时比较好奇楼主为啥要隐藏关闭按钮,就顺口问了下,结果楼主已经弃楼,未给出原因,猜着可能是为了做自定义页面美化,无法改变按纽外观之类的,后来琢磨了下, ...
- 从缓存入门到并发编程三要素详解 Java中 volatile 、final 等关键字解析案例
引入高速缓存概念 在计算机在执行程序时,以指令为单位来执行,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入. 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这 ...
- 邻接矩阵bfs
#include<bits/stdc++.h> using namespace std; int a[11][11]; bool visited[11]; void store_graph ...
- MFC-创建MFC图形界面dll
创建MFC图形界面dll 概述: 利用MFC的DLL框架,制作带有图形界面的dll,可以实现很多功能. 流程: 选择静态链接MFC DLL:以免有的库没有. 采用该框架创建的MFC,会自动生产一个MF ...
- 【python】Ubuntu中多条命令的运行
在模型训练时,往往需要消融实验,通常都是在一个程序运行结束后才再次手动运行下一个,不及时在电脑前可能无端浪费时间,因此需要让程序自动一个接一个去执行.受此启发,特了解了Ubuntu中多命令运行的内容. ...
- 一键上手时下最火AI作画工具
摘要:在华为云ModelArts上, 无需考虑计算资源.环境的搭建,就算不懂代码,也能按照教程案例,通过Stable Diffusion成为艺术大师. 本文分享自华为云社区<跟着华为云Model ...