Java综合能力提升Day-5

144 阅读2分钟

「这是我参与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连续最大和

之前做过。这里附上链接 题解