那些你曾错过的Java题(一)

简介: 那些你曾错过的Java题(一)


1


1.下面属于java包装类的是?


A.String

B.Long

C.Character

D.Short


分析:


      这应该是一个比较容易的题目了,但是也是得死记硬背的题,所以拿出来给大家记一记。


      Java 语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,即包装类。对应的基本类型和包装类如下表:


image.png


答案:B,D




2


2.对于Java中异常的描述正确的是?


A.用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。

B.如果try块中没有抛出异常,finally块中的语句将不会被执行。

C.抛出异常意味着程序发生运行时错误,需要调试修改

D.Java中的可不检测(unchecked)异常可能来自RuntimeException类或其子类。


分析:


A错 在调用此方法的时候 也可以再次申明以将异常交由更高一级处理。


B错 finally块中的语句一定会被执行。除非catch块中有System.exit(0)。对于finally确实值得深究,下次也写篇文章来分析分析。


C错 抛出异常不一定是运行时异常,也有可能是编译时异常。这里甩给大家一张图:


image.png


这里多讲几句,Exception(异常)是程序本身可以处理的异常。主要包含RuntimeException等运行时异常IOException,SQLException等非运行时异常

运行时异常包括:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

非运行时异常(编译异常) 包括:RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常(try catch 或者抛出),如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。


D对 运行时异常的特点是Java编译器不会检查它。


答案:D


3


下列哪个说法是正确的?


A. ConcurrentHashMap使用synchronized关键字保证线程安全

B.HashMap实现了Collction接口

C.Array.asList方法返回java.util.ArrayList对象

D.SimpleDateFormat是线程不安全的


分析:


A选项中,ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。


B中,HashMap定义规则如下:


public class HashMap<K,V>
   extends AbstractMap<K,V>
   implements Map<K,V>, Cloneable, Serializable

所以HasMap跟Collection没啥关系!



C中,应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部


D.特意去看了一下jdk,如图:


image.png


官方说是不安全的


答案:D



4


java 中哪个关键字可以对对象加互斥锁?
A.transient
B.synchronized
C.serialize
D.static


分析:


这题估计大家都会,但是拿出来主要是说说有一些修饰符具体有啥用的,给大家拓展拓展:


static 修饰符,用来创建类方法和类变量。


final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。


abstract 修饰符,用来创建抽象类和抽象方法。


synchronized 用于多线程的同步。用来给对象和方法或者代码块加锁,各线程互斥访问。


volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。


serialize:Java 对象序列化为二进制文件。


transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。


答案:B



5


1 .class Parent{
2. public float aFun(float a, float b) { }
3 .}
4 .class Child extends Parent{
5 .
6 .}


将以下哪种方法插入行5是不合法的?


A.float aFun(float a, float b){ }

B.public int aFun(int a, int b) { }

C.public float aFun(float p, float q){ }

D.private int aFun(int a, int b){ }


分析:


这个题主要是考察了方法的重写,我们来扯一扯:


方法重写应遵循“三同一小一大”原则



“三同”:即方法名相同,形参列表相同,返回值类型相同;


“一小”:子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等;


“一大”:子类方法的访问修饰符应比父类方法更大或相等。


A选项是重写,但是默认访问修饰符比父类小,插入第五行编辑器会报错。 default,默认的访问权限,也是可以省略的访问权限,它不仅能在设置了该权限的类中访问,也可以在同一包中的类或子类中访问。意思就是只能由跟这个类在同一个包中的类来访问,比private限制更少,但比protected限制更多。


B、D不是重写。因为形参列表和返回值类型不同,不满足“三同”。所以写在第五行以普通方法对待,插入第五行没有错误。


C选项满足重写的各项条件,是正确的重写,所以插入第五行没有错误。


相关文章
|
安全 Java 数据安全/隐私保护
【用一个故事介绍Java的封装继承多态】
【用一个故事介绍Java的封装继承多态】
|
1月前
|
存储 Java 程序员
Java灵魂拷问13个为什么,你都会哪些?
【11月更文挑战第6天】本文回答了一些常见的 Java“灵魂拷问”,包括 Java 跨平台的原因、垃圾回收机制的作用、接口不能有实例变量的原因、字符串不可变的好处、异常处理机制的意义、类加载机制的双亲委派模型、多线程同步机制的重要性、重写方法访问修饰符的限制、包装类的存在意义、`equals()` 和 `hashCode()` 方法一起重写的原因、静态方法不能被重写的原因、`ArrayList` 扩容策略的权衡,以及 `final` 关键字的多种用途。
阿里P8大牛推荐Java程序员必看的 13 本 Java 书籍
关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。 在下面这 13 本书籍中小编还是要建议大家可以先去关注英文原版,毕竟翻译的书籍中都有一定的语法错误。
|
7月前
|
Java 编译器
Java打怪升级宝典:Java中的异常你真的了解吗?
Java打怪升级宝典:Java中的异常你真的了解吗?
89 0
|
存储 缓存 运维
浅谈与JAVA的故事
虽然自己是一名大前端开发者,但是技术涉猎不局限于前端领域,再加上之前工作需要,接触到了JAVA的开发。在之前有一期话题讨论中我讲到,自己在一家美资企业上班的时候,负责部门软件相关的工作,前后端都要开发,所以在那时候才真正的接触到JAVA的开发,虽然在上大学的时候只是学习理论课,但是仅仅是理论课而已,个人感觉没有实际开发的JAVA经历是不算真正的接触JAVA领域的。
92 1
浅谈与JAVA的故事
|
安全 算法 Java
Java 17 VS Java 8: 新旧对决,这些Java 17新特性你不容错过
Java 17 VS Java 8: 新旧对决,这些Java 17新特性你不容错过
2584 0
|
Oracle Java 关系型数据库
JAVA学习第三天
JAVA学习第三天
59 0
|
消息中间件 设计模式 Kubernetes
怎么学Java?最全Java学习路线,总有一款适合你
怎么学Java?最全Java学习路线,总有一款适合你
怎么学Java?最全Java学习路线,总有一款适合你
|
SQL 算法 前端开发
那些你曾错过的JAVA题(三)
那些你曾错过的JAVA题(三)
125 0
那些你曾错过的JAVA题(三)
|
存储 安全 Java
那些你曾错过的JAVA题(二)
那些你曾错过的JAVA题(二)
123 0
那些你曾错过的JAVA题(二)