笔试强训——Day5

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

他的回答: A (正确)

正确答案:A

参考答案: 5 >> 2 相当于 5除于2两次,等于1 ,

>>> 表示无符号右移,高位用0 填充,0001右移两位 0000,所以选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”。

他的回答: A (错误)

正确答案: C

参考答案: 作对这道题的关键是要理解Java的值传递,关于值传递和引用传递的解释如下:

值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

这道题中a、b(是引用的副本,Java中没有引用传递)传入operate()函数中,但最后a指向的对象的值发生了变化,而b指向的对象的值没有发生变化,这是因 为x.append(y);改变了a指向的对象的值,而y=x;并没有改变b指向对象的值,指向将y指向了x所指向的对象(之前y和b指向同一个对象)。

3.在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()

A this.A(x)

B this(x)

C super(x)

D A(x)

他的回答: A (错误)

正确答案: B

4.下面代码的运行结果是()

public static void main(String[] args){
String s;
System.out.println("s="+s);
}

A 代码编程成功,并输出”s=”

B 代码编译成功,并输出”s=null”

C 由于String s没有初始化,代码不能编译通过。

D 代码编译成功,但捕获到NullPointException异常

他的回答: D (错误)

正确答案: C

5.装箱、拆箱操作发生在: ()

A 类与对象之间

B 对象与对象之间

C 引用类型与值类型之间

D 引用类型与引用类型之间

他的回答: C (正确)

正确答案: C

6.一个以”.java”为后缀的源文件

A 只能包含一个类,类名必须与文件名相同

B 只能包含与文件名相同的类以及其中的内部类

C 只能有一个与文件名相同的public类,可以包含其他类

D 可以包含任意类

他的回答: C (正确)

正确答案: C

7.下列哪个说法是正确的()

A ConcurrentHashMap使用synchronized关键字保证线程安全

B HashMap实现了Collction接口

C Array.asList方法返回java.util.ArrayList对象

D SimpleDateFormat是线程不安全的

他的回答: A (错误)

正确答案: D

8.以下说法错误的是()

A 虚拟机中没有泛型,只有普通类和普通方法

B 所有泛型类的类型参数在编译时都会被擦除

C 创建泛型对象时请指明类型,让编译器尽早的做参数检查

D 泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型

他的回答: A (错误)

正确答案: D

9.指出以下程序运行的结果是

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';
    }
}

A good and abc

B good and gbc

C test ok and abc

D test ok and gbc

他的回答: B (正确)

正确答案: B

10.下列有关JAVA异常处理的叙述中正确的是()

A finally是为确保一段代码不管是否捕获异常都会被执行的一段代码

B throws是用来声明一个成员方法可能抛出的各种非运行异常情况

C final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承

D throw是用来明确地抛出一个异常情况

他的回答: A B D (正确)

正确答案: A B D

11.标题:统计回文

【统计回文】“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。

  花花非常喜欢这种拥有对称美的回文串,生日的时候她 得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。

  你接受花花的请求,帮助她寻找有多少 种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。

  例如: A = “aba”,B = “b”。这里有4种把B插入A的办法: * 在A的第一个字母之前: "baba" 不是回文 * 在第一个字母‘a’之后: "abba" 是回文 * 在字母‘b’之后: "abba" 是回文 * 在第二个字母'a'之后 "abab" 不是回文 所以满足条件的答案为2

输入描述:

每组输入数据共两行。 第一行为字符串A 第二行为字符串B 字符串长度均小于100且只包含小写字母

输出描述:

输出一个数字,表示把字符串B插入字符串A之后构成一个回文串的方法数

输入:

aba

b

输出:

2

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.next();
            String s2=sc.next();
            int count=0;
            for(int i=0;i<=s.length();i++){
                StringBuilder sb=new StringBuilder(s);
                sb.insert(i,s2);
                if(isHuiWen(sb.toString())){
                    count++;
                }
            }
            System.out.println(count);
        }
    }
    public static boolean isHuiWen(String s){
        int i=0;
        int j=s.length()-1;
        while(i<j){
            if(s.charAt(i)!=s.charAt(j)){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}

12.标题:连续最大和

【连续最大和】一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3 输入描述:

输入描述:

输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。

输出描述:

所有连续子数组中和最大的值。

输入:

3 -1 2 1

输出:

3

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int[] array=new int[n];
        for(int i=0;i<n;i++){
            array[i]=sc.nextInt();
        }
        int max=array[0];
        for(int i=1;i<n;i++){
            array[i]+=array[i-1]>0?array[i-1]:0;
            max=Math.max(max,array[i]);
        }
        System.out.println(max);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值