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

Source

1、java中,用( )关键字定义常量?
正确答案: A 你的答案: A(正确)
final
#define
float
const

题解:
A:final修饰变量,表示变量的指向(引用地址)不可变。
B:#define,Java中没这个东西。
C:单精度浮点。
D:const,这是个保留关键字,和goto一样。暂时没有用,是C和C++中的常量关键字。

2、以下代码的循环次数是

public class Test {
    
      
public static void main(String args[]) {
    
      
int i = 7;
do {
    
      
System.out.println(--i);
 --i;
} while (i != 0);
System.out.println(i);
}
}

正确答案: D 你的答案: D (正确)
0
1
7
无限次

题解:
会先执行do循环体一次,再判断while里的判断条件是否成立,如果成立继续,不成立退出,单独的–i和i–没有区别,但是在表达式中,–i会先进行自减再执行语句,而i–是先执行语句再进行自减,这一题每次循环执行输出语句时i自减1,执行–i时再次自减1,每次循环减2,总值为7,第四次执行循环时,i=-1,不等于0,所以会无限次循环。

3、下面代码的执行结果是 :
class Chinese{
private static Chinese objref =new Chinese();
private Chinese(){}
public static Chinese getInstance() { return objref; }
}
public class TestChinese {
public static void main(String [] args) {
Chinese obj1 = Chinese.getInstance();
Chinese obj2 = Chinese.getInstance();
System.out.println(obj1 == obj2);
}
}
正确答案: A 你的答案: A (正确)
true
false
TRUE
FALSE

题解:
饿汉式单例模式,在类创建时,就已经实例化完成,在调用Chinese.getInstance()时,直接获取静态对象,obj1和obj2其实是一个对象,应该返回true。

4、如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是? ( )
正确答案: C 你的答案: C (正确)
protected void setColor() { …}
void setColor() { …}
public void setColor() { …}
以上语句都可以用在类BlueGlass中

题解:
接口中属性为public static final。方法为public abstract,子类的权限不能比父类更低。

5、下面的输出结果是什么?
public class Demo {
public static void main(String args[])
{
String str=new String(“hello”);
if(str==“hello”)
{
System.out.println(“true”);
}
else {
System.out.println(“false”);
}
}
}
正确答案: B 你的答案: B (正确)
true
false

题解:
==用来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不要求数据类型严格相同),则只要两个变量的值相等,就返回true;对于两个引用类型变量,必须指向同一个对象,==才会返回true。==判断的是对象引用地址是否相同,String str=new String(“hello”);
这句话new了一个新的String对象,所以地址与"hello"字符串常量的地址不同,答案为false,如果判断字符串是否相等应给用str.equals(“hello”)方法。

6、以下JAVA程序代码的输出是
public static void main(String args[]) {
System.out.println(14^3);
}
正确答案: B 你的答案: B (正确)
2744
13
17
11

题解:
^表示异或 就是相同是0 不同是1
14是1110
3是0011
所以14^3=1101,即13

7、Which method you define as the starting point of new thread in a class from which n thread can be execution?
翻译:在一个可以执行n个线程的类中,哪个方法定义为新线程的起点?
正确答案: B 你的答案: B (正确)
public void start()
public void run()
public void int()
public static void main(String args[])
public void runnable()

题解:
问线程执行的入口,start()是启动该线程的方法,是启动的动作,run方法就是线程执行的入口。

8、Java1.8之后,Java接口的修饰符可以为()
正确答案: D 你的答案: D (正确)
private
protected
final
abstract

题解:
接口是一种特殊的抽象类,先说明抽象类中的抽象方法,再说明接口
抽象类中的抽象方法(其前有 abstract1修饰)不能用 private、 static、 synchronized、native访回修饰符修饰。原因如下:
1、private
抽象方法没有方法体,是用来被继承的,所以不能用 private修饰。
2、static
static修饰的方法可以通过类名来访间该方法(即该方法的方法体),抽象方法用sttic修饰没有意义。
3.、synchronized
该关键字是为该方法加一个锁。而如果该关键字修饰的方法是 static方法。则使用的锁就是class变量的锁。如果是修饰类方法。则用this变量锁。
但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以,锁应该归其子类所有。所以,抽象方法也就不能用 synchronized关键字修饰了。
4、native
native这个东西本身就和 abstract冲突,他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢?
接口是一种特殊的抽象类,接口中的方法全部是抽象方法(但其前的 abstract可以省略),所以抽象类中的抽象方法不能用的访间修饰符这里也不能用。同时额外说明一下protect关键词
5、protect
protected访同修饰符也不能使用,因为接口可以让所有的类去实现(非继承),不只是其子类,但是要用public去修饰。接口可以去继承一个已有的接口。

9、假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
正确答案: C 你的答案: C (正确)
64M
500M
300M
100M

题解:
先分析一下里面各个参数的含义:
-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出

500M*(3/(3+1+1))
=500M*(3/5)
=500M*0.6
=300M
所以Eden区域的大小为300M。

10、在Struts框架中如果要使用Validation作验证的话,需要使用以下哪个Form?
正确答案: D 你的答案: D (正确)
ActionForm
ValidatorActionForm
ValidatorForm
DynaValidatorActionForm

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

每天进步一点点!
不进则退!

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

在这里插入图片描述
加油!

共同努力!

Keafmd