叨叨两句
- 搞定~一晃就是299天,恍如隔世一般,看来,坚持的方法已经算搞明白了。
牛客网——java专项练习038
1
java Thread中,run方法和start方法的区别,下面说法错误的是?
正确答案: B
- 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状B 态,并没有运行。
- 他们都可以实现了多线程运行。
- run方法是thread的一个普通方法调用。
- 调用start方法后,一旦得到cpu时间片,就开始执行run()方法。
两种方法的区别:
1.start方法
用 start方法来启动线程,是真正实现了多线程, 通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法。但要注意的是,此时无需等待run()方法执行完毕,即可继续执行下面的代码。所以run()方法并没有实现多线程。
2.run方法
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码。
2
关于抽象类与最终类,下列说法错误的是?
正确答案: D 你的答案: C (错误)
- 抽象类能被继承,最终类只能被实例化。
- 抽象类和最终类都可以被声明使用
- 抽象类中可以没有抽象方法,最终类中可以没有最终方法
- 抽象类和最终类被继承时,方法可以被子类覆盖
最终类就是被final修饰的类,最终方法就是被final修饰的方法。最终类不能被继承,最终方法不能被重写。
对于选项B. 抽象类和最终类都可以被声明使用。
这里只是说“声明”,并没有说“实例化”;如果只是声明是可以的,最常见的使用方式就是:
1、父类类型的引用指向子类的对象;
2、 接口类型的引用指向该接口的实现类的对象;
以上两种使用方式也就是所谓的“向上转型”。
抽象类时专门拿来被继承的,其实也可以没有抽象方法。抽象类是不能实例化的,实例化必将加载类,然后根本不知道抽象方法的方法体大小,所以不能实例化。
而final类,之所以被定义为final类是认为这个类已经很完美了,不希望被继承被扩展或者被修改。final方法是可以被继承的,但是不可以被覆盖。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。