Java日常练习题,每天进步一点点(64)

 更新时间:2021年09月03日 08:34:12   作者:牛哄哄的柯南  
下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你

承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

1、关于容器下面说法正确的是? ( )

正确答案:D

A 列表(List)和集合(Set)存放的元素都是可重复的。

B 列表(List)和集合(Set)存放的元素都是不可重复的。

C 映射(Map)中key是可以重复的。

E 映射(Map)中value是可以重复的。

题解:
1、列表(List)的元素是有 序、可重复 的; 集合(Set)的元素是无序、不可重复的。
2、 List底层是数组存储数据的,所以有序,可重复的 Set底层是HashMap,添加元素其实就是调用map的put()方法,添加的元素作为map的key,value是一个Object对象 而Hashmap底层是哈希表,数组+链表的形式,根据key的hashcode()方法获取到的值与它的高16位进行一个异或运算,得到哈希值,再通过计算定位出它在数组中存放的位置,所以说是无序的,如果定位的位置有元素了,那就采用链地址法,就是比较hash值,如果有相同的新的值覆盖掉旧的值,如果没有,jdk1.7是新元素放在头节点,jdk1.8是放在尾节点,当然jdk1.8新增了红黑树,这里就不说了 总之,map的key不可重复,value是可以重复的
3、 list 存放的元素可重复, set 不可以。 map 使用的是键值对存放,可一对多,key不重复,value可重复

2、应用程序的main方法中有以下语句,则输出的结果( ) String s1=new String( ” xyz ” ); String s2=new String( ” xyz ” ); Boolean b1=s1.equals(s2); Boolean b2=(s1==s2); System .out.print(b1+ ” ” +b2);

正确答案:A

A true false

B false true

C true true

D false false

题解:
1、又错了的人来回答一下: String a = “a”; String b = “a”; 这样定义的a和b指向的是字符串常量区变量,地址是一样的,即用equals为true,用==也为true。 但是 String a =new String( “a”); String b = new String( “a”); 这样是定义了两个堆内存对象,只能equals,不能==
2、 String s1=new String( ” xyz ” ); //创建了String类型的内容为xyz的s1对象 String s2=new String( ” xyz ” ); //创建了String类型的内容为xyz的s2对象 Boolean b1=s1.equals(s2); //比较s1对象和s2对象的内容相等,返回true。 Boolean b2=(s1==s2); //比较s1和s2两个对象的存储地址是否相等,明显两者分别存储在不同的地址,所以返回:false。 故答案为:true false

3、当你编译和运行下面的代码时,会出现下面选项中的哪种情况? public class Pvf{

static boolean Paddy;
public static void main(String args){
System.out.println(Paddy);
}
}

正确答案:B

A 编译时错误

B 编译通过并输出结果false

C 编译通过并输出结果true

D 编译通过并输出结果null

题解:
1、 成员变量有默认初始值,可以不用赋值,boolean的默认值为false, 局部变量必须赋值。否则编译错误。

4、下列哪些语句关于内存回收的说明是正确的? ( )

正确答案:B

A 程序员必须创建一个线程来释放内存

B 内存回收程序负责释放无用内存

C 内存回收程序允许程序员直接释放内存

D 内存回收程序可以在指定的时间释放内存对象

题解:
1、选B。 A、JVM一旦启动,就会创建一个守护线程来监测是否需要有对象内存被释放。 C、无法直接释放。 D、不可以指定时间,System.gc(),只是提醒JVM可以进行一次Full GC,但是什么时候真正执行,还是不知道的。
2、 在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间
3、 程序 程序员 因缺思听,看混

5、关于 Socket 通信编程,以下描述错误的是:( )

正确答案:D

A 服务器端通过new ServerSocket()创建TCP连接对象

B 服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象

C 客户端通过new Socket()方法创建通信的Socket对象

D 客户端通过new ServerSocket()创建TCP连接对象

题解:
1、Socket套接字 就是源Ip地址,目标IP地址,源端口号和目标端口号的组合 服务器端:ServerSocket提供的实例 ServerSocket server= new ServerSocket(端口号) 客户端:Socket提供的实例 Socket soc=new Socket(ip地址,端口号)

6、JVM内存不包含如下哪个部分( )

正确答案:D

A Stacks

B PC寄存器

C Heap

D Heap Frame

题解:
1、JVM内存五大区域:
2、 PC寄存器即程序计数器

7、下面有关servlet service描述错误的是?

正确答案:B

A 不管是post还是get方法提交过来的连接,都会在service中处理

B doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的

C service()是在javax.servlet.Servlet接口中定义的

D service判断请求类型,决定是调用doGet还是doPost方法

题解:
1、 doget/dopost与Http协议有关,是在 javax.servlet.http.HttpServlet 中实现的
2、 GenericServlet 抽象类 给出了设计 servlet 的一些骨架,定义了 servlet 生命周期,还有一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的

8、下面哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持:( )

正确答案:AE

A java.util.ConcurrentHashMap

B java.util.Map

C java.util.TreeMap

D java.util.SortMap

E java.util.Hashtable

F java.util.HashMap

题解:
1、线程安全的类有hashtable concurrentHashMap synchronizedMap
2、 java.util.concurrent.ConcurrentHashMap 线程安全 java.util.Map 接口 java.util.TreeMap java.util.SortedMap 接口 java.util.Hashtable 线程安全 java.util.HashMap
3、 ConcurrentHashMap 键值对不可以为空,线程安全 java.util.Map是一个接口 java.util.TreeMap 键值对不可以为空,非线程安全 java.util.SortedMap 这是个接口并且扩展了Map接口,它确保条目按升序键维护。 java.util.Hashtable 键值对不可以为空,线程安全 java.util.HashMap键值对可以为空,非线程安全

9、

Consider the following code: Integer s=new Integer(9);

Integer t=new Integer(9);

Long u=new Long(9);Which test would return true?

正确答案:CDE

A (s==u)

B (s==t)

C (s.equals(t))

D (s.equals(9))

E (s.equals(new Integer(9))

题解:
1、 int和int之间,用==比较,肯定为true。基本数据类型没有equals方法 int和Integer比较,Integer会自动拆箱,==和 equals都肯定为true int和new Integer比较,Integer会自动拆箱,调用intValue方法
2、 所以 == 和 equals都肯定为true Integer和Integer比较的时候,由于直接赋值的话会进行自动的装箱。所以当值在-128
3、127中的时候,由于值缓存在IntegerCache中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是直接从缓存中获取已经创建好的Integer对象。而当大于这个区间的时候,会直接new Integer。 当Integer和Integer进行==比较的时候,在-128
4、127区间的时候,为true。不在这个区间,则为false 当Integer和Integer进行equals比较的时候,由于Integer的equals方法进行了重写,比较的是内容,所以为true Integer和new Integer : new Integer会创建对象,存储在堆中。而Integer在-128

10、下面几个关于Java里queue的说法哪些是正确的()?

正确答案:AC

A LinkedBlockingQueue是一个可选有界队列,不允许null值

B PriorityQueue,LinkedBlockingQueue都是线程不安全的

C PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))

D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则

题解:
1、正确答案 AC 答案解析 A、LinkedBlockingQueue是一个基于节点链接的可选是否有界的阻塞队列,不允许null值。 B、LinkedBlockingQueue是一个线程安全的阻塞队列,实现了先进先出等特性。 C、PriorityQueue是一个队列,不允许null值,入队和出队的时间复杂度是O(log(n))。 D、PriorityQueue是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。ConcurrentLinkedQueue是一个基于链接节点的线程安全队列,该队列的元素遵循FIFO原则。

答案汇总:

1、正确答案:D

2、正确答案:A

3、正确答案:B

4、正确答案:B

5、正确答案:D

6、正确答案:D

7、正确答案:B

8、正确答案:AE

9、正确答案:CDE

10、正确答案:AC

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 解读System.getProperty("ENM_HOME")中的值从哪获取的

    解读System.getProperty("ENM_HOME")中的值从哪获取的

    这篇文章主要介绍了解读System.getProperty("ENM_HOME")中的值从哪获取的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java的SpringMVC中控制器返回XML数据问题

    Java的SpringMVC中控制器返回XML数据问题

    这篇文章主要介绍了Java的SpringMVC中控制器返回XML数据问题,控制器是处理HTTP请求的组件,它们接收来自客户端的请求,并将其转换为适当的响应,这些响应可以是动态生成的 HTML 页面,也可以是JSON或XML格式的数据,需要的朋友可以参考下
    2023-07-07
  • java根据网络地址保存图片的方法

    java根据网络地址保存图片的方法

    这篇文章主要为大家详细介绍了java根据网络地址保存图片的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java BigDecimal类的使用和注意事项

    Java BigDecimal类的使用和注意事项

    这篇文章主要讲解Java中BigDecimal类的用法,并简单介绍一些注意事项,希望能给大家做一个参考。
    2016-06-06
  • 解决persistence.xml配置文件修改存放路径的问题

    解决persistence.xml配置文件修改存放路径的问题

    这篇文章主要介绍了解决persistence.xml配置文件修改存放路径的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java 十大排序算法之堆排序刨析

    Java 十大排序算法之堆排序刨析

    堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构
    2021-11-11
  • 带你重新认识Java动态代理

    带你重新认识Java动态代理

    这篇文章主要为大家介绍了Java的动态代理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Spring:bean注入--Set方法注入

    Spring:bean注入--Set方法注入

    这篇文章主要给大家总结介绍了关于Spring注入Bean的一些方式,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-07-07
  • 简单了解JAVA SimpleDateFormat yyyy和YYYY的区别

    简单了解JAVA SimpleDateFormat yyyy和YYYY的区别

    这篇文章主要介绍了简单了解JAVA SimpleDateFormat yyyy和YYYY的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java实现直接插入排序和折半插入排序算法示例

    Java实现直接插入排序和折半插入排序算法示例

    这篇文章主要介绍了Java实现直接插入排序和折半插入排序算法示例,文中对算法的思想和时间复杂度都有简单的讲解,需要的朋友可以参考下
    2016-04-04

最新评论