1、可变参数
Integer ... id
可变参数放置到参数末尾 参数获取id[xxx]
2、断言
Assert 断言:断言是在Java 1.4中引入的。它能让你验证假设。如果断言失败(即返回false),就会抛出AssertionError(如果启用断言)。
断言不应该用于验证输入数据到一个public方法或命令行参数。IllegalArgumentException会是一个更好的选择。在public方法中,只用断言来检查它们根本不应该发生的情况。
3、JVM垃圾回收机制
JVM的垃圾回收操作存在:堆可用空间不足的情况;CPU空闲的情况
但是这是很不严谨的回收机制,我想着是造成java本身效率&内存浪费情况的原因之一(吧)
我们可以通过这样一个请求(请求!!!)System.gc()方法来运行垃圾回收。
当内存已满,且堆上没有对象可用于垃圾回收时,JVM可能会抛出OutOfMemoryException。
对象在被垃圾回收从堆上删除之前,会运行finalize()方法。我们建议不要用finalize()方法写任何代码。
4、初始化数据块
静态初始化器:加载类时运行的的代码
static{}
方括号之间的代码被称之为静态初始化器,只有静态变量可以在静态初始化器中访问。无论创建无数个实例,但是静态初始化器始终只运行一次。
实例初始化器:创建新对象时运行的代码
XXX xxx = new XXX();
5、常用正则表达式类
Patter,Matcher和Scanner类
6、令牌化
令牌化是指在分隔符的基础上将一个字符串分割为若干个子字符串。例如,分隔符;分割字符串ac;bd;def;e为四个子字符串ac,bd,def和e。
分隔符自身也可以是一个常见正则表达式。
String.split(regex)函数将regex作为参数。
使用扫描器类令牌化:
private static void tokenizeUsingScanner(String string,String regex) { Scanner scanner = new Scanner(string); scanner.useDelimiter(regex); List<String> matches = new ArrayList<String>(); while(scanner.hasNext()){ matches.add(scanner.next()); } System.out.println(matches); } tokenizeUsingScanner("ac;bd;def;e",";"); //[ac, bd, def, e]
7、Data 中添加小时
Date中所有日期操作都要通过添加毫秒到Date中才能完成。
8、日历类
熟练的使用日历类(Calendar)&标准日历类(GregorianCalendar前一个的子类)
对日期的变化进行便捷操作
Calendar calendar = Calendar.getInstance();// 获得实例
GregorianCalendar time = new GregorianCalendar(year, mouth, day);//获得实例
calendar.setTime();
9、数字格式化类NumberFormat Class
输出不同国家的标准数字格式。
10、AOP编程 面向切面编程
原理:java的反射机制
常见Spring注解
11、java反射机制
待定...
12、