每日练习——Day5

一、选择题

1.下面的程序 编译运行后,在屏幕上显示的结果是(A

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

2.以下代码结果是什么?(C)
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”。

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

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

public static void main(String[] args){
String s;
System.out.println("s="+s);
}
A 代码编程成功,并输出”s=”
B 代码编译成功,并输出”s=null”
C 由于String s没有初始化,代码不能编译通过。
D 代码编译成功,但捕获到NullPointException异常

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

A 类与对象之间
B 对象与对象之间
C 引用类型与值类型之间
D 引用类型与引用类型之间

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

A 只能包含一个类,类名必须与文件名相同
B 只能包含与文件名相同的类以及其中的内部类
C 只能有一个与文件名相同的public类,可以包含其他类
D 可以包含任意类

7.下列哪个说法是正确的(D
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collction接口
C Array.asList方法返回java.util.ArrayList对象
D SimpleDateFormat是线程不安全的

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

A 虚拟机中没有泛型,只有普通类和普通方法
B 所有泛型类的类型参数在编译时都会被擦除
C 创建泛型对象时请指明类型,让编译器尽早的做参数检查
D 泛型的类型擦除机制意味着不能在运行时动态获取List<T>中T的实际类型

9.指出以下程序运行的结果是(B)
一个以”.java”为后缀的源文件
以下说法错误的是()
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

10.下列有关JAVA异常处理的叙述中正确的是(ABD
A finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
B throws是用来声明一个成员方法可能抛出的各种非运行异常情况
C final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
D throw是用来明确地抛出一个异常情况

二、编程题

1、【统计回文】“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();
        int len = str1.length();
        int n = 0;
        for (int i = 0; i <=len ; i++) {
            StringBuffer str = new StringBuffer(str1);
            str.insert(i,str2);
            // 注意这里, 不能直接 StringBuilder str5 = str. reverse() ;
            // 因为这样 str 本身又变了。
            StringBuilder tmp = new StringBuilder(str);
            StringBuilder str3 = tmp.reverse();
            if(str.toString().equals(str3.toString())){
                n++;
            }
        }
        System.out.println(n);

    }
}

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

动态规划

状态方程式: max( dp[ i ] ) = getMax( max( dp[ i -1 ] ) + arr[ i ] , arr[ i ] )

import java.util.*;
public class Main {
    public static int getMax(int a,int b){
        return a > b ? a : b;
    }
        public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            int size = scan.nextInt();
             int[] array = new int[size];
            for(int i = 0;i < size; i++){
                array[i] = scan.nextInt();
            }
            int sum = array[0];
            int max = array[0];
            for(int i = 1;i<size;i++){
                sum = getMax(sum+array[i],array[i]);
                if(sum >= max){
                    max = sum;
                }
            }
            System.out.println(max);
          
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值