下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。
-
java
-
javadoc
-
jdb
-
javaprof
java.exe
为java虚拟机
javadoc.exe
为编写Java文档
jdb.exe
为java调试器,个人理解为JavaDeBug的简写
javaprof.exe
为剖析工具
下列哪个说法是正确的()
-
ConcurrentHashMap使用synchronized关键字保证线程安全
-
HashMap实现了Collction接口
-
Array.asList方法返回java.util.ArrayList对象
-
SimpleDateFormat是线程不安全的
ConcurrentHashMap
使用segment
管理锁,而segment
继承于ReentrantLock
,ConcurrentHashMap
使用ReentrantLock
保证线程安全单链集合继承于
Collction
,而有键值对的集合map
接口Array.asList是将数组转换为集合的方法,返回的是Arrays中一个内部类
有如下代码:请写出程序的输出结果。
public class Test { public static void main(String[] args) { int x = 0; int y = 0; int k = 0; for (int z = 0; z < 5; z++) { if ((++x > 2) && (++y > 2) && (k++ > 2)) { x++; ++y; k++; } } System.out.println(x + ”” +y + ”” +k); } }
-
432
-
531
-
421
-
523
++a > 2 (a先加1,再比较) a++ > 2(先比较,a)
第一轮:
z = 0 < 5;++x = 1 > 2不成立,导致后面的与运算短路不执行,y = 0, k = 0;z++ = 1;
第二轮:
z = 1 < 5; ++x = 2 > 2不成立,导致后面的与运算短路不执行,y = 0, k = 0;z++ = 2;
第三轮:
z = 2 < 5;++x = 3 > 2成立,继而判断 ++y = 1 > 2不成立,导致后面的与运算短路不执行,k = 0;z++ = 3;
第四轮:
z = 3 < 5;++x = 4 > 2成立,继而判断 ++y = 2 > 2不成立,导致后面的与运算短路不执行,k = 0;z++ = 4;
第五轮:
z = 4 < 5;++x = 5 > 2成立,继而判断 ++y = 3 > 2成立,继而判断 k++ = 1 > 2不成立;z++ = 5;
第六轮:
z = 5 < 5不成立,循环结束,得x = 5,y = 3,k = 1;
关于以下代码的说明,正确的是( )
class StaticStuff{ static int x=10; static { x+=5; } public static void main(String args[ ]){ System.out.println(“x=” + x); } static { x/=3;} }
-
3行与9行不能通过编译,因为缺少方法名和返回类型
-
9行不能通过编译,因为只能有一个静态初始化器
-
编译通过,执行结果为:x=5
-
编译通过,执行结果为:x=3
java初始化的加载顺序为:
父类静态成员变量
-->
父类静态代码块-->
子类静态成员变量-->
子类静态代码块-->
父类非静态成员变量-->
父类非静态代码块-->
父类构造函数-->
子类非静态成员变量-->
子类非静态代码块-->
子类构造函数所以本题加载顺序为
先执行:
static int x=10;
再执行:
static { x+=5;//x=10+5=15 } static { x/=3;//x=15/3=5 }最后执行:
public static void main(String args[ ]){ System.out.println(“x=” + x);//输出x=5 }
有变量int i = 0; int a = i++; int b = ++a; int c = a+b; int d = (a == 1)?b:c; 请问a和d的值分别是多少?( )。
-
2,4
-
1, 4
-
1, 2
-
1,1
x = a++,先赋值,再a+1;x = ++a,先a + 1,再赋值;
int a = i++
,先给a赋值,a=0,i++ = 1;
int b = ++a
,先++a = 1,再赋值 b = a = 1;
int c = a+b
,c = 1 + 1 = 2;三目运算规则:
条件 ? 值1 : 值2;(如果条件成立,返回值1,否则返回值2)
int d = (a == 1)?b:c
,(a == 1)成立 所以d = b = 1;
以下关于 abstract 关键字的说法,正确的是()
-
abstract 可以与final 并列修饰同一个类。
-
abstract 类中不可以有private的成员。
-
abstract 类中必须全部是abstract方法。
-
abstract 方法必须在abstract类或接口中。
abstract类不能与final,static使用。final修饰方法,子类可以调用,但不能覆盖。
最好不要有private因为私有和抽象放在一起,子类如果想重写父类的私有方法根本继承不过来,也就无法重写
抽象类中可以有非抽象方法
抽象类中可以都是非抽象的,但是抽象方法一定要在类和接口中
String str = ""; System.out.print(str.split(",").length);
输出结果为:
-
0
-
1
-
出现异常
String对象.split(",")
返回的是一个数组,由题返回的数组为{""}
,长度为1的数组
将类的成员的访问权限设置为默认的,则该成员能被( )
-
同一包中的类访问
-
其它包中的类访问
-
所有的类访问
-
所有的类的子类访问
默认的访问权限为default,也就是什么也不写
public:可以被所有其他类所访问;
protected:自身、子类及同一个包中类可以访问;
default:同一包中的类可以访问;
private:只能被自己访问和修改。
下面的switch语句中,x可以是哪些类型的数据:()
switch(x) { default: System.out.println("Hello"); }
-
long
-
char
-
float
-
byte
-
double
-
String
以java8为准,switch支持10种类型
基本类型:byte char short int
对于包装类 :Byte,Short,Character,Integer String enum
2、实际只支持int类型 Java实际只能支持int类型的switch语句,那其他的类型时如何支持的
a、基本类型byte char short 原因:这些基本数字类型可自动向上转为int, 实际还是用的int。
b、基本类型包装类Byte,Short,Character,Integer 原因:java的自动拆箱机制 可看这些对象自动转为基本类型
c、String 类型 原因:实际switch比较的string.hashCode值,它是一个int类型 如何实现的,网上例子很多。此处不表。
d、enum类型 原因 :实际比较的是enum的ordinal值(表示枚举值的顺序),它也是一个int类型 所以也可以说 switch语句只支持int类型
对Collection和Collections描述正确的是
-
Collection是java.util下的类,它包含有各种有关集合操作的静态方法
-
Collection是java.util下的接口,它是各种集合结构的父接口
-
Collections是java.util下的接口,它是各种集合结构的父接口
-
Collections是java.util下的类,它包含有各种有关集合操作的静态方法
Collection是单列集合的顶层接口,Map是双列集合的顶层接口
Collections是一个集合的工具类,提供了排序、查找等操作集合的一些常用方法