java基础考试的几道选择题

1.代码片段:
System.out.println(words.length); String text = "Welcom to Java contest";String[] words = text.split("\s");System.out.println(words.length);
请问编译运行的结果是什么?
A 0
B 1
C 4
D 编译出错
E 运行时抛出一个异常
这题选D

2.如下代码:
public class Test {
private int a;
public int b;
protected int c;
int d;
public static void main(String[] args) {
Test test = new Test();
int a = test.a++;
int b = test.b--;
int c = test.c++;
int d = test.d--;
System.out.println(a + " - " + b + " - " + c + " - " + d); }
}
请问哪个说法是正确的?
A 编译错误,因为变量a、b、c和d没有被初始化
B 编译错误,因为变量a无法被访问
C 编译成功并输出0 - 0 - 0 - 0
D 编译成功并输出1 - -1 - 1 - -1
这题选C

3.System.out.format("Pi is approximately %d.", Math.PI);
为什么运行时抛出异常?

4.根据Java命名规范,为什么 drawPicture 不可作为变量名?

谢谢各位了。

System.out.println(words.length);有两个,一个在words定义之前使用,错误。阿ilei

(1)main也是个该类的函数,可以访问同类的任何类型变量。(2)++,--等均放在数值后面,均是先用或++或--(3)整数类型初始缺省值为0

Math.PI是double类型,不能用%d输出(不能像C语言一样自动截断)

drawPicture可以用作变量名,已试过。

追问

第一题代码应该是这样
String text = "Welcom to Java contest";
String[] words = text.split("\s");
System.out.println(words.length);

追答

二楼已解释,\s是非法的转义字符

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-10
1.在第一句代码里使用了words变量,而它是在第三句才定义的,所以编译报错。
2.int a=test.a++ ,操作是后缀,先执行赋值操作,再执行自增操作。局部变量a值为0,test.a值为1.(int类型
默认值为0),所以结果是0 - 0 - 0 - 0
3.Math.PI 是double类型,应该使用%f格式化输出。(System.out.format不会自动转换类型)
4.drawPicture可以作为变量名。追问

第一题代码应该是这样
String text = "Welcom to Java contest";
String[] words = text.split("\s");
System.out.println(words.length);

追答

哦,这样啊
首先split方法需要的参数是正则表达式,\s在正则表达式中表示的是‘空白符号’
然而在java中“\”是转义字符,比如\n \r \\;直接‘\s’在java中是不合法的。
所以应该是‘\\s’ ,这样就转成了需要的‘\s’正则式了。

第2个回答  2013-12-10
第二道题 为什么成员变量a是private的 仍然能通过 test.a来访问
是因为这是在类的内部 外部就不行了
另外 构造函数没有初始化 a b c d 就用默认初始化 多说一句final类型的成员变量必须显式初始化追问

第一题代码应该是这样
String text = "Welcom to Java contest";
String[] words = text.split("\s");
System.out.println(words.length);

追答

二楼应该是正解