1、将方法或类声明为final
类声明为final,该类不允许被继承,String类为final类,故String类型的引用一定指向的是String类型的对象;方法声明为final,不允许子类进行覆盖(重写)
2、科学计数法是double类型的
3、Java基本数据类型,别人总结好的,看一下(https://www.cnblogs.com/doit8791/archive/2012/05/25/2517448.html)
4、Math.pow(a, b)返回结果是double类型
5、Leetcode中题目要求的返回类型为…,第一种写法报错,按照搜索的结果改成第二种,正确。这里是泛型常踩坑之一,记住(泛型的参数类型必须相同)
List<List<Integer>>
List<List<Integer>> = new LinkedList<LinkedList<Integer>>;
//报错:LinkedList<LinkedList<Integer>> cannot be converted to List<List<Integer>>
List<List<Integer>> = new LinkedList<List<Integer>>;
//正确
6、线程安全的–多个线程可以同时操作
7、官方API的 methods inherited from…只列出直接继承的具体方法,继承的抽象方法、或者重写了的方法不在这里列出
8、native关键字
native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不在当前文件,而是在用其他语言实现的文件中,Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。
JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(Java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。
9、动态数组嵌套一般数组的二维表示方式
//声明方式
List<int[]> res = new LinkedList<>();
//其中int[0][]据说是为性能考虑
int[][] arr = res.toArray(new int[0][]);
10、double数组初始化,初始化列表用分数形式
//ture
double[] pre = new double[]{1/6d, 1/6d, 1/6d, 1/6d, 1/6d, 1/6d};
//false
double[] pre = new double[]{1/6, 1/6, 1/6, 1/6, 1/6, 1/6};
11、>>右移,>>>无符号右移,<<左移
右移:正数补0,负数补1
无符号右移:正数负数都补0
左移:正数负数都补0
12、用Set去重时,HashSet<int[]>不行,因为Array类没有重写Object类的equals方法,仍然比较的是地址,用HashSet<ArrayList<>>可以