OOP和API阶段错题总结(1)

1.在java.lang包的 Math类中,求最大值的方法为(max() )。
2.实现equals和hashCode最显而易见的作用是(比较两个对象标识符的值 )。
解析:equals和hashCode都是Object的方法,最显而易见的作用就是比较两个对象的标识符的值。
3.a.equals(b)比较的是值,相同为true,不相同为false
4.接口不继承Object类
5.给定一个JAVA程序的代码片断如下,运行后,正确的输出结果是(HELLO,WORLD )。

String s="HELLO,WORLD";
s.replace(","," ");
System.out.println( s );

解析:s.replace(","," “);将字符串中所有的“,”替换成空格,但是String一旦创建就不能被修改,修改后的字符串没有使用新的String对象接收,因此s仍然是原值,如果要实现效果要使用s=s.replace(”,"," ");
6.StringBuffer字符串缓冲区的初始容量为16个字符
7.String.toCharArray()可以将字符串转换为char类型的数组
8.StringBuffer类中的append()方法描述正确的是(向缓冲区追加字符串数据,append()方法返回值类型是StringBuffer类型)
9.关于StringBuffer和StringBuilder说法正确的是( StringBuffer是线程安全的,StringBuilder不是线程安全的 )
10.下面哪个程序的运行结果是true( c )
a.System.out.println(“abc”.equals(“Abc”));
b.System.out.println(“”.equals(null));
c.System.out.println(“abc”=="ab”+“c”);
d.System.out.println(“”.equalsIgnoreCase(null));
11.java语言中截取字符串的方法是( substring() )
解析:substr() 不是java语言中String的方法
12.对字符串的说法正确的是( 字符串值一旦初始化就不会被改变 )
13.关于String类的indexOf说法不正确的是(c,d )
a.返回指定字符在字符串中第一次出现的索引
b.返回指定子字符串在字符串第一次出现的索引
c.返回指定字符在字符串中最后一次出现的索引
d.返回指定子字符串在此字符串最后一次出现的索引
13.下面说法正确的是( a,c,d )
a,字符串缓冲区是为了提高字符串的操作效率
b,StringBuilder是线程安全的
c,StringBuffer是线程安全的
d,String类的valueOf()方法可以将任意类型变成字符串
14.在java的异常处理中,用户自定义的异常类应该是继承自(Exception)的子类。
解析:Throwable有两个直接子类Error和Exception,Error一般是比较严重的系统错误,恢复错误十分困难甚至不可能,如内存溢出,Error往往是程序员无法控制的,因此我们一般不用涉及Error,处理异常时多指Exception。自定义的异常可以更加明确的定位异常出错的位置,同时给出详细的异常信息。
15.JDBC编程的异常类型分为(  SQLException,SQLWarning )
16.哪个方法可以将毫秒值转成日期对象( Date类中的构造方法 )
解析:
a,Date类中的构造方法
属于运行时常量池导致的溢出,设置-XX:MaxPermSize可以解决这个问题,
b,Date类中的setTime方法
属于堆空间不足导致的错误,问题比较少见,解决方式和C相同,
c.Date类中的getTime方法
属于java堆内存问题,一般的手段是通过内存映像分析工具,对Dump出来的堆转储存快照进行分析,重点是确认内存中的对象是否是有必要的,也就是要判断是出现了内存泄漏,还是出现了内存溢出,如果是内存列楼,通过工具检查泄露对象打GC Roots的引用链信息,可以准确的确定出泄露代码的位置,不存在泄露,就应该检查虚拟机的堆参数,如果可以继续调大,可以设置-Xmx解决问题
d.SimpleDateFormat类中的format方法
java.lang.OutOfMemoryError: nativeGetNewTLA指当虚拟机不能分配新的线程本地空间(Thread Local Area)的时候错误信息,此错误是线程申请一个新的TLA时产生的,这个异常一般只会发生在jRockit虚拟机,只有过于绝对。

17.如果某异常继承RuntimeException,则该异常可以不被声明
18.有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:(Exception
19.给定以下JAVA代码,这段代码编译运行后输出的结果是( finally,finished)。

public class Test {
     public static int aMethod(int i) throws Exception {
         try{
                return i/10;
         }catch(Exception ex){
               throw new Exception ("exception in a aMothod");
         }finally{
               System.out.print("finally");
         }
      }
      public static void main(String [] args) {
           try{
                aMethod(0);
           }catch(Exception ex){
                System.out.print("exception in main");
           }
           System.out.print("finished");
       }
public int testException() {     
    int i = 0;     
    try {        
        i++;         
        throw new Exception("error");    
    } catch (Exception e) {          
        return i++;    
    } finally {        
        i++;    
    }
}

以上方法被调用后,返回值是1
21.继承后重写的方法不能缩小访问权限
22.以下哪个方法是类A的合法继承方法(a):

class A {
     protected int method1(int a, int b) {
         return 0;
     }
}

a.public int method1(int a, int b) {
return 0;
}
b.private int method1(int a, int b) {
return 0;
}
c.public short method1(int a, int b) {
return 0;
}
d.static protected int method1(int a, int b) {
return 0;
}
23.下列代码的时间复杂度是多少(O(NlogN))(^符号是幂的意思)

int func(int N) {
    int cnt = 0;
    for(int i=1;i<=N;i++)
    for(int j=1;j<=N;j+=i)
    cnt+=(i+j);
    return cnt;
}

解析:里面的for循环N/1+N/2+N/3+…N/N调和级数 1+1/2+1/3+1/4+…+1/n= ln(n+1)+r(r为常量)所以为NlogN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值