每日10道JAVA题答案(20180611)

试题

1.D

Java一维数组有两种初始化方法 
1、静态初始化


int array[] = new int[]{1,2,3,4,5}
或者


int array[] = {1,2,3,4,5}
需要注意的是,写成如下形式也是错误的


int array[] = new int[5]{1,2,3,4,5}
2、动态初始化


int array[] = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
静态与动态初始化的区别就在于,前者是声明的时候就初始化,后者是先声明,再动态初始化。




2.D


1、为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,java是跨平台的,所以java中的包和操作系统没有任何关系,java的包是用来组织文件的一种虚拟文件系统。A错
2、import语句并没有将对应的java源文件拷贝到此处仅仅是引入,告诉编译器有使用外部文件,编译的时候要去读取这个外部文件。B错
3、Java提供的包机制与IDE没有关系。C错
4、定义在同一个包(package)内的类可以不经过import而直接相互使用。




3.B
初始化过程是这样的: 
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 
3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 
 
(1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C 
(2)super("B"); 表示调用父类的构造方法,不调用父类的无参构造函数,输出B 为什么不执行无参构造方法呢? 我认为父类的构造方法所谓的执行其实是在子类构造方法里面都有一个默认的super() 调用无参构造方法,如果指定了super("") 就调用指定的super
如果删掉super("B") 则默认执行super(); 结果是CAAB
(3) System.out.print("B"); 
 所以输出CBB
 
 4.A
 基本数据类型和string 原值不变
 数组和引用数据类型改变参数后   原值改变
 
 5.D
 一般关系数据模型和对象数据模型之间有以下对应关系:表对应类,记录对应对象,表的字段对应类的属性
 6.C。
由于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成"/"。如果想替换的只是".",那么久要写成"\\.".
 7.B
泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,顶多编译速度稍微慢一些,执行速度是完全没有什么区别的.
 8.C
 复习一下子类方法重写父类方法遵循“两同两小一大”的规则




子类覆盖父类要遵循“两同两小一大”


“两同”即方法名相同,形参列表相同


“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等。


  (注:看到有网友有这样的疑问,父类方法返回值是double,子类修改成int为什么不行呢?


这是因为返回值类型更大或者更小,是对于同一类型而言的。也就是说,返回值的类型需要有继承关系才去考虑大小这个概念。类型不同,肯定不是方法重写)


“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。


注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法一个是实例方法,否则编译出错。






所以,根据这个原理,再来分析上面这道题。
重载有需要满足三个条件:形参个数、顺序、类型必须有一者不同


A.public void foo(){}
返回值类型与父类不一致,所以不可能是方法的重写。又因为方法名相同,那么只能是方法重载,而方法重载有需要满足三个条件:形参个数、顺序、类型必须有一者不同,A选项都不满足,错


B.public int foo(){return 1;}
与A选项一样


C.public A foo(B b){return b;}
返回值类型与父类相同,但由于参数列表不同,所以是对父类方法的重载


D.public A foo(){return A;}
D 选项 返回值中A未定义,编译错误。D错误。
语法错误


9.B
this()和super()为构造方法,作用是在JVM堆中构建出一个对象。因此避免多次创建对象,同一个方法内只能调用一次this()或super()。同时为了避免操作对象时对象还未构建成功,需要this()和super()的调用在第一行实现【以此来创建对象】,防止异常。
安稳
this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。


10.BD
抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
public static final 
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法
7.则实现类定义为抽象类。

猜你喜欢

转载自blog.csdn.net/stridebin/article/details/80653967
今日推荐