java 深入了解

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、

原文地址:https://www.cnblogs.com/supperlhg/p/9171902.html