Java 核心类库 练习

Posted Mr.Meeseeks

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 核心类库 练习相关的知识,希望对你有一定的参考价值。

1.  下面代码的输出结果是什么?

      String s1 = "abc";  //  表示在栈区中申请一块内存,赋给s1; s1指向常量池中的"abc"

      String s2 = new String("abc");  //  表示在栈区中申请一块内存,赋给s2;在堆区中申请一块内存,内容为"abc"; s2指向堆区内存

      s2 = s2.intern();  

      System.out.println(s1 == s2);

      备注: intern() - 返回 常量池中 字符串对象 的 引用

          也就是,去常量池中,寻找与s2内容相同的 字符串对象, 并返回       

      答:  true.

          s2.intern()返回了常量池中的"abc"对象

 

2.  String 是线程安全的吗?

      答:  安全

          因为String对象是被final修饰的,不可改变

 

3.  为什么在使用HashMap的时候总是使用String类作为key的类型?

      答:  String类的对象不可变,故其对应的哈希码值也不改变,在放入新元素的时候,无需再次计算哈希码值,故运行效率更高

 

4.  Collection 和 Collections 有什么区别?

      答:  Collection 是 集合,是一个顶层的接口,包含了对集合中内容进行操作的通用的方法

          Collecrions 是 工具类,提供了大量的静态方法,实现了对集合中元素的一系列操作,如排序、搜索等

 

5.  HashMap 在 Java7 和 Java8 中有哪些主要的不同之处?

      答:  <1>  在结构上

          HashMap在 Java7 中 是一个链表数组 (数组中的每一个元素都是一个链表)

          在Java8中,如果某个链表的长度过大,或是数组的长度过大,HashMap的底层就会转化为红黑树

          <2>  在功能上

          在Java 7 中, 新添元素在链表的头部

          在Java 8 中,新添元素在链表的尾部

 

6.  编程题

   编程统计字符串“ABCD123!@#$%ab”中大写字母、小写字母、数字、其他字符的个数并打印出来

 

7.  编程题

   准备一个HashMap集合,统计字符串"123,456,789,456"中每个数字字符串出现的次数并打印出来

 

8.  编程题

   使用集合实现斗地主游戏的部分功能,要求如下:

    <1>  首先准备54张扑克牌并打乱顺序

    <2>  由三个玩家交替摸牌,每人17张扑克牌,最后三张留作底牌

    <3>  查看三个玩家手中的扑克牌和底牌

    <4>  其中玩家手中的扑克牌需要按照大小顺序打印,规则如下:

        抽中扑克牌从大到小的摆放顺序: 大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3

 

以上是关于Java 核心类库 练习的主要内容,如果未能解决你的问题,请参考以下文章

java核心学习 java基础类库之Scanner

Java核心类库—集合框架—ArrayList类

Java核心类库-IO-字符解码和编码操作

Java核心类库-IO-随机访问文件(RandomAccessFile)

Java核心类库-IO-文件过滤器(FilenameFilter)

Java核心类库-IO-字节数组流/内存流