「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」
前言
现专栏已改名,为Java综合能力提升Day-xxx。
🐱🏍 一、选择题
✈️ 1:下面的程序 编译运行后,在屏幕上显示的结果是()
public class test {
public static void main(String args[]) {
int x,y;
x=5>>2;
y=x>>>2;
System.out.println(y);
} }
A 0 B 2 C 5 D 80
💯解析:5左移2相当于除2*2.等于1,1在左移2等于0.所以输出0.
🎖️正确答案:A
✈️2:以下代码结果是什么?
public class foo {
public static void main(String sgf[]) {
StringBuffer a=new StringBuffer(“A”);
StringBuffer b=new StringBuffer(“B”);
operate(a,b);
System.out.println(a+”.”+b);
}
static void operate(StringBuffer x,StringBuffer y) {
x.append(y);
y=x;
} }
A 代码可以编译运行,输出“AB.AB”。 B 代码可以编译运行,输出“A.A”。 C 代码可以编译运行,输出“AB.B”。 D 代码可以编译运行,输出“A.B”。
💯解析:StringBuffer分别创建了a、b,他们的值也是A、B。调用operate方法。这个方法将b拼接给了a,然后b=a。但是x,y都是形参。x调用append方法是真的改变了a的值,而y=x只是在这个方法里改变了y的引用,让他指向x,但是实际上b还是不变。可以看看下面这段代码。
class test2{
static void operate(StringBuffer x,StringBuffer y) {
x.append (y);
y = x;
System.out.println (x);
System.out.println (y);
}
public static void main (String[] args) {
StringBuffer a=new StringBuffer ("A");
StringBuffer b=new StringBuffer ("B");
//System.out.println (a.append (b));
//System.out.println (a);
//System.out.println (b = a);
operate (a, b);
//System.out.println (b);
System.out.println (a+" "+b);
}
}
执行结果:在operate方法里x,y确实都是AB,但是出去b就还是B。
🎖️正确答案:C
✈️3:下面代码的运行结果是()
public static void main(String[] args){
String s;
System.out.println("s="+s);
}
A 代码编程成功,并输出”s=” B 代码编译成功,并输出”s=null” C 由于String s没有初始化,代码不能编译通过。 D 代码编译成功,但捕获到NullPointException异常
💯解析:String类需要初始化不然编译不过。
🎖️正确答案:C
✈️4:指出以下程序运行的结果是
public class Example{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
//引用类型变量,传递的是地址,属于引用传递。
str="test ok";
ch[0]='g';
}
}
💯解析:和上一题一样引用类型的变量str=“test ok”并不改变str实际值。但是ch[0]和上一题的append方法一样,会真的改变。所以应该打印good和gbc。
🎖️正确答案:B
🐱🏍二、编程题
2.1连续最大和
之前做过。这里附上链接 题解