牛客网专项练习(四)——选择题(错题)

牛客网专项练习(四)——选择题(错题)

牛客网专项练习(四)——选择题(错题)

分析:continue是结束本次循环,本次循环下面的代码不再执行,紧接着执行下次循环。

   break才是跳出整个循环。

牛客网专项练习(四)——选择题(错题)

分析:
        volatile是线程同步的轻量级实现,volatile性能比synchronized要好,但它只能修饰变量。而synchronized可以修饰方法、代码块。
        多线程访问volatile不会发生阻塞,而synchronized会出现阻塞。
        volatile能保证数据的可见性,但不能保证原子性;而synchronized可以保证原子性,也可以间接保证可见性,因为它会将私有内存和公共内存中的数据做同步。
        volatile解决的是变量在多个线程之间的可见性,不保证原子性;而synchronized解决的是多线程之间资源同步问题。

牛客网专项练习(四)——选择题(错题)

分析:HashMap是线程不安全的,可以存储null的key和value。

HashMap的底层:数组+链表(jdk7及之前)            数组+链表+红黑树(jdk 8)

存储数据的时候,对于每一个key值,都需要计算其哈希值,然后通过哈希值来确定顺序,但并不是按照加入顺序来存放的。

牛客网专项练习(四)——选择题(错题)

分析:JDK内置的基本注解

@Override: 限定重写父类方法, 该注解只能用于方法。
@Deprecated: 用于表示所修饰的元素(类, 方法等)已过时,通常是因为所修饰的结构危险或存在更好的选择。
@SuppressWarnings: 抑制编译器警告。

牛客网专项练习(四)——选择题(错题)

分析:执行obj.wait(),t1释放锁,t2获得锁,然后发消息通知t1执行,但这时t2还没有释放锁,所以是执行t2,然后释放锁,之后t1才有机会执行。

牛客网专项练习(四)——选择题(错题)

分析:忽略了内部类。

1、当public修饰外部类时,文件名需要与其相同;

2、当public修饰内部类时,而外部类不是public类型的,则文件名可随意,但需要满足命名规范(以字母或下划线开头)。

牛客网专项练习(四)——选择题(错题)

分析:猛的一看A,就觉得是对的,但我想的是调用,不是继承。即构造方法不能被继承,只能被本类或者其子类调用。

牛客网专项练习(四)——选择题(错题)

分析:以为是单选题,就选了c。

java运行命令,类名后面跟着就是main方法的参数,多个参数则用空格隔开。 main方法的形参是一个string数组,所以对于java mytest a b c传入的参数算是一个string数组。

即args[0]=a args[1]=b args[2]=c。

牛客网专项练习(四)——选择题(错题)

分析:看错了题目,选错了。

重写方法,子类重写方法的权限修饰符不小于父类被重写方法的权限修饰符,即也可以和被重写方法的访问修饰符相同。

必须具有不同的参数列表,就成了重载的要求之一,而不是重写。

牛客网专项练习(四)——选择题(错题)

分析:jsp共有九大内置对象,如下所示。

牛客网专项练习(四)——选择题(错题)

牛客网专项练习(四)——选择题(错题)

分析:final修饰类,表示这个类不能够被继承。

abstract修饰类表示一个抽象类,首先这个类不能够被实例化,类里面一定有构造器,便于子类实例化时调用。

abstract修饰方法表示一个抽象方法,包含抽象方法的类一定是抽象类,但是抽象类里面可以没有抽象方法。

再还有就是,若子类重写了父类中所有的抽象方法后,这个子类方可实例化。若子类没重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰。

PS:1、abstract不能用来修饰属性、构造器等结构;

2、abstract不能用来修饰私有方法、静态方法、final的方法、final的类;

牛客网专项练习(四)——选择题(错题)

分析:

JDK1.2 之前,一个对象只有“已被引用”和"未被引用"两种状态,这无法描述某些特殊情况下的对象,比如当内存充足时需要保留,而内存紧张时才需要被抛弃的一类对象。
JDK1.2 之后,Java 对引用的概念进行了扩充,将引用分为了强引用、软引用、弱引用、虚引用4 种,强度依次减弱。
一、强引用
Object obj = new Object(); //只要obj还指向Object对象,Object对象就不会被回收 obj = null; //手动置null
只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了。
二、软引用
软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓存等。
在 JDK1.2 之后,用java.lang.ref.SoftReference类来表示软引用。
三、弱引用
弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收。在 JDK1.2 之后,用 java.lang.ref.WeakReference 来表示弱引用。
四、虚引用
虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,在 JDK1.2 之后,用 PhantomReference 类来表示,它只有一个构造函数和一个 get() 方法,而且它的 get() 方法仅仅是返回一个null,也就是说将永远无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue 引用队列一起使用。

牛客网专项练习(四)——选择题(错题)

分析:null,true,false不是关键字,只是显示常量值。

sizeof 是 C/C++ 中的方法,Java 中没有这个方法,也没有该关键字。