博客> Java 刷题纠错(二)
Java 刷题纠错(二)
2019-08-22 07:30 评论:0 阅读:432 cocoRxx
JAVA 刷题纠错(二)

1、欲构造ArrayList类的一个实例,此类实现了List接口,正确方法是: List myList = new ArrayList() 解释:属于面向接口编程,是Java语言的一大优点。ArrayList虽然是一个具体的类,按照 ArrayList myList = new ArrayList(); 是可以生成一个myList对象,而且编译也不会报错。 在实际开发中是采用 :接口名 xxx = new 接口某实现类()。

2、在java的一个异常处理中,可以包含多个的语句块是: catch 解释:异常处理一般格式: 捕获异常: try{ //代码块 }catch(异常类型,eg: Exception e) { //需要抛出的异常,eg:e.printStackTrace(); }catch(异常类型) { //需要抛出的异常 }finally{ //必定执行的代码块 } 在一个异常处理中catch语句块是可以多个的,即可以抛出多个异常 1\try语句块中可能出现异常的代码,在一个异常处理中是只出现一次的 2\finally语句块是指异常处理完后必须要执行的部分,此部分不是必须的,可以不用写 3\throws用法:在方法头部分使用throws来声明这个方法可能回避的异常,当有异常抛出时会中断该方法,而异常被抛出这个方法的调用者那里,由调用者来处理这个异常 4\catch语句块是用来捕获异常的,可以捕获各种不同的异常,可以有多个catch块,每个块用于捕获不同的异常,来进行不同的处理

3、代码执行结果:true class Chinese{ private static Chinese objref = new Chinese(); private Chinese(){} public static Chinese getInstance(){return objref;} }

public class TestChinese{
    public static void main(String [] args){
        Chinese obj1 = Chinese.getInstance();
        Chinese obj2 = Chinese.getInstance();
        Syttem.out.printin(obj1 == obj2);
    }
}

解释:单例模式,obj1和obj2其实是一个对象。返回值是true

4、关于下列程序段的输出结果,正确是的是:0 public class MyClass{ static int i; public static void main(String argv[]){ System.out.println(i); } }

解释:静态变量会默认赋值初始值,局部变量和final声明的变量必须手动赋值初始值
    Java中基本数据类型默认值是:boolean是false,char是'/uoooo'(null),byte是(byte)0,short是(short)0
    int是0,long是0L,float是0.0f,double是0.0d

5、在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,这时,不需要任何修饰词

   解释:private使用范围仅限本类中。protected使用范围为含继承关系的类中(子类可以使用父类)。什么都不写叫友好类,默认是本包中。public特别随意,包内包外,类内类外都可以访问

6、以下方法,哪一个不是对add方法的重载?答案:B public class Test{ public void add(int x,int y,int z){} } A、public int add(int x,int y,float z){return 0;} B、public int add(int x,int y,int z){return 0;} C、public void add(int x,int y){}

解释:重载规则:1\被重载的方法必须改变参数列表(参数类型或参数个数不一样)2\被重载的方法可以改变返回值类型 3\被重载的方法可以改变范文修饰符 4\被重载的方法可以声明新的或更广的检查异常 5\方法能够在同一个类中或在一个子类中被重载 6\无法以返回值类型作为重载函数区分标准

7、以下JAVA程序的输出是什么?答案:B public class HelloSogou{ public static synchronized void main(String[] a){ Thread t = new Thread(){ public void run(){Sogou();} }; t.run(); System.out.print("Hello"); } static synchronized void Sogou(){ System.out.print("Sogou"); } }

解释:1、线程Thread 中run()调用时只是单纯执行方法,并没有启动线程,所以结果是SogouHello,假设将run()换成start,结果就是HelloSogou 2、函数使用的锁是this(即对象本身)若函数被static修饰则锁为.class

8、String 与 StringBuffer的区别 String是不可变的对象 ,StringBuffer是可以在编辑的;String是常量,StringBuffer是变量

9、JAVA异常类的描述: 异常的继承结构:基类为Throwable,Error 和 Exception 继承 Throwable,RuntimeException 和 IOException 等继承Exception; Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉

10、class A{} class B extends A{} class C extends A{} class D extends B{} 描述正确的有: The type Listis assignable to List. The type List<Object>is assignable to List<?>. The type Listis assignable to List<?extends B>. The type List<?extends B>is assginable to List<?extends A>.

    解释:1、如果尖括号里的是一个类 ,那么尖括号里的就是一个点 2、如果尖括号里带有问号,那么代表一个范围,&lt;?extends A> 代表小于等于A的范围,&lt;?super A>代表大于等于A的范围,&lt;?&gt;代表全部范围

4、尖括号里的所有点之间互相赋值都是错的,除非是两相同的点 5、尖括号小范围可以赋值给大范围,大范围不可以赋值给小范围,如果某点包含某个范围,就可以赋值 6、List<?>和List是相等的,都代表最大的范围 7、List既是点也是范围,当表示范围时,表示最大范围

0
sina weixin mail 回到顶部