![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java牛角尖
文章平均质量分 74
张_锋
J2EE architecture
展开
-
Java牛角尖【007】:Java中的Error能不能被Catch
网上看到很多朋友说Java中Error是无法Catch到的,而Java中定义的Error类型又很难测试到,那就估且以为确是如此吧。但是或许大家都有注意,我们时常会看到这样的代码 try{ ...}catch(Throwable ex){ ...} 其中catch中直接捕捉的是一个Throwable类,打开继承关系看一下,Exception和Erro原创 2009-05-12 08:57:00 · 10532 阅读 · 6 评论 -
Java牛角尖【013】: finally块中的代码一定会执行吗?
在Sun Tutorial中有这样一句话:The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs. 看来finally块中的语句应该是总会执行的。 先原创 2010-03-24 08:04:00 · 10722 阅读 · 5 评论 -
Java牛角尖【011】: Java中只支持单继承吗?
又是一个牛角尖,只是语言不够严谨而已,Java中只支持类的单继承,接口之间的继承同样也是使用extends关键字,但是接口之间是支持多继承的,如下面的例子:interface IP1 {}interface IP2 {}public interface ISub extends IP1, IP2 {} 很明显,上面的代码是没有问题的。所以标题中原创 2009-06-23 08:09:00 · 4163 阅读 · 1 评论 -
Java牛角尖【010】: 当对象a.equals(b)时,a.hashCode == b.hashCode吗?
当然不是了,hashCode和equals方法都可以被重写的,如果重写了其中的一个,而没有重写另外一个, 这个结论明显是错误的。 代码如下:public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Test2 t = new Test2原创 2009-06-11 17:03:00 · 2289 阅读 · 1 评论 -
Java牛角尖【008】: 可以通过调用一个线程的run方法启动一个线程吗?
我们知道,我们通过调用线程的start方法启动一个线程,那么,我们可以直接调用run方法来启动一个线程吗? 先看下面一段代码:public class Test { public static void main(String[] args) { // TODO Auto-generated method stub TestThread tt = new TestTh原创 2009-06-11 15:55:00 · 5512 阅读 · 3 评论 -
Java牛角尖【005】:finalize方法什么时间执行?
与C++不同,Java有自己的垃圾回收机制,同时,Java没有了析构函数的概念,转而提供了一个finalize方法,那么finalize方法会在什么时间执行呢? 或许有人以为是在将引用设置为null的时候,现在先看下面的例子: public class Test { public static void main(String[] args) { // TODO Auto原创 2009-06-11 13:53:00 · 3755 阅读 · 1 评论 -
Java牛角尖【009】: 多线程中synchronized的锁定方式
同一个对象中的一个synchronized方法如果已有一个线程进入,则其它的线程必须等该线程结束后才能进入该方法。那么,如果一个类中有多个synchronized方法,会有什么情况呢? 看下面一段代码:public class Test { static Test t = new Test(); static Test2 t2 = new Test2(); publi原创 2009-06-11 16:30:00 · 2150 阅读 · 1 评论 -
Java牛角尖【006】: 匿名内部类可以继承其它类吗?
在Swing开发时,大家应该经常用到下面的代码:JButton btnTest = new JButton();btnTest.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { // do something here }}; 通过匿名内原创 2009-06-11 15:13:00 · 3430 阅读 · 0 评论 -
Java牛角尖【004】:Final类可以有protected属性或方法吗?
Final类可以有protected属性或方法吗?这是一个典型的牛角尖,一个类被声明为final,说明该类不可被继承,如果类不能被继承,那么它可以有protected的属性和方法吗? 答案是可以的,那么,这时的protected到底是什么访问权限叫呢? 一个protected的属性或方法,它可以被同一包中的类访问,或是可以被子类所访问,但是现在它不能有子类,所以,这时protect原创 2009-05-29 22:32:00 · 2225 阅读 · 0 评论 -
Java牛角尖【003】:类初始化时的执行顺序
在初始化一个类时,到底是先执行哪一部分,总体的执行顺序是什么样的呢,同样,当类被释放时,又是怎样一个顺序呢?先来看下面的代码好了。 package net.moon.insignificant.commonclass;class CommonSubClass extends CommonSupperClass { static { System.out.printl原创 2009-05-29 22:00:00 · 3012 阅读 · 0 评论 -
Java牛角尖【002】:类可以被static修饰吗?
其实这个非常确定,在一班类的定义中是不能使用static修饰符的,但是之所以提出来,是因为真有一种情况可以将类定义为static类型的,那就是内部类。 如下的定义中,是一个内部类的实现:package net.moon.insignificant.staticclass;public class StaticClassDemo { public static void原创 2009-05-29 21:36:00 · 5248 阅读 · 0 评论 -
Java牛角尖【001】:抽象类必须有抽象方法吗?
我们都知道,有抽象方法的类是抽象类,反过来说,抽象类都有抽象方法吗? 其实这个问题非常明白,用abstract修饰的类就是抽象类,并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。 下面代码中是一个没有抽象方法的抽象类:abstract class DemoClass{ public void原创 2009-05-29 21:27:00 · 19108 阅读 · 5 评论 -
一段代码, 搞明白Java中的for语句
一段饶舌的代码, 只要搞明白了, 绝对会彻底明白Java中for语句的语法。原创 2011-03-29 17:42:00 · 1715 阅读 · 0 评论