2.14Java专项测试复盘
-
在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( )。
A. System.out.print (buffer[i]);
B. DataOutputStream dout = new DataOutputStream(new FileOutputStream(this.filename));
C. DataInputStream din = new DataInputStream(new FileInputStream(this.filename));。
D. System.in.read(buffer)。解析:input和output指的是对于程序而言。input是从文件读取进来,output是输出到文件。
答案:B -
下列哪个选项是正确计算42度(角度)的余弦值?
A. double d=Math.cos(42)
B. double d=Math.cosine(42)
C. double d=Math.cos(Math.toRadians(42))
D. double d=Math.cos(Math.toDegrees(42))解析:计算余弦值使用Math类的cos()方法
toRadians()是将角度转换为弧度
toDegrees()是将弧度转换为角度
答案:C -
@SuppressWarnings(“deprecation”)的功能是什么?
A. 屏蔽不赞同使用的类和方法的警告
B. 屏蔽在强制类型转换的时候编译器给出的警告
C. 关闭所有警告信息
D. 当在可序列化的类上缺少serialVersionUID定义的警告解析:
Override 注解
指明被注解的方法需要覆写超类中的方法.
如果某个方法使用了该注解,却没有覆写超类中的方法(比如大小写写错了,或者参数错了,或者是子类自己定义的方法),编译器就会生成一个错误.
Deprecated 注解
可以修饰类、方法、变量,在java源码中被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的,可能以后会被删除的类、方法等,如果现在使用,则在以后使用了这些类、方法的程序在更新新的JDK、jar包等就会出错,不再提供支持。 个人程序中的类、方法、变量用@Deprecated修饰同样是不希望自己和别人在以后的时间再次使用此类、方法。 当编译器编译时遇到了使用@Deprecated修饰的类、方法、变量时会提示相应的警告信息。
Suppresswarnings 注解
可以达到抑制编译器编译时产生警告的目的,但是很不建议使用@SuppressWarnings注解,使用此注解,编码人员看不到编译时编译器提示的相应的警告,不能选择更好、更新的类、方法或者不能编写更规范的编码。同时后期更新JDK、jar包等源码时,使用@SuppressWarnings注解的代码可能受新的JDK、jar包代码的支持,出现错误,仍然需要修改。 里面的deprecation修饰符则是对java中已经过时或者废弃方法的警告。
答案:A -
下列说法错误的有( )
A. 能被java.exe成功运行的java class文件必须有main()方法
B. J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行.jar文件
D. 能被Appletviewer成功运行的java class文件必须有main()方法解析:
B选项中J2SDK是编程工具,不是API.
C选项中 Appletviewer.exe 就是用来解释执行java applet应用程序的,简单理解就是没有main函数的继承applet类的java类。
D选项中 能被Appletviewer成功运行的java class文件没有main()方法
答案:BCD -
下列哪些操作会使线程释放锁资源?
A. sleep()
B. wait()
C. join()
D. yield()解析:所谓的释放锁资源实际是通知对象内置的monitor对象进行释放,而只有所有对象都有内置的monitor对象才能实现任何对象的锁资源都可以释放。又因为所有类都继承自Object,所以wait()就成了Object方法,也就是通过wait()来通知对象内置的monitor对象释放,而且事实上因为这涉及对硬件底层的操作,所以wait()方法是native方法,底层是用C写的。
其他都是Thread所有,所以其他3个是没有资格释放资源的
而join()有资格释放资源其实是通过调用wait()来实现的
答案:BC -
Java的体系结构包含( )。
A. Java编程语言
B. Java类文件格式
C. Java API
D. JVM解析:ava体系结构包括四个独立但相关的技术:
Java程序设计语言
Java.class文件格式
Java应用编程接口(API)
Java虚拟机
我们再在看一下它们四者的关系:
当我们编写并运行一个Java程序时,就同时运用了这四种技术,用Java程序设计语言编写源代码,把它编译成Java.class文件格式,然后再在Java虚拟机中运行class文件。当程序运行的时候,它通过调用class文件实现了Java API的方法来满足程序的Java API调用 -
java运行时内存分为“线程共享”和“线程私有”两部分,以下哪些属于“线程共享”部分
A. 程序计算器
B. 方法区
C. java虚拟机栈
D. java堆解析:私有:java虚拟机栈,程序计数器,本地方法栈
共享:java堆,方法区
答案:BD -
判断一块内存空间是否符合垃圾收集器收集的标准有哪些?
A. 给对象赋予了空值null,以下再没有调用过
B. 对象重新分配了内存空间
C. 给对象赋予了空值null
D. 给对象赋予了新值解析:在java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:
1.给对象赋值为null,以下没有调用过。
2.给对象赋了新的值,重新分配了内存空间。
答案:ABD -
下面有关java threadlocal说法正确的有?
A. ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
B. 线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
C. 在Thread类中有一个Map,用于存储每一个线程的变量的副本。
D. 对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式答案:ABCD
-
Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( )
A. Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下
B. 通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法
C. 通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员
D. Java反射机制提供了字节码修改的技术,可以动态的修剪一个类
E. Java的反射机制会给内存带来额外的开销。例如对永生堆的要求比不通过反射要求的更多
F. Java反射机制一般会带来效率问题,效率问题主要发生在查找类的方法和字段对象,因此通过缓存需要反射类的字段和方法就能达到与之间调用类的方法和访问类的字段一样的效率解析:
答案:ADF