java笔试——错题集1

Java基础&纠错
1.知识点:null,静态(静态方法也叫类方法)
public class TestClass {
private static void testMethod(){
System.out.println(“testMethod”);
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
//编译正确,输出testMethod

A.null可以被强制类型转换成任意的类型(TestClass)null,这里被转成了一个类,所以可以通过类名调用静态方

法。

package NowCoder;
class Test {
public static void hello() {
System.out.println(“hello”);
}
}
public class MyApplication {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test=null;
test.hello();
}
}
//编译正确,能正确运行

B.值得一说的是这个空指针问题,如果出现空指针必须去引用堆对象才会有空指针,在这个地方hello()是直接通

过类名调用的静态方法,根本不存在空指针问题
C.另外值得一提的是Test test = null;这句,可以先把他理解成,在栈中开辟空间给了Test test 然后这个所指

向的地址值为空吧,所以这个类是进行了初始化的,可以使用其中的静态方法,静态变量。
D.静态要注意一点,无法在静态上下文引用非静态变量,所以直接调用方法的时候,要注意要么都是静态,要么都

是非静态。不然就要通过创建对象,实例化调用方法

2.知识点:同步
下面关于java的一些细节问题,描述错误的是?
a.构造方法不需要同步化
b.一个子类不可以覆盖掉父类的同步方法

A.构造方法每次都是创建新的对象,不存在多个线程同时读写同一对象中属性的问题,所以不需要同步;
B.如果父类中的某个方法是用了synchronized关键字,而子类中也覆盖这一方法,那默认情况下子类的这个方法是

不同步的,必须显示的在子类的这个方法中加上synchronized关键字才可;当然也可以在子类中调用父类中相应的

方法,这样虽然子类中的方法并不是同步的,但子类调用了父类的同步方法,也就相当于子类方法也同步了

3.知识点:构造方法,方法和类名
下面说法正确的有
a.constructor必须与class同名,但是方法不能与class同名

A.方法可以与类同名,和构造方法的唯一区别就是,构造方法是没有返回值的,构造方法可以由任意访问修饰符修

饰访问,如public,protected,private,但是不能由static,finally等修饰符修饰。

4.知识点:泛型数据
在开发中使用泛型数据取代非泛型数据(比如用ArrayList取代ArrayList),程序运行时

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值