Java刷题
1.1、
创建一个标识有“开始”按钮的语句是( )。
A、
JTextField b = new JTextField(“开始”);
B、
JLabel b = new JLabel(“开始”);
C、
JCheckbox b = new JCheckbox(“开始”);
D、
JButton b = new JButton(“开始”);
正确答案: D
【解析】
TextField 文本区域
Label 标签
Checkbox 勾选框
Button 按钮
2、
如果类的方法没有返回值,该方法的返回类型应是:( )
A、void
B、null
C、abstract
D、default
正确答案: A
3、
已知如下类定义:如下哪句可以正确地加入子类中?
class Base {
public Base (){
//...
}
public Base ( int m ){
//...
}
public void fun( int n ){
//...
}
}
public class Child extends Base{
// member methods
}
A、
private void fun( int n ){
//...}
B、
void fun ( int n ){
//... }
C、
protected void fun ( int n ) {
//... }
D、
public void fun ( int n ) {
//... }
正确答案: D
【解析】
方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
4、
执行如下代码后输出结果为( )
public class Test {
public static void main(String[] args) {
System.out.println("return value of getValue(): " + getValue());
}
public static int getValue() {
int i = 1;
try {
i = 4;
} finally{
i++;
return i;
}
}
}
A、return value of getValue(): 1
B、return value of getValue(): 4
C、return value of getValue(): 5
D、其他几项都不对
正确答案: C
【解析】
try里面的句子没有异常正常执行,i=4,然后执行finally里面的程序,return i++,i=5,所以输出5
5、
以下表达式的类型和值是什么?(注意整数除法)()
-5 + 1/4 + 2*-3 + 5.0
A、int -3
B、int -4
C、double -5.5
D、double -6.0
正确答案: D
【解析】
在Java中5.0是double类型,所以结果的数据类型为double。因为1/4结果为0,所以结果为-6.0
6、
如何跳出Array的forEach循环?( )
A、break
B、return true
C、return false
D、以上都不是
正确答案: A
【解析】
break是结束循环,return是结束方法
7、
运用下列哪个命令能够获取JVM的内存映像
A、jinfo
B、jmap
C、jhat
D、jstat
正确答案: B
[解析】
1、jps:查看本机java进程信息。
2、jstack:打印线程的栈信息,制作线程dump文件。
3、jmap:打印内存映射,制作堆dump文件
4、jstat:性能监控工具
5、jhat:内存分析工具
6、jconsole:简易的可视化控制台
7、jvisualvm:功能强大的控制台
8、
ServletConfig接口默认是哪里实现的?
A、Servlet
B、GenericServlet
C、HttpServlet
D、用户自定义servlet
正确答案: B
【解析】
HttpServlet是GenericServlet的实现类,
GenericServlet是一个抽象类,继承了servlet接口,
ServletConfig配置信息接口
java.io.serializable序列化接口
9、
下面哪些标识符是正确的?
A、MyWorld
B、parseXML
C、–value
D、&
amp;maybe
正确答案: A B
[解析】
Java中标识符有字母、数字、美元符号$、下划线4种,不能以数字开头,不能用保留字和关键字
10、
在Jdk1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?
A、抽象类中可以有普通成员变量,接口中没有普通成员变量。
B、抽象类和接口中都可以包含静态成员常量。
C、一个类可以实现多个接口,但只能继承一个抽象类
D、抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。
正确答案: A B C D
【解析】
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
3.抽象类中可以有普通成员变量,接口中没有普通成员变量
4.抽象类中的抽象方法的访问类型可以是public,protected和默认类型
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型
7.一个类可以实现多个接口,但只能继承一个抽象类。二者在应用方面也有一定的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码。
11、
Continue语句跳出整个循环.
A、正确
B、错误
正确答案: B
【解析】
continue是结束本次循环,本次循环中continue下面代码不再执行,直接进入下次循环。
break,直接跳出当前循环。
12、
以下语句的执行结果是什么?
1+”10”+3+”2”
A、”11032”
B、“16”
C、16
D、“32101”
正确答案: A
【解析】
当数字和字符串相加时,+号并不是数学意义的加号,而是表示两个物体的相拼接。
13、
程序Demo.java编译运行后输出的结果是:( )
public class Demo{
int x=1;
int y;
public static void main(String [] args){
int z=2;
Demo t=new Demo();
System.out.println(t.x+t.y+z);
}
}
A、3
B、12
C、1
D、5
正确答案: A
【解析】
成员变量为int类型可以不初始化,默认值为0
局部变量为int类型必须初始化,没有默认值
14、
下列关于Java类中方法的定义,正确的是()
A、若代码执行到return语句,则将当前值返回,而且继续执行return语句后面的语句。
B、只需要对使用基本数据类型定义的属性使用getter和setter,体现类的封装性。
C、方法的返回值只能是基本数据类型。
D、在同一个类中定义的方法,允许方法名称相同而形参列表不同。
正确答案: D
【解析】
A、一旦执行到return,就不再执行后续的代码。
B、类的封装性可不是这么体现的,数据域和方法都可以被封装。数据域可以是基本数据类型也可以是引用类型。
C、方法的返回值可以是引用类型。
D、重载,判定方法只有方法名一致,形参列表不同。
15、
Thread. sleep()是否会抛出checked exception?
A、会
B、不会
正确答案: A
【解析】
checked exception:指的是编译时异常,该类异常需要本函数必须处理的,用try和catch处理,或者用throws抛出异常,然后交给调用者去处理异常。
runtime exception:指的是运行时异常,该类异常不必须本函数必须处理,当然也可以处理。
Thread.sleep()抛出的InterruptException属于checked exception;IllegalArgumentException属于Runtime exception;
16、
下面代码的输出结果是什么?
public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
A、3
B、123
C、1
D、12
正确答案: D
【解析】
首先执行try,遇到算术异常,抛出,执行catch,打印1,然后抛出RuntimeException,缓存异常,执行finally,打印2,然后抛出RuntimeException。
如果catch中没有抛出RuntimeException,则执行结果为123。
17、
类A1和类A2在同一包中,类A2有个protected的方法testA2,类A1不是类A2的子类(或子类的子类),类A1可以访问类A2的方法testA2。( )
A、正确
B、错误
正确答案: A
【解析】
public:可以被所有其他类所访问
private:只能被自己访问和修改
protected:自身、子类及同一个包中类可以访问
default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。
18、
下列关于异常处理的描述中,错误的是()。
A、程序运行时异常由Java虚拟机自动进行处理
B、使用try-catch-finally语句捕获异常
C、可使用throw语句抛出异常
D、捕获到的异常只能在当前方法中处理,不能在其他方法中处理
正确答案: D
【解析】
运行时异常可以不处理。当出现这样的异常时,总是由虚拟机接管。比如我们从来没有人去处理过Null Pointer Exception异常,它就是运行时异常,并且这种异常还是最常见的异常之一。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往不对它处理罢了。也就是说,如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。
19、
哪个类可用于处理 Unicode?
A、InputStreamReader
B、BufferedReader
C、Writer
D、PipedInputStream
正确答案: A
【解析】
A、 InputStreanReader的构造函数:
InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 |
---|
InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。 |
InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader。 |
InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。 |
B、BufferedReader的构造函数:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。 |
---|
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。 |
C、Writer的构造函数:
protected | Writer() 创建一个新的字符流 writer,其关键部分将同步 writer 自身。 |
---|---|
protected | Writer(Object lock) 创建一个新的字符流 writer,其关键部分将同步给定的对象。 |
D、PipedInputStream的构造函数:
PipedInputStream() 创建尚未连接的PipedInputStream。 |
---|
PipedInputStream(int pipeSize) 创建一个尚未连接的PipedInputStream,并对管道缓冲区使用指定的管道大小。 |
PipedInputStream(PipedOutputStream src) 创建PipedInputStream,使其连接到管道输出流src。 |
PipedInputStream(PipedOutputStream src, int pipeSize) 创建一个PipedInputStream,使其连接到管道输出流src,并对管道缓冲区使用指定的管道大小。 |
20、
java 多线程有几种实现方法?( )
A、继承Thread类
B、实现Runnable接口
C、实现Thread接口
D、以上都不正确
正确答案: A B
【解析】
实现多线程的方法:
1.继承Thread类
2.实现Runnable接口
3.实现Callable接口,然后使用 FutureTask包装,因为Callable接口没有实现Runnable接口不能做为Thread的target,而FutureTask是在Java程序中可以取消的异步运算,有可以开始,取消运算,查询运算是否结束,获得查询结果的功能,特别注意的是,如果查询结果时,运算还没完成则会阻塞线程。
4.使用,java.util.current.ThreadPoolExecutor来获取线程,执行多线程
21、
下列叙述错误的是( )
A、java程序的输入输出功能是通过流来实现的
B、java中的流按照处理单位可分成两种:字节流和字符流
C、InputStream是一个基本的输出流类。
D、通过调用相应的close()方法关闭输入输出流
正确答案: C
【解析】
InputStream:输入流,只能从中读取数据,而不能向其写入数据。读别人的数据。
OutputStream:输出流,只能向其写入数据,而不能向其读取数据。给别人写数据。
22、
将类的成员的访问权限设置为默认的,则该成员能被( )
A、同一包中的类访问
B、其它包中的类访问
C、所有的类访问
D、所有的类的子类访问
正确答案: A
【解析】
public:可以被所有其他类所访问;
protected:自身、子类及同一个包中类可以访问;
default:同一包中的类可以访问;
private:只能被自己访问和修改。
public>protcted>default>priavte
23、
区分类中重载方法的依据是( )。
A、不同的形参名称
B、不同的返回值类型
C、不同的形参列表
D、不同的访问权限
正确答案: C
【解析】
重载:
1、编译时的多态
2、重载发生在同一个类中
3、函数名相同,参数列表不同(参数的类型,顺序,个数 和参数名没有关系) 和方法的返回值类型无关 (因为编译器 并不知道 调用哪一个函数)
4、可以抛出不同的异常,可以有不同修饰符
重写:
1、运行时的多态
2、重载发生在子类与父类中
3、遵循两同两小一大
-
两同:
-
函数名相同
-
参数列表相同
-
-
两小:
-
子类被重写方法的返回值类型小于父类被重写方法的返回值
-
子类被重写方法抛出异常的类型小于父类被重写方法抛出异常的类型
-
-
一大:
- 子类被重写方法的访问权限大于等于父类被重写方法的访问权限
4、构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写(隐藏),但是能够被再次声明,父类的私有方法,子类可以继承 但是子类不能访问,子类不能重写父类的私有方法。
24、
This调用语句必须是构造函数中的第一个可执行语句。
A、正确
B、错误
正确答案: B
【解析】
-
构造器中第一行默认是super(),一旦直接父类的构造器中没有无参的,那么必须显式调用父类的某个有参构造。
-
构造器中第一行的super()可以换成this(),但是this()和super()只能出现一个。
-
super,this关键字与super(),this()不是一回事,前者表示当前调用者的父类与其本身,后者是为了构造器相互调用。
25、
指出下列程序运行的结果:
public` `class` `Example{
``String str=``new` `String(``"tarena"``);
``char``[]ch={
``