选择.docx
- 文档编号:24898908
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:50
- 大小:34.96KB
选择.docx
《选择.docx》由会员分享,可在线阅读,更多相关《选择.docx(50页珍藏版)》请在冰豆网上搜索。
选择
选择知识点:
1以下是接口I的定义:
interfaceI
{
voidsetValue(intval);
intgetValue();
}
以下哪段代码能通过编译?
C
A、classAextendsI{
intvalue;
voidsetValue(intval){value=val;}
intgetValue(){returnvalue;}
}
B、classBimplementsI{
intvalue;
voidsetValue(intval){value=val;}
}
C、interfaceCextendsI{
voidincrement();
}
D、interfaceDimplementsI{
voidincrement();
}
线程:
1.下列说法中,正确的一项是() A
A. 单处理机的计算机上,2个纯种一官半职直不能并发执行
B. 单处理机的计算机上,2个线程实际能够并发执行
C. 一个线程可以包含多个线程
D. 一个进程只能包含一个线程
2. 下列说法中错误的一项是()A
A. 线程就是程序
B.线程是一个程序的单个执行流
B. 多线程是指一个程序的多个执行流
D.多线程用于实现并发
3. 下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)
A. 等待阴塞状态下的线程被notify()唤
B. 等待阻塞状态下的纯种被interrput()中断
C. 等待时间到
D. 等待阻塞状态下的线程调用wait()方法
4. 下列哪个方法可以使线程从运行状态进入其他阻塞状态
(A) A. sleep B.wait C.yield D.start
5. 下列不是进程组成部分的一项是(D)
A. 代码 B.数据 C.内核状态 D.显示器
6. 下列哪一个不属于java线程模型的组成部分(D)
A. 虚拟的CPU B.虚拟CPU执行的代码 C. 代码所操作的数据 D.执行流
7. 下列说法中错误的一项是(C)
A. Java中的第一个线程都属于某个线程组
B. 线程只能在其创建时设置所属的线程组
C. 线程创建之后,可以从一个线程组转移到另一个线程组
D. 新建的线程默认情况下属于其父线程所属的线程组
8. 下列不属于线程组成部分的一项是(C)
A. 程序计数器 B.堆栈 C. 进程地十空间中的代码 D.栈指针
9. 下列关于JAVA线程模型的说法中,错误的一项是(A)
A. Java线程模型包括计算机的CPU
B.代码可以与其他线程共享
C. 数据可以被多个线程共享
D.线程模型在java.lang.Thread类中被定义
10. 下列说法中错误的一项是(D)
A. 一个线程是一个Thread类的实例
B. 线程从传递给纯种的Runnable实例run()方法开始执行
C. 线程操作的数据来自Runnable实例
D. 新建的线程调用start()方法就能立即进入运行状态
11. 下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)
A. 在线程A中执行线程B的join()方法,则线程A等待直到B执行完成
B. 线程A通过调用interrupt()方法来中断其阻塞状态
C. 若线程A调用方法isAlive()返回值为true,则说明A正在执行中
D. currentThread()方法返回当前线程的引用
12. 下列说法中,错误的一项是()
A. 对象锁在synchronized()语句执行完之后由持有它的线程返还
B. 对象锁在synchronized()语句中出现异常时由持有它的线程返还
C. 当持有锁的线程调用了该对象的wait()方法时,线程将释放其持有的锁
D. 当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁
13. 下面的哪一个关键字通宵用来对对象的加锁,从而使得对对象的访问是排他的 A
A. sirialize B transient C synchronized D static
14. 下列关于线程的说法以中,正确的一项是(D)
A. 由同一类创建的多个线程都同时运行结束
B. 创建线程只能通过继承java.lang.Thread类
C. 调用suspend()方法暂停的一个线程将不会再被重新执行
D. 程序的执行完毕与超级线程(daemon threads)无关
15. 下列说法中错误的一项是(C)
A. 可串行化的类必须实现Serializable接口
B. 可串行化的类中的静态变量可以不被串行化
C. private数据访问权限能够限制数据不被串行化
D. 对象串行化使用java语言提供的默认机制
16. 下列说法中错误的一项是(C)
A. 可串行化的类必须实现Serializable接口
B. 可串行化的类中的静态变量可以不被串行化
C. private数据访问权限能够限制数据不被串行化
D. 对象串行化java语言提供的默认机制
17. 下列说法中正确的一项是(A)
A. 代码和数据是进程的组成部分
B.代码和数据是线程的组成部分
C. 进程是轻型的线程
D.线程中包括线程
18. 下列说法中错误的一项是(C)
A.java的纯种体由Thread类的run()方法定义
B.线程创建时已经确定了提供线程体的对象
C.在程序中通过调用 Thread类的run()方法创建线程对象
D.java中每一个线程都有自己的名字
19. 下列说法中错误的一项是(B)
A.共享数据的所有访问都必须使用synchronized加锁
B.共享数据的访问不一定全部使用synchronized加锁
C.所有的对共享数据的访问都是临界区
D.临界区必须使用syschronized标识
20. 下列有关线程的叙述中正确的一项是(B)
A.一旦一个线程被创建,它就立即开始运行
B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C.当一个线程因为抢占机制而停止运行时,它被放在可运行队列的前面
D.一个线程可能因为不同的原因而终止并进入终止状态
1.如果线程死亡,它便不能运行。
(T)
2.在Java中,高优先级的可运行线程会抢占低优先级线程。
(T)
3.线程可以用yield方法使低优先级的线程运行。
(F)
4...程序开发者必须创建一个线程去管理内存的分配。
(F)
5.一个线程在调用它的start方法,之前,该线程将一直处于出生期。
(T)
6.当调用一个正在进行线程的stop()方法时,该线程便会进入休眠状态。
(F)
7.一个线程可以调用yield方法使其他线程有机会运行。
(T)
1.Java语言中提供了一个▁D▁线程,自动回收动态分配的内存。
A.异步B.消费者C.守护D.垃圾收集
2.Java语言避免了大多数的▁C▁错误。
A.数组下标越界B.算术溢出C.内存泄露D.非法的方法参数
3.有三种原因可以导致线程不能运行,它们是▁ACD▁▁。
A.等待B.阻塞C.休眠D.挂起及由于I/O操作而阻塞
4.当▁A方法终止时,能使线程进入死亡状态。
A.runB.setProrityC.yieldD.sleep
5.用▁B▁方法可以改变线程的优先级。
A.runB.setProrityC.yieldD.sleep
6.线程通过▁C▁方法可以使具有相同优先级线程获得处理器。
A.runB.setProrityC.yieldD.sleep
7.线程通过▁D▁方法可以休眠一段时间,然后恢复运行。
A.runB.setProrityC.yieldD.sleep
8.方法resume()负责重新开始▁D▁线程的执行。
A.被stop()方法停止B.被sleep()方法停止C被wait()方法停止D被suspend()方法停止
9.▁BCD▁方法可以用来暂时停止当前线程的运行。
A.stop()B.sleep()C.wait()D.suspend()
1.下列说法中错误的一项是(A)
A.线程就是程序B.线程是一个程序的单个执行流
B.多线程是指一个程序的多个执行流D.多线程用于实现并发
2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)
A.等待阴塞状态下的线程被notify()唤
B.等待阻塞状态下的纯种被interrput()中断
C.等待时间到
D.等待阻塞状态下的线程调用wait()方法
3.下列哪个方法可以使线程从运行状态进入其他阻塞状态(A)
A.sleepB.waitC.yieldD.start
4.下列说法中错误的一项是(D)
A.一个线程是一个Thread类的实例
B.线程从传递给纯种的Runnable实例run()方法开始执行
C.线程操作的数据来自Runnable实例
D.新建的线程调用start()方法就能立即进入运行状态
5.下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)
A.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成
B.线程A通过调用interrupt()方法来中断其阻塞状态
C.若线程A调用方法isAlive()返回值为true,则说明A正在执行中
D.currentThread()方法返回当前线程的引用
6.下列说法中,错误的一项是()
A.对象锁在synchronized()语句执行完之后由持有它的线程返还
B.对象锁在synchronized()语句中出现异常时由持有它的线程返还
C.当持有锁的线程调用了该对象的wait()方法时,线程将释放其持有的锁
D.当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁
7.下面的哪一个关键字通常用来对对象的加锁,从而使得对对象的访问是排他的A
A.sirializeBtransientCsynchronizedDstatic
内存回收:
程序会自动回收并释放,但也允许程序员直接释放。
这是java的垃圾回收机制
继承:
1)若在某一个类定义中定义有如下的方法:
finalvoidworkDial()该方法属于
A.本地方法
B.最终方法
C.静态方法
D.抽象方法
2)下面哪个方法与题目中的不是重载方法publicintmax(intx,inty)
A.publicdoublemax(doublex,doubley)
B.publicintmax(intn,intk)
C.publicintmax(intx,inty,intz)
D.publicdoublemax(doublen,doublek)
3)为了区分类中重载的同名的不同方法,要求
A.参数列表不同
B.调用时用类名或对象名做前缀
C.参数名不同
D.返回值类型不同
4)某个类中存在一个方法:
voidgetSort(intx),以下能作为该方法的重载的声明的是?
A.publicgetSort(floatx)
B.doublegetSort(intx,inty)
C.intgetSort(inty)
D.voidget(intx,inty)
5)A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明:
Aa0=newA();
Aa1=newB();
Aa2=newC();
问以下哪个说法是正确的?
}
A.只有第1行能通过编译
B.第1、2行能通过编译,但第3行编译出错
C.第1、2、3行能通过编译,但第2、3行运行时出错
D.第1行、第2行和第3行的声明都是正确的
6)设有下面两个类的定义。
classPerson{
longid;//身份证号
Stringname;//姓名
}
classStudentextendsPerson{
intscore;//入学总分}
intgetScore(){
returnscore;
}
}
则类Person和类Student的关系是?
}
A.包含关系
B.继承关系
C.关联关系
D.上述类定义有语法错误
7)下列叙述中,正确的是?
A.子类继承父类的所有属性和方法
B.子类可以继承父类的私有的属性和方法
C.子类可以继承父类的公有的属性和方法
D.创建子类对象时,父类的构造方法都要被执行
8)现有两个类A、B,以下描述中表示B继承自A的是?
A.classAextendsB
B.classBimplementsA
C.classAimplementsB
D.classBextendsA
9)下列叙述中错误的是?
A.一个子类可有多个父类
B.父类派生出子类
C.子类继承父类
D.子类只能有一个父类
10)关于继承下面说法正确的是
A.子类能够继承父类私有的属性;
B.子类可以重写父类的final方法;
C.子类能够继承不同包父类的protected属性;
D.子类能够继承不同包父类的缺省属性;
11)有名字为A的包和名为B的类,下面的语句正确的是
A.packageA.B;B.packageB;C.importA.*;D.importB;
12)声明一个名字为P的包,下面的语句正确的是
A.packagePkg;B.PackageP;C.packageP;D.package"p";
13)导入包A中的类AA应该使用下面哪条语句?
A.importA.AA;B.importAA.A;C.packageA;D.packageAA
14)下列针对int类型的私有属性age的访问器方法格式正确的是?
A.voidgetAge(intage)
B.intgetAge(intage)
C.voidsetAge(intage)
D.intsetAge()
15)下列关于访问器方法说法正确的是?
A.get方法可以读取属性的值
B.set方法用来读取属性的值
C.必须为每个private属性提供访问器方法
D.public属性不能有访问器方法
16)表示数据或方法可以只能被定义它的类访问的是
A.public
B.默认的
C.private
D.protected
17)表示数据或方法只能被其它包中的子类访问的是
A.public
B.默认的
C.private
D.protected
18)对于子类的构造函数说明,下列叙述中不正确的是?
A.子类无条件地继承父类的无参构造函数
B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句
C.在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数
D.子类不但可以自动执行父类的无参构造函数,也可以自动执行父类的有参构造函数
19)当你编译运行下列程序代码,会得到什么结果?
privateclassBase{
Base(){
inti=100;
System.out.println(i);
}
}
publicclassPriextendsBase{
staticinti=200;
publicstaticvoidmain(Stringargv[]){
Prip=newPri();
System.out.println(i);
}
}
A.这段代码不能通过编译
B.输出200
C.输出100和200
D.输出100
方法调用:
一、类的分类:
1、普通类 2、抽象类(含有抽象方法的类) 3、静态类(不需要实例化,就可以使用的类)
二、方法的调用:
1、普通类:
实例化一个该类的对象,然后通过对像访问。
例如:
class A {
public void method1(){
System.out.println("我是A类的方法1"); } }
public static void main(String[] args){ A a=new A(); a.method1(); }
2、静态类:
可以通过类名直接访问,而不用实例化对象。
例如:
class static A {
public static void method1(){
System.out.println("我是A类的方法1"); } }
public static void main(String[] args){ A.method1(); }
3、抽象类:
抽象类本身不能实例化对象,抽象类只能由继承自他的子类来实例。
也就是子类实例化父类对象
值传递地址传递:
这个在Java里面是经常被提起的问题,也有一些争论,似乎最后还有一个所谓的结论:
“在Java里面参数传递都是按值传递”。
事实上,这很容易让人迷惑,下面先分别看看什么是按值传递,什么是按引用传递,只要能正确理解,至于称作按什么传递就不是个大问题了。
1:
按值传递是什么
指的是在方法调用时,传递的参数是按值的拷贝传递。
示例如下:
publicclassTempTest{
privatevoidtest1(inta){
//做点事情
}
publicstaticvoidmain(String[]args){
TempTestt=newTempTest();
inta=3;
t.test1(a);//这里传递的参数a就是按值传递
}
}
按值传递重要特点:
传递的是值的拷贝,也就是说传递后就互不相关了。
示例如下:
publicclassTempTest{
privatevoidtest1(inta){
a=5;
System.out.println("test1方法中的a==="+a);
}
publicstaticvoidmain(String[]args){
TempTestt=newTempTest();
inta=3;
t.test1(a);//传递后,test1方法对变量值的改变不影响这里的a
System.out.println(”main方法中的a===”+a);
}
}
运行结果是:
test1方法中的a===5
main方法中的a===3
2:
按引用传递是什么
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
示例如下:
publicclassTempTest{
privatevoidtest1(Aa){
}
publicstaticvoidmain(String[]args){
TempTestt=newTempTest();
Aa=newA();
t.test1(a);//这里传递的参数a就是按引用传递
}
}
classA{
publicintage=0;
}
3:
按引用传递的重要特点
传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
示例如下:
第1行publicclassTempTest{
第2行privatevoidtest1(Aa){
第3行a.age=20;
第4行System.out.println("test1方法中的age="+a.age);
第5行}
第6行publicstaticvoidmain(String[]args){
第7行TempTestt=newTempTest();
第8行Aa=newA();
第9行a.age=10;
第10行t.test1(a);
第11行System.out.println(”main方法中的age=”+a.age);
第12行}
第13行}
第14行classA{
第15行publicintage=0;
第16行}
运行结果如下:
test1方法中的age=20
main方法中的age=20
4:
理解按引用传递的过程——内存分配示意图
要想正确理解按引用传递的过程,就必须学会理解内存分配的过程,内存分配示意图可以辅助我们去理解这个过程。
用上面的例子来进行分析:
(1):
运行开始,运行第8行,创建了一个A的实例
(2):
运行第9行,是修改A实例里面的age的值
(3):
运行第10行,是把main方法中的变量a所引用的内存空间地址,按引用传递给test1方法中的a变量。
请注意:
这两个a变量是完全不同的,不要被名称相同所蒙蔽。
由于是按引用传递,也就是传递的是内存空间的地址,也就是说:
是两个变量都指向同一个空间。
(4):
运行第3行,为test1方法中的变量a指向的A实例的age进行赋值,此时A实例的age值的变化是由test1方法引起的
(5):
运行第4行,根据此时的内存示意图,输出test1方法中的age=20
(6):
运行第11行,根据此时的内存示意图,输出main方法中的age=20
5:
对上述例子的改变
理解了上面的例子,可能有人会问,那么能不能让按照引用传递的值,相互不影响呢?
就是test1方法里面的修改不影响到main方法里面呢?
方法是在test1方法里面新new一个实例就可以了。
改变成下面的例子,其中第3行为新加的:
第1行publicclassTempTest{
第2行privatevoidtest1(Aa){
第3行a=newA();//新加的一行
第4行a.age=20;
第5行System.out.println("test1方法中的age="+a.age);
第6行}
第7行publicstaticvoidmain(String[]args){
第8行TempTestt=newTempTest();
第9行Aa=newA();
第10行a.age=10;
第11行t.test1(a);
第12行System.out.println(”main方法中的age=”+a.age);
第13行}
第14行}
第15行classA{
第16行publicintage=0;
第17行}
运行结果为:
test1方法中的age=20
main方法中的age=10
为什么这次的运行结果和前面的例子不一样呢,还是使用内存示意图来理解一下
6:
再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择