题目选自牛客网
1.
|
默认类型等价表示是哪一项:
A.public String NAME="default";
B.public static String NAME="default";
C.public static final String NAME="default";
D.private String NAME="default";
正确答案:C
在 Java 中,接口中的成员变量默认都是 public、static 和 final 的,这意味着它们是公开的、属于类的(而不是属于某个对象的),并且它们的值不能被改变。因此,接口中定义的常量 NAME 的默认类型等价表示就是 public static final String NAME="default";。
单选题
2.下列程序test 类中的变量c 的最后结果为
1 2 3 4 5 6 7 8 9 10 11 |
|
A.10
B.0
C.19
D.编译出错
正确答案:D
官方解析:
本题需要注意一点:a、b、c三个变量是定义在方法中的局部变量,使用前必须初始化,否则就会出现错误。
当我们新建一个对象时,Java会在Heap中申请一块内存区域用以存放类的数据。而成员变量就是类的数据,也是放在这块内存区域中的。初始化时只需要JVM在申请内存的时候顺便把整块区域都置为零即可完成。所以JVM会自动帮我们完成全局变量的初始化。
对于方法的局部变量,是在线程的Stack中,虽然Stack可以帮我们完成初始化,但这样是存在问题的,比如有些局部变量,在方法的一开始是没有的,有些在循环中的局部变量是要反复的声明多次的。有些局部变量作用域结束后,另一个局部变量又会占用这个局部变量的位置。
局部变量不自动初始化是一种约束,它会尽最大程度减少使用者犯错的可能。假使局部变量可以使用默认值,可能总会无意间忘记赋值,进而导致不可预期的情况出现。
单选题
3.以下选项中循环结构合法的是:
A.while(int i<7){i++;System.out.println("i is "+i);}
B.int j=3;while(j){ System.out.println("j is "+j);}
C.int j=0;for(int k=0;j+k!=10;j++,k++){System.out.println("j is "+j+"k is" +k);}
D.int j=0; do{System.out.println("j is "+j++);if(j==3){continue loop;}}while(j<10);
正确答案:C
单选题
4.假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
A.64M
B.500M
C.300M
D.100M
正确答案:C
官方解析:先分析一下里面各个参数的含义:
-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。
多选题
5.以下哪个不能用来处理线程安全
A.synchronized关键字
B.volatile关键字
C.Lock类
D.transient关键字
正确答案:BD
标签:java,NAME,int,局部变量,选择题,XX,public,String From: https://blog.csdn.net/m0_67187271/article/details/139213672