- switch能否用String做参数:
在Java语言中Swith可以使用参数类型有:Only convertible int values, strings or enum variables are permitted
可以自动转换为整型的(byte,short,int),String类型,枚举类型。
Java中不能做为Switch参数的有boolean,float,double,long(不能直接转换为int啊)。 - equals与==的区别:
对于基本数据类型,==比较的是他们的值,对于对象,==比较的是他们的内存地址(前提是对象的equals方法没有被重写,String,Integer,Date这些对象的覆盖了equals方法)
所以如果没有重写equals方法,equals方法和==是相同的,equals方法默认实现也是==,即比较的事对象的内存地址。 - object的基本方法:
1.clone():这里要注意浅复制和深复制的概念,clone()是保护方法,实现对象的浅复制,只有实现Cloneable接口才能调用该方法。
2.getclass():final类型,获得对象类型。
3.toString():一般子类都会覆盖。
4.finalize():用于垃圾回收,一般不会主动调用。
5.equals():可参考上一个小点,一般子类都会覆盖。
6.hashCode():用于哈希查找,一般重写equals方法都要重写hashcode方法,如果不重写hashcode方法hashset中加入两个相同对象都能加进去。
7.wait():
8.notify():
9.notifyAll():这三个方法用于线程同步。(可以多考虑一下wait和sleep的区别,以及为什么这三个方法属于object而不是Thread) - Java的四种引用,强弱软虚,用到的场景
1.强引用:强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下
Object o=new Object(); // 强引用
2.软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。如下:
String str=new String("abc"); // 强引用
<String> softRef=new SoftReference<String>(str); // 软引用
3.弱引用:弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。如果这个对象是偶尔的使用,并且希望在使用时随时就能获取到,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference 来记住此对象。
String str=new String("abc");
WeakReference<String> abcWeakRef = new WeakReference<String>(str);
str=null;
4.虚引用: “虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之 关联的引用队列中。
网友评论