Java牛客 -- 专项练习(6)

前因:

记录在牛客上刷题的错题记事本

1. 下面关于volatile的功能说法正确的是哪个

A : 原子性
B : 有序性
C : 可见性
D : 持久性

答案B,C。 synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性。

2. 下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader

A : Thread
B : Number
C : Double
D : Math
E : ClassLoader

答案A B E 。

  • Thread可以被继承,用于创建新的线程
  • Number类可以被继承,Integer,Float,Double等都继承自Number类
  • Double类的声明为
public final class Double extends Number implements Comparable<Double>
  • Math类的声明为
public final class Mathextends Object
  • ClassLoader可以被继承,用户可以自定义类加载器

3. Map 的用法,正确的有:

A : new java.util.Map().put("key" , "value") ;
B : new java.util.SortedMap().put("key" , "value") ;
C : new java.util.HashMap().put( null , null ) ;
D : new java.util.TreeMap().put( 0 , null ) ;

答案C D 。

Map家族的继承实现关系如下,注意一点就是顶层的Map接口与Collection接口是依赖关系:

关于Key和Value能否为null的问题:

Map集合类 Key Value
HashMap 允许为null 允许为null
TreeMap 不允许为null 允许为null
ConcurrentMap 不允许为null 不允许为null

4. 静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )

A : 正确
B : 不正确
  1. 总的来说一下内部类吧:

    1. 静态内部类:

    1. 静态内部类本身可以访问外部的静态资源,包括静态私有资源。但是不能访问非静态资源,可以不依赖外部类实例而实例化。

    2. 成员内部类:

    1. 成员内部类本身可以访问外部的所有资源,但是自身不能定义静态资源,因为其实例化本身就还依赖着外部类。

    3. 局部内部类:

    1. 局部内部类就像一个局部方法,不能被访问修饰符修饰,也不能被static修饰。

    2. 局部内部类只能访问所在代码块或者方法中被定义为final的局部变量。

    4. 匿名内部类:

    1. 没有类名的内部类,不能使用class,extends和implements,没有构造方法。

    2. 多用于GUI中的事件处理。

    3. 不能定义静态资源

    4. 只能创建一个匿名内部类实例。

    5. 一个匿名内部类一定是在new后面的,这个匿名类必须继承一个父类或者实现一个接口。

    6. 匿名内部类是局部内部类的特殊形式,所以局部内部类的所有限制对匿名内部类也有效。

发布了15 篇原创文章 · 获赞 1 · 访问量 3123

猜你喜欢

转载自blog.csdn.net/ZeroWdd/article/details/104382208