日常Java练习题(每天进步一点点系列)

本文涉及的产品
访问控制,不限时长
简介: 日常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


以上部分题解来自牛客评论区,感谢评论区大佬的解释。


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
4月前
|
存储 Java
创建一个乘法练习题生成器 using Java
创建一个乘法练习题生成器 using Java
|
5月前
|
人工智能 Java
Java练习题-输出二维数组对角线元素和
Java练习题-输出二维数组对角线元素和
|
5月前
|
存储 Java 索引
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
Java练习题-获取数组元素最大值
|
5月前
|
Java
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历
33 0
|
5月前
|
Java 索引
Java练习题-用冒泡排序法实现数组排序
Java练习题-用冒泡排序法实现数组排序
|
5月前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
|
5月前
|
Java
Java练习题-输出斐波那契(Fibonacci)数列
Java练习题-输出斐波那契(Fibonacci)数列
|
5月前
|
存储 Java
Java程序设计练习题8异常处理
Java程序设计练习题8异常处理
139 0
|
5月前
|
算法 Java 程序员
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
51 0
Java数组全套深入探究——进阶知识阶段4、一维数组练习题
|
5月前
|
Java
java字符串练习题8、同构字符串
java字符串练习题8、同构字符串
47 0
java字符串练习题8、同构字符串
下一篇
无影云桌面