某些点会在不远的将来深挖。
- >>是逻辑右移,>>>是算术右移
-
JDK6
可以使用Console.readPassword从控制台中读取密码,用户输入的过程中密码是不可见的。public static void main(String[] args) { Console cs = System.console(); String username = cs.readLine("User name: "); char[] passwd = cs.readPassword("Password: "); }
- printf格式化输出中的
%s
转换符能格式化任意的对象,对于实现了Formattable
接口的对象将调用formatTo
方法,否则将调用ToString
方法。 -
Java的文件读取:通过File构造一个Scanner对象;写入文件:构造一个PrintWriter对象
Scanner in = new Scanner(Paths.get("myfile.txt","UTF-8");
PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
- Math中的
BigInteger
和BigDecimal
可以满足高精度的运算需要。 -
匿名数组的写法:
new int[]{17,19,23,29,31,37}
-
finalize方法:相当于析构方法,在垃圾回收器清除对象之前调用。但不推荐使用这个方法,因为很难确定这个方法在什么时候才能被调用。
-
import static
是静态导入,可以导入某个类中的静态方法和静态字段。 -
可变参数列表:
function(Object... values)
,在函数内部可以把values看成一个参数数组。 -
java8方法引用:
- 对象的方法引用
object::instanceMethod
- 类的静态方法引用
Class::staticMethod
- 任意类的任意对象的方法引用:
Class::instanceMethod
,它只能被该类的实例对象调用。 - 类的构造器调用
Class::new
- 对象的方法引用
- 内部类
为什么要使用内部类- 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
- 内部类可以对同一个包种的其他类隐藏起来。
- 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。
内部类类型
- 普通内部类
- 局部内部类(在方法中定义的内部类,不能有访问修饰符,不能是static)
局部内部类可以访问当前代码块的常量,和此外围类的所有成员。 - 静态内部类(声明为static,不依赖于外部类的对象存在,实际上成为了一个顶级类)
- 匿名内部类(立刻使用,代码短小,只用到一个实例)
语法:new SuperType(construction parameter){inner class methods and data}
内部类底层实现(普通内部类):
- 编译器自动为内部类添加一个成员变量,该成员变量的类型和外部类的类型相同,这个成员变量就是指向外部类对象引用。
- 编译器自动为内部类的构造方法添加一个参数,参数的类型是外部类的类型,在构造方法内部使用这个参数为1中添加的成员变量赋值。
- 在调用内部类的构造函数初始化内部类对象时,会默认传入外部类的引用。
- Java动态代理:https://www.jianshu.com/p/95970b089360
-
Throwable分层:
Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。
Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受查异常(非受查异常在运行之前不会知道有错误),所有其他的异常称为受查异常(受查异常在编译之前就能知道,必须用try/catch捕获)。 -
断言:
- assert 条件;
- assert 条件:表达式;
如果结果是false,抛出一个AssertionError异常,第二种形式使用表达式构造AssertionError,转换成消息字符串。
-
可以在普通类里面定义泛型方法:
T function(T... param)
代表T是BoundingType的子类。
代表T是BoundingType的超类。
BoundingType可以是用”&”分隔的多个类
java泛型-类型擦除:https://www.cnblogs.com/joeblackzqq/p/10813143.html -
java关键字
volatile
:确保本条指令不会因编译器的优化而省略,且要求每次直接读值 -
java关键字
transient
: 标记的成员变量不参与序列化过程
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/java%e5%9f%ba%e7%a1%80%e6%9f%a5%e7%bc%ba%e8%a1%a5%e6%bc%8f01/