Java日常练习题,每天进步一点点(59)
目录
- 1、java7后关键字 switch 支不支持字符串作为条件:()
- 2、下列选项中,用于在定义子类时声明父类名的关键字是:( )
- 3、关于finally,下面哪个描述正确? ()
- 4、有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。( ) 1. 2.public class Interesting{ 3. // 省略代码 4.}
- 5、public boolean returnTest()
- 6、将类的成员的访问权限设置为默认的,则该成员能被( )
- 7、如果一个list初始化为{5,3,1},执行以下代码后,其结果为()? nums.add(6); nums.add(0,4); nums.remove(1);
- 8、下面有关servlet service描述错误的是?
- 9、关于访问权限说法正确 的是 ? ( )
- 10、在Java图形用户界面编程中,如果需要显示信息,一般是使用__________类的对象来实现。
- 答案汇总:
- 总结
1、java7后关键字 switch 支不支持字符串作为条件:()
正确答案:A
A 支持
B 不支持
题解:
1、 选A 看了一下,这个题大家都说的不是很全面。 switch(exp),在JDK7之前,只能是byte、short、char、int或者对应的包装类,或者枚举常量(内部也是由整型或字符类型实现)。 为什么必须是这些呢,因为其实exp只是对int型支持的,其他都是因为可以自动拆卸或者自动向上转型到int,所以才可以。 到了JDK7的时候,String被引入了,为什么String能被引入呢? 其实本质上还是对int类型值得匹配。 原理如下,通过对case后面得String对象调用hashCode方法,得到一个int类型得hash值,然后用这个hash值来唯一标识这个case。那么当匹配时,首先调用exp的hashCode,得到exp的hash值,用这个hash值来匹配所有case,如果没有匹配成功,就说明不存在;如果匹配成功了,接着会调用字符串的equals方法进行匹配。(hash值一致,equals可不一定返回的就是true)。 所以,exp不能为null,cas子句使用的字符串也不能为null,不然会出现空指针异常。
2、 你问我支持不支持,我当然是支持的。
2、下列选项中,用于在定义子类时声明父类名的关键字是:( )
正确答案:C
A interface
B package
C extends
D class
题解:
1、C A是接口 B是包 D是类
2、 愣是没看懂题目
3、 这道题不用解释
3、关于finally,下面哪个描述正确? ()
正确答案:B
A 在catch块之前但在try块之后执行finally块
B finally块会被执行无论是否抛出异常
C 只有在执行catch块之后才执行finally块
D 都不是
题解:
1、结果 即使在try中产生异常也会执行。 第二种特殊情况: 结果 即使在try中return也会执行finally中的结果 第三种特殊情况:
2、 如果try或者catch里有 System.exit(0);这段,就不会执行finally了吧 System.exit(status);这个方法是用来结束当前正在运行中的java虚拟机。
3、 finally块执行的前提是try语句块执行
4、有以下程序片段且Interesting不是内部类,下列哪个选项不能插入到行1。( ) 1. 2.public class Interesting{ 3. // 省略代码 4.}
正确答案:D
A import java.awt.*;
B package mypackage;
C class OtherClass{ }
D public class MyClass{ }
题解:
1、在同一个java原文件中,可以有多个class类,但是只有有一个公共的 public class
2、 我以为是插入到省略代码处了,尴尬
3、 选D 一个.java文件中,可以有多个类,包括内部类和外部类。考虑到内部类的原因,一个.java文件可以中可以有多个public类。 但是对于外部类而言,一个.java文件必须只能有一个public类,同时这个类的类名必须和.java的文件名一致(包括大小写)。
5、public boolean returnTest()
{
try
{
return true;
}
catch (Exception e)
{
}
finally
{
return false;
}
}
以上代码返回值是什么?
正确答案:B
A true
B false
题解:
1、一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效 摘自《疯狂Java 讲义》(第三版)P366
2、 try说我要return true结束运行了,finally你有啥事没做的赶紧搞定哈,做完我好return。 finally说我这边也就return个false,结束运行。咦?好像你的return,没用上啊。我这边先结束运行了。。。
3、 参考这里 http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10.2.5 我的理解: 1、首先执行到try里的return,但是有finally语句还要执行,于是先执行return后面的语句,例如(x++),把要返回的值保存到局部变量。 2、执行finally语句的内容,其中有return语句,这时就会忽略try中的return,直接返回。 测试代码: public static int returnTestInt(){ int a = 0; try { return a++; } catch (Exception e) {
} finally { return ++a; }
} 上面的代码,在我的机器上返回结果是2. 于是本题就很简单了,选择false。
6、将类的成员的访问权限设置为默认的,则该成员能被( )
正确答案:A
A 同一包中的类访问
B 其它包中的类访问
C 所有的类访问
D 所有的类的子类访问
题解:
1、访问修饰符权限如下所示: 访问修饰符的权限常容易搞混,特别是default和protected这两种的访问权限,于是使用简化记忆的方式(访问范围有小到大):私下(private)里友好(friendly),才能更好地保护(protected)公众(public),通过这种方式,记忆几遍之后就快速准确地解决了这种题型。 具体的说明如下: private使用范围仅限本类中 ; protected使用范围为含继承关系的类中(子类可以使用父类); 什么都不写叫友好类,默认是本包中; public特别随意,包内包外,类内类外都可访问 。 而default和protected老有人记不住,只要记住protected一个特点是只要子类都能访问,不管在不在一个包即可。
2、 默认权限为当前类和同一包,子孙类不能访问,其他包更不能访问
3、 默认访问权限为同一包
7、如果一个list初始化为{5,3,1},执行以下代码后,其结果为()? nums.add(6); nums.add(0,4); nums.remove(1);
正确答案:B
A 5
B 3
C 1
D 6
E 4
F 3
G 1
H 6
I 4
J 3
K 6
L 5
M 3
N 6
题解:
1、初始化为{5
2、3
3、1} nums.add(6)后list为{5
4、3
5、1
6、6} nums.add(0
7、4)是在0号索引上添加数字4得到list为{4
8、5
9、3
:、1
;、6} nums.remove(1)是将1号索引上的5进行remove得到list为{4
<、3
=、1
、6}
?、 这里的参数默认为index
list.remove(1); 但是list中有remove(Object)方法,若想使用该方法,需要这样操作 Integer one = 1; list.remove(one);
8、下面有关servlet service描述错误的是?
正确答案:B
A 不管是post还是get方法提交过来的连接,都会在service中处理
B doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C service()是在javax.servlet.Servlet接口中定义的
D service判断请求类型,决定是调用doGet还是doPost方法
题解:
1、 doget/dopost与Http协议有关,是在 javax.servlet.http.HttpServlet 中实现的
2、 GenericServlet 抽象类 给出了设计 servlet 的一些骨架,定义了 servlet 生命周期,还有一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的
9、关于访问权限说法正确 的是 ? ( )
正确答案:B
A 外部类前面可以修饰public
Bprotected和private
C 成员内部类前面可以修饰public
Dprotected和private
E 局部内部类前面可以修饰public
Fprotected和private
G 以上说法都不正确
题解:
1、private default protected public 同一个类中 √ √ √ √ 同一个包中 √ √ √ 子类中 √ √ 全局范围内 √ ( 1 )对于外部类而言,它也可以使用访问控制符修饰,但外部类只能有两种访问控制级别: public 和默认。因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此 private 和 protected 访问控制符对外部类没有意义。 ( 2 )内部类的上一级程序单元是外部类,它具有 4 个作用域:同一个类( private )、同一个包( protected )和任何位置( public )。 ( 3 ) 因为局部成员的作用域是所在方法,其他程序单元永远不可能访问另一个方法中的局部变量,所以所有的局部成员都不能使用访问控制修饰符修饰。
2、 1.类指外部类,最大的类,修饰符有public(表示该类在项目所有类中可以被导入),default(该类只能在同一个package中使用)
3、abstract
4、final 2.内部类指位于类内部但不包括位于块、构造器、方法内,且有名称的类,修饰符有public
5、private
6、protected访问控制符,也可以用static
7、final关键字修饰,public和private比较简单,一个表示所有可以被所有类访问,一个表示只能被自身访问,protected修饰的成员类可以被同一个包中的类和子类访问。而default修饰的成员类只能被同一个包中的类访问。 3.局部内部类指位于块、构造器、方法内的有名称类,最多只能有final修饰 参考:http://blog.csdn.net/a327369238/article/details/52780442
8、 可以把局部内部类当做一个局部变量,所以它是不需要加任何修饰符的 局部内部类前不能用修饰符public和private
9、protected 内部类就随意了。
10、在Java图形用户界面编程中,如果需要显示信息,一般是使用__________类的对象来实现。
正确答案:A
A JLabel
B JButton
C JTextArea
D JtextField
题解:
1、四个选项都是Swing组件。JTextField输入单行文本,JTextArea输入多行文本,JButton显示按钮,JLebel提示信息
2、 显示信息和提示信息能一样吗?啊?一样吗?
3、 JTextField单行文本 JTextArea多行文本 JButton按键显示 JLable显示标签 信息
答案汇总:
1、正确答案:A
2、正确答案:C
3、正确答案:B
4、正确答案:D
5、正确答案:B
6、正确答案:A
7、正确答案:B
8、正确答案:B
9、正确答案:B
10、正确答案:A
总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!