《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.模块系统
 
 - 
 
以上内容整理于 幕布文档 
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16758601.html
                    
                
                
            
        
浙公网安备 33010602011771号