javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-11-03 09:04:51 | 查看: 96 | 回复: 1

1.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?

A.11——11B.11——11C.12——12D.12——11答案:D解析:Math.round(11.5)12;Math.round(-11.5)-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor

2.代码如下

1.Floatpi=newFloat(3.14f);2.if(pi>3){3.System.out.print("piisbiggerthan3.");4.}5.else{6.System.out.print("piisnotbiggerthan3.");7.}8.finally{9.System.out.println("Haveaniceday.");10.}

输出结果是()A.编译失败。B.piisbiggerthan3.C.在运行时发生n个异常。D.piisbiggerthan3.Haveaniceday.E.piisnotbiggerthan3.Haveaniceday.答案:A解析:finally不是用在这种地方,仅仅在try/catch/finally内使用。

3.数组有没有length()这个方法?String有没有length()这个方法

A.有没有B.有有C.没有没有D.没有有答:D解析:数组没有length()这个方法,有length的属性。String有有length()这个方法

4.List,Set,Map哪一个不是继承自Collection接口?

A.ListB.SetC.MapD.都继承自Collection接口答:C解析:List,Set继承自Collection接口,Map不是。

5.是否可以从一个static方法内部发出对非static方法的调用?

A.是B.否答:B解析:不可以,如果其中包含对象的method();不能保证对象初始化.

6.下列哪个叙述是正确的()

A.创建File对象可能发生异常。B.BufferedRead流可以指向FileInputStream流C.BufferedWrite流可以指向FileWrite流D.RadomAccessFile流一旦指向文件,就会刷新该文件答案:C解析:创建File对象不会发生异常,创建新文件的时候会发生IOException异常。BufferedRead流只能指向FileRead流,它们都是以字符读取数据的。RadomAccessFile流指向文件时,不刷新文件。

7.为了向文件hello.txt尾加数据,下列哪个是正确创建指向hello.txt的流?

A.try{OutputStreamout=newFileOutputStream(“hello.txt”);}catch(IOExceptione){}B.try{OutputStreamout=newFileOutputStream(“hello.txt”,true);}catch(IOExceptione){}C.try{OutputStreamout=newFileOutputStream(“hello.txt”,false);}catch(IOExceptione){}D.try{OutputStreamout=newOutputStream(“hello.txt”,true);}catch(IOExceptione){}

答案:BFileOutputStream类是文件字节输出流,它是OutputStream类的子类,所以FileOutputStream的实例方法都是从OutputStream类继承来的,那么在这道题中需要使用上转型对象才能调用重写父类的方法,排除D。ABC在于FileOutpurStream的构造方法的不同,题目要求向文件尾加数据,A选项是具有刷新功能的构造方法,也就是会覆盖掉原来文件的数据,B选项参数为true表示不会刷新所指向的文件,而是从文件的末尾开始向文件写入数据,取值为false,输出流将刷新所指向的文件。

8.下面关于Java类的构造方法的说法中正确的是:()

A.一个类至少有一个构造方法B.构造方法的返回值类型必须是voidC.构造方法的可见性修饰符必须是publicD.构造方法必须显式的定义正确答案:A解析:构造方法是一种特殊的方法:它必须具备和所在类相同的名字;没有返回值类型,甚至连void也没有;构造方法是在创建一个对象使用new操作符时调用的,作用是初始化对象。造方法可以默认提供而不显式定义。简单的说就是,每个类至少有一个构造方法,即使没有写出来,即可以不用显示定义。她没有返回值,连void都没有,但是也可以使用private修饰构造方法。

9.为什么构造方法里this或者super函数调用必须放在第一行且无法共存?答:super方法在构造函数的第一行原因是子类有可能访问了父类对象,比如在构造函数

中使用父类对象的成员函数和变量,在成员初始化使用了父类,在代码块中使用了父类等,所以放在第一行可以保证在子类可以访问父类对象之前完成对父类对象的初始化。

this方法在构造函数的第一行原因是为保证父类对象初始化的唯一性,因为假设类B是类A的子类,如果this方法可以在构造函数的任意行使用则首先程序运行到构造函数B()的第一行发现没有调用this()和super(),就自动在第一行补齐了super()方法(这是java默认的机制),以此完成了对父类对象的初始化,然后返回子类的构造函数继续执行,当运行到构造函数B()的this(参数)调用行时,调用B类对象的另一个构造方法B(参数),在B(参数)中还会对父类对象再次初始化,这就造成了对资源的浪费,也有可能造成某些意想不到的结果,所以this方法不能出现在构造方法除第一行以外的其他行。

这也就解释了为啥在构造方法里面this与super方法不能同时存在的原因。

10.Java构造方法能否被重写和重载?

答:重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以Java的构造方法是不能被重写的。而重载是针对同一个的,所以构造方法可以被重载。

如果觉得我写的还行,请关注我的公众号,每天定时推送干货.


普通会员

0

帖子

322

回复

327

积分
沙发
发表于 2024-03-27 06:25:26

我喜欢

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017