JAVA基础测试题

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:46:26
1.class StaticStuff
{
static int x=10;
static { x+=5;}
public static void main(String args[])
{
System.out.println("x=" + x);
}
static { x/=3;}
}
为何打印出来是5?
2.执行完以下代码int [ ] x = new int[25];后,以下哪项说明是正确的( )
A、x[24]为0 B、x[24]未定义 C、x[25]为0 D、x[0]为空
选哪个?为什么?
3.class AB{
public static void main(String [ ] args){
long i=0;
try{
i=Integer.parseInt(args[0]);
}catch(Exception e){ }

switch(i)
{case 0: System.out.println("0");
case 1: System.out.println("1");
default : System.out.println("default"); }
}
}
A、编译出错 B、打印出“0” C、打印出“1” D、打印出“default”
为什么通不过编译?怎么改?
4.break中断语句,若在一个FOR语句中加入break语句,它可以 ( )
A、对FOR语句执行没有影响 B、中断本次循环,进入下一次循环
C、退出FOR循环,执行FOR语句后面的语句 D、以上说法均不对
选什么?

1 跟java运行的机制有关,java先加载静态域,static int x=10; ,然后静态块static { x+=5;},static { x/=3;}(虽然位置在后但先运行) ,然后静态方法static void main
所以x=10,x=15,x=5.
2 A因为int [ ] x = new int[25],数组建立后,每个元素默认值为0;x[24]=0;x[25] 下标越界,x[0]=0;
3 switch(i)不接受long型,int或者枚举型可以。i=Integer.parseInt(args[0]);虽然这样每课时i还是long型的。
4 c,没什么好说的,就是这么规定的!

1.因为有两个静态快static {}的存在。这个静态快简单来说,相当于一种初始化。所以,x分别执行+5,/3的计算,最终x=5

2.x[24]=0.数组初始化如果未明确指出,那么如果是int[],所有元素会自动初始化为0.所以x[24]=0正确。自然B,D就不对,x[25]数组越界。

3.首先,swith需要一个int参数。i是long行,虽然你用Integer.parseInt返回int型,但是赋值给i的时候,相当于吧一个int赋值给long,所以又自动转换为long型。所以出错。

4.C.
break是中断跳出循环。而另外一个continue是跳过本次循环,进行下一次循环。

1;java代码运行顺序:先运行静态变量,然后是静态代码段(从上到下依次运行),所以是5
2,a
3,a
4,c

1、定义全局变量时,无论你写在文件的什么位置都会先执行的。
static { x/=3;} 会先于System.out.println("x=" + x); 执行。

2、x[24]为0是正确的。java会自动给数组初始化,数组的下标是从0开始的,定义了25个元素的数组,数组下标0 - 24.

要不就别给分,要不就多给点 整出个5分 没心情细看

1楼的垃圾,6级怎么升上来的,鄙视你