日常Java练习题(每天进步一点点系列)
Posted 牛哄哄的柯南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常Java练习题(每天进步一点点系列)相关的知识,希望对你有一定的参考价值。
提示:好多小伙伴反映,直接看到答案不太好,那我把答案的颜色设置为透明,答案位置还是在题目后面,需要鼠标选中才能看见(操作如下图),同时为了手机端的小伙伴(手机端也可以长按选中查看),我还会把所有答案放到文章最下面,希望给每天进步一点点的小伙伴更好的体验。
1、下列不属于访问控制符的是()
正确答案: D 你的答案: D (正确)
public
private
protected
static
题解:
2、Java 源程序文件的扩展名为()
正确答案: A 你的答案: A (正确)
.java
.class
.exe
.jar
题解:
.class 编译后的Java文件
.java是未编译的程序
.jsp是页面程序
.xml配置程序
.jar是.calss的集合
3、以下程序的执行结果是:
static boolean foo(char c)
{
System.out.print©;
return true;
}
public static void main(String[] args) {
int i =0;
for(foo(‘A’);foo(‘B’)&&(i<2);foo(‘C’))
{
i++;
foo(‘D’);
}
}
正确答案: A 你的答案: A (正确)
ABDCBDCB
ABCDABCD
编译时出错
运行时抛出异常
题解:
例子:for(1;2;3){
4;
}
这题考察的应该是for循环的执行顺序:
1只在开头执行一次便不再执行;然后是2->4->3->2->4->3这样循环下去;等到满足终止条件时到2就停止了,所以选A
4、给定代码:
public class SwitchTest{//1
public static void main(String[] args) {//2
System.out.println(“value=”+switchit(4));//3
}//4
public static int switchit(int x) {
int j=1;
switch (x) {
case 1:j++;
case 2:j++;
case 3:j++;
case 4:j++;
case 5:j++;
default:j++;
}
return j+x;
}
}
第三行将输出什么?
正确答案: B 你的答案: B (正确)
value=6
value=8
value=3
value=5
value=4
题解:
没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8
5、下面有关List接口、Set接口和Map接口的描述,错误的是?
正确答案: A 你的答案: A (正确)
他们都继承自Collection接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置
Set是一种不包含重复的元素的Collection
Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value
题解:
6、以下代码的输出结果是?
public class B
{
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println(“构造块”);
}
static
{
System.out.println(“静态块”);
}
public static void main(String[] args)
{
B t = new B();
}
}
正确答案: C 你的答案: C (正确)
静态块 构造块 构造块 构造块
构造块 静态块 构造块 构造块
构造块 构造块 静态块 构造块
构造块 构造块 构造块 静态块
题解:
开始时JVM加载B.class,对所有的静态成员进行声明,t1 t2被初始化为默认值,为null,又因为t1 t2需要被显式初始化,所以对t1进行显式初始化,初始化代码块→构造函数(没有就是调用默认的构造函数),咦!静态代码块咋不初始化?因为在开始时已经对static部分进行了初始化,虽然只对static变量进行了初始化,但在初始化t1时也不会再执行static块了,因为JVM认为这是第二次加载类B了,所以static会在t1初始化时被忽略掉,所以直接初始化非static部分,也就是构造块部分(输出’‘构造块’’)接着构造函数(无输出)。接着对t2进行初始化过程同t1相同(输出’构造块’),此时就对所有的static变量都完成了初始化,接着就执行static块部分(输出’静态块’),接着执行,main方法,同样也,new了对象,调用构造函数输出(‘构造块’),所以选C
7、URL u =new URL(“http://www.123.com”);。如果www.123.com不存在,则返回______。
正确答案: A 你的答案: A (正确)
http://www.123.com
””
null
抛出异常
题解:
new URL()时必须捕获检查异常,但这个异常是由于字符串格式和URL不符导致的,与网址是否存在无关。URL的toString方法返回字符串,无论网址是否存在。
8、what is the result of the following code?
enum AccountType
{
SAVING, FIXED, CURRENT;
private AccountType()
{
System.out.println(“It is a account type”);
}
}
class EnumOne
{
public static void main(String[]args)
{
System.out.println(AccountType.FIXED);
}
}
正确答案: C 你的答案: C (正确)
Compiles fine and output is prints”It is a account type”once followed by”FIXED”
Compiles fine and output is prints”It is a account type”twice followed by”FIXED”
Compiles fine and output is prints”It is a account type”thrice followed by”FIXED”
Compiles fine and output is prints”It is a account type”four times followed by”FIXED”
Compilation fails
翻译:
编译良好,输出是打印“它是一个帐户类型”,后面跟着“FIXED”
编译良好,输出打印" It is a account type “两次,后面跟着” FIXED "
编译良好,输出是打印“这是一个帐户类型”三次,然后是“FIXED”
编译良好,输出是打印“这是一个帐户类型”四次,然后是“FIXED”
编译失败
9、下面关于volatile的功能说法正确的是哪个
正确答案: B C 你的答案: B C (正确)
原子性
有序性
可见性
持久性
题解:
synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性
10、下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader
正确答案: A B E 你的答案: A B E (正确)
Thread
Number
Double
Math
ClassLoader
题解:
A:Thread可以被继承,用于创建新的线程
B:Number类可以被继承,Integer,Float,Double等都继承自Number类
C:Double类的声明为
public final class Doubleextends Numberimplements Comparable<Double>
final生明的类不能被继承
D:Math类的声明为
public final class Mathextends Object
不能被继承
E:ClassLoader可以被继承,用户可以自定义类加载器
答案汇总:
1、正确答案: D
2、正确答案: A
3、正确答案: A
4、正确答案: B
5、正确答案: A
6、正确答案: C
7、正确答案: A
8、正确答案: C
9、正确答案: B C
10、正确答案:A B E
以上部分题解来自牛客评论区,感谢评论区大佬的解释。
每天进步一点点!
不进则退!
看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]
加油!
共同努力!
Keafmd
以上是关于日常Java练习题(每天进步一点点系列)的主要内容,如果未能解决你的问题,请参考以下文章