博客> Java 刷题纠错(三)
Java 刷题纠错(三)
2019-05-21 02:21 评论:0 阅读:333 cocoRxx
JAVA 刷题纠错(三)

1、子类能继承父类的所有成员 解释:在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者结合起来则形成一个子类的对象。所以所谓的继承是子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的书法是错误的。可以继承,但是无法访问到。

2、定义方法 1\ int x(){ char ch='a'; retutrn (int) ch;} 解释:Java中涉及到的byte、short和char类型都可以强制转换为int ,符合类型转换 2\ void x(){ ... return true;} 解释:方法中定义为void 应该没有返回值,但是返回值为boolean 类型 错误喔 3\ int x(){... return true;} 解释:方法中类型为int,应该返回int类型值,但是返回值类型为boolean 类型 错误喔 4\ int x(int a,b){ return a+b;} 解释:方法应该定义为int(int a,int b) ,上述错误喔

3、欲构造ArrayList类的一个实例,此类实现了List接口 1\ ArrayList myList = new Object () 解释:只是实例化了一个ArrayList类的对象myList,而没有实现接口,错误喔 2\ List myList = new ArrayList() 解释:用List来声明MyList实现接口,并用ArrayList构造出一个实例 3\ ArrayList myList = new List() 解释:List并不是一个类,不能用new 关键字,错误喔 4\ List myList = new List() 解释:接口不能实例化一个接口,错误喔

4、不考虑反射机制,一个子类显示调用父类的构造器必须用super关键字,是正确的 解释:java中的super关键字,用于代表子类的直接父类的特征。super可以访问:父类的成员变量,成员方法,构造方法;使用super关键词的情况:在子类中,存在与父类相同的属性和方法,由于访问子类中属性和方法的优先级高于父类,可以通过super关键词来访问父类中的属性和方法;在子类中,可以通过super关键词来显示的调用父类的构造方法;子类的构造方法默认调用父类的无参构造方法,当父类中不存在无参构造方法时,可以通过super来调用父类的有参构造方法来避免编译时错误

5、在Java语言中关于数据类型和包装类的说法是: long 和 double 都占了64位(64bit)的存储空间

6、执行完以下代码 int[] x = new int[10]; x[9] 为0

7、指出以下程序运行的结果: 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'; } } 结果是: good and gbc 解释:String 类是不可变的,一旦创建了String 对象,它的值就无法改变了

8、抽象类与最终类描述:1\抽象类能被继承,最终类只能被实例化,2\抽象类和最终类都可以被声明使用,3\抽象类中可以没有抽象方法,最终类中可以没有最终方法

9、以下代码输出结果 public class Spike { public static void main(String[] args) { Counter a = new Counter(); System.out.println(a.increment()); System.out.println(a.anotherIncrement()); Counter b = new Counter(); System.out.println(b.increment()); } } class Counter { private static int count = 0; public int increment() { return count++; } public int anotherIncrement() { return ++count; } } 结果是:022 解释:count是静态变量,为所有对象共享,因此不管a.increment()还是b.increment()都会使count持续增加。 increment()方法返回当前count值,然后count增加1,antoherincrement()方法让count增加1,然后返回count值,第一次a,increment()返回值为0,此时count值为1,第二次a.anotherincrement()先让count+1再返回,返回值为2,第三次b.increment()先返回count当前值是2,然后count+1

10、ServletConfig接口默认是在(GenericServlet)实现的

11、volatile关键字,说法正确有:volatile关键字用在多线程同步中,可保证读取的可见性;JVM保证从主内存加载到线程工作内存的值是最新的;volatile能禁止进行指令重排序;

12、在myjsp.jsp中,关于以下代码正确的是 <%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %> 答案:该页面发生异常会转向 error.lsp;存在errorPage属性时,isErrorPage是默认为 false;error.jsp 页面一定要有isErrorPage 属性且值为 true

13、对于局部内容类,只有在方法的局部变量被标记为final或局部变量是effctively final 的,内部类才能使用它们;成员内部类位于外部类内部,可以直接调用外部类的所有方法(静态方法和非静态方法)

14、String str = new String("abc"),"abc"在内存中分配:堆、字符串常量区

15、Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是:加载Servlet类及.class对应的数据;创建ServletConfig对象;创建Servlet对象

16、JAVA程序的main方法必须写在类里面;JAVA程序中可以有多个名字为main方法

收藏
0
sina weixin mail 回到顶部