【2021.4.27】Java知识点日常总结

题目皆摘自牛客网JAVA专项练习


1.

①、面向对象如果有三大特征,那就是:封装、继承、多态

②、面向对象如果有四大特征,那就是:抽象、封装、继承、多态

 

2.给出下面的代码段:

public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?()

【2021.4.27】Java知识点日常总结_第1张图片

A错,调用Base这个构造方法应该这样  new Base(a,b)
B错,和C相比应该是分号不是逗号,帅的一塌糊涂
C正常赋值操作
D调用本类的构造方法 

 

3.以下方法都是Object类中的方法。

clone()

toString()

wait()

finalize()

 

4.CMS垃圾回收器在那些阶段是没有用户线程参与的? (初始标记、重新标记)

CMS全称 Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收器,以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器,对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。

CMS的基础算法是:标记—清除。

它的过程可以分为以下6个步骤:

  1. 初始标记(STW initial mark)
  2. 并发标记(Concurrent marking)
  3. 并发预清理(Concurrent precleaning)
  4. 重新标记(STW remark)
  5. 并发清理(Concurrent sweeping)
  6. 并发重置(Concurrent reset)

在初次标记,重新标志的时候,要求我们暂停其它应用程序,那么这两个阶段用户线程是不会参与的

 

 

5.关于下面一段代码,以下说法正确的是: (A、C)

public class Test {
    private synchronized void a() {
    }
    private void b() {
        synchronized (this) {
        }
    }
    private synchronized static void c() {
    }
    private void d() {
        synchronized (Test.class) {
        }
    }
}

【2021.4.27】Java知识点日常总结_第2张图片

方法a为同步方法,方法b里面的是同步块,同步方法使用的锁是固有对象this,同步块使用的锁可以是任意对象,但是方法b里面的同步块使用的锁是对象this,所以方法a和方法b锁住的是同一个对象。

方法c为静态同步方法,使用的锁是该类的字节码文件,也就是Test.class。

方法d里面的也是同步块,只不过使用的锁是Test.class,所以方法c和方法d锁住的是同一个对象。(修饰非静态方法 锁的是this 对象,修饰静态方法 锁的是class对象)

 

6.

 java中true ,false , null在java中不是关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符。

其中const和goto是java的保留字。java中所有的关键字都是小写的,还有要注意true,false,null,friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用


附加面试题:

问:

静态方法能不能被重写?

答:

一个指向子类对象的父类引用变量来调用父子同名的静态方法时,只会调用父类的静态方法。

这是因为静态方法只能被继承,不能被重写,如果子类有和父类相同的静态方法,那么父类的静态方法将会被隐藏,对于子类不可见。

也就是说,子类和父类中相同的静态方法是没有关系的方法,他们的行为不具有多态性。

但是父类的静态方法可以通过父类.方法名调用。

静态方法也叫类方法是属于类级别的,也就是属于当前类本身,调用时也是通过当前类的类名进行调用。

 

 

你可能感兴趣的:(日常知识点总结,java)