大家注意:关于网上广泛流传的面试题的答案的疑问?就剩这些分了......对不起少了点....
第二题,
问:Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
答:匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
疑:我认为答案应该是可以,可以。匿名内部类可以继承其他的类;只要通过A a = new A(){.....}就可以实现;当然也可以扩展接口;
-------------
第十一,
问:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。
疑:为什么 s1 += 1;就没有错误,难道这样写就可以自动转型了吗?
------------
第十二题,
问:sleep() 和 wait() 有什么区别? 搞线程的最爱
答:sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
疑:如果我们用sleep那么这个线程是不是可能永远就不能在启动了呢。。。???
-----------
第十五题,
问:Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
疑:如果改变了方法的返回值,那么这还能叫重载吗??
----------
第二十一题,
问:abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能
疑:
public abstract class AbstractTest {
public static void a(){}
public static void b(){}
}
没有编译错误,他们都是static啊。。答案怎么是不能呢??
-----------
第26题
问: 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
答: 不能,一个对象的一个synchronized方法只能由一个线程访问。
疑: 难道一个对象的一个synchronized方法被一个线程访问,这个对象的其他方法都不能被其他的线程访问吗,这和其他方法有什么关系吗?
-----------
第30题,
问: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
答: 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
疑: 请注意他的回答“参数的值就是对象的引用”,既然是这样为什么还是值传递呢?值传递和引用传递有什么区别呀?