1.java native关键字:A native method is a Java method whose implementation is provided by non-java code.
native修饰的方法,不在当前文件中实现,而是在由其他语言(例如C,C++)的文件中实现的。
2.equals方法
public boolean equals(Object obj){
return (this==obj);
}
即:只要两个对象不指向同一个对象,就返回false。
对于java的八个基本数据类型(例如int,short)和String类(已重写了equals()方法),默认比较的是值。
以下是关于hashcode的一些规定:
两个对象相等,hashcode一定相等
两个对象不等,hashcode不一定不等
hashcode相等,两个对象不一定相等
hashcode不等,两个对象一定不等
3.Collection和Collections的区别
Collection是集合框架的顶级接口,List接口,Set接口,实现了Collection接口。
Map是集合的另一个根接口,
Collections是提供集合操作的静态方法组合,不能被实例化,就像一个工具类,服务于java的Collection框架。
例如:Collections.sort(List<T> list)
图片转载https://www.cnblogs.com/Kunrong/p/8590673.html
4.StringBuffer和StringBuilder
StringBuffer和StringBuilder都是字符变量,常用方法append(),和insert()方法
StringBuffer实现了线程安全,(synchronized),StringBuilder实现了StringBuffer的所有方法,非线程安全,
一般情况下,推荐使用StringBuilder类,因为它更快。
5.泛型(以下全是照抄菜鸟)
允许程序员编译时输入非法的参数类型
书写方式:一对尖括号扩起来,例如:<T>
泛型方法:写在返回类型前面的位置,例如:
public static <T> void(T t){};
泛型类:
public Generics<T>{private T t;};
5.类加载
虚拟机把class文件加载到内存里面,然后对数据进行准备,验证,解析。初始化,最终是可以被虚拟机直接使用的java类型。
另外:了解下类的生命周期:加载,链接(准备,验证,解析),初始化,使用,卸载
java类加载 是因为在运行时当它需要引用某个类的时候,会先去加载这个类,就是去读这个class文件到内存里面来,现在还没有创建这个类的实例,
你可以理解为 你写的java代码在编译成class文件后,并没有去执行,或者去引用他,只有程序运行时它将要使用这个类的时候才会去读取这个class文件,这时候叫做类加载,当缓存了这个类文件之后,后面的创建类的时候都会去引用它,因为类加载是运行是加载,所以java代码在运行时是有办法修改的,同样java类加载也允许加载一个远程的class文件,也代表它是支持程序不停止时更新程序代码的。(转自:https://zhidao.baidu.com/question/1836140087436072900.html)
Class.forClass()有两个重载函数,可以决定返回的对象是否初始化,一般使用Class.forClass(String str) 会初始化(即在类的生命周期的初始化阶段了)。ClassLoader在加载阶段(应该是吧)
6静态变量,静态方法,静态代码详解
https://www.cnblogs.com/lubocsu/p/5099558.html(说的不错)
7java类,成员初始化顺序
https://blog.csdn.net/qq_27093465/article/details/70292221
8反射
接口java.lang.reflect
(常用的)四个类:Constructor,Method,Field,Proxy(动态代理)
Class clazz=Class.forName(String str);
//Object obj=clazz.newInstance();
Method[] methods=clazz.getMethods();
for(Method method:methods){
System.out.print(" "+method.getName());
}
9 ==和equals的区别
==是比较运算符,对于基本数据类型而言,比较的是值;对于引用类型而言,比较的是否为同一对象,即对象的地址是否相同。
equals是Object的一种方法,默认情况下,返回的是==的结果,可以对该方法进行重写。例如在java中 String,Integer,Long等对象都对equals进行了重写。
10.java volatile关键字 from https://www.cnblogs.com/zhengbin/articles/5654805.html
java内存模型的三个概念:可见性,原子性,有序性
11.多线程多线程访问冲突的解决方式
https://www.cnblogs.com/0820LL/p/9633787.html