【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
#1.public,private,protected,以及不写时的区别?
##public
为公共成员变量和函数成员,在整个类内类外都可使用,在子类变为public
##private
为私有成员变量和函数成员,只在声明的类内可以使用,子类不可用
##protected
为受保护成员变量和函数成员,类外不可使用。类内可以使用,子类变为private
##不使用关键字
默认为类内使用。
#2.int与Integer的区别
Ingeter是int的包装类,int是基本数据类型初值为0,Ingeter是一个类初值为null。
##结论①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,一个引用指向堆,另一个指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false
②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的,都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比
##例子
因为常量池的范围在-128到127 所以他们都是新的对象 比较的话 是比较地址值 所以为false
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6);//false
一个存在常量池 一个是指引常量池的地址值 对比所以为false
Integer i5 = 127;
Integer ii5 = new Integer(127);
System.out.println(i5 == ii5); //false
new了2个不同的对象 肯定不想等 地制止不一致
Integer i7 = new Integer(128);
Integer i8 = new Integer(123);
System.out.println(i7 == i8); //false
#3.Collection和Collections的区别
##Collection
java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collection
##Collections
java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
#4.HashMap和HashTable的区别
##HashMap
底层数据结构是哈希表;允许使用null键和null值,不同步,效率高 ,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;
##HashTable
它继承自Dictionary类 ,不允许键或者值为空,同步,效率低
#5.sleep和wait的区别
1.sleep指线程被调用时,占着CPU不工作,而wait被调用时,等待CPU使用
2.sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常 5.sleep是Thread静态方法,wait是Object的成员方法
来源:oschina
链接:https://my.oschina.net/u/2445275/blog/670319