2021-04- 09->12

java练习题目

1.Object的方法:ctrl+F12显示类结构:

  1. getclass() 返回运行时类
  2. clone()返回一个对象的拷贝。clone 方法是浅拷贝,对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建。
  3. notify() 唤醒此对象监视器等待的线程 finalize()当垃圾回收器确定不存在此对象的更多引用,执行此的方法
  4. wait()调用该方法的线程进入WAITING状态,只有等待另外线程的通知或被中断才会返回,需要注意,调用wait()方法后,会释放对象的锁。

2.关于final

  1. final修饰的变量不允许再次被赋值
  2. final可修饰方法,方法不可重写,可重载
  3. final可修饰类,但是此类不可继承
  4. final不能修饰接口,抽象类

3.关于String

在这里插入图片描述java中的String一旦初始化,其指向的内容是不可变的。String str=“aa”;str=“bb”;第二句并不是改变str储存的值,而是新开辟另一个空间储存"bb",同时str指向"bb",原来的’'aa"不可达,则GC会回收。但是这里是作为参数传递过去,原来的str仍然指向"good"。

4.InterruptedException

InterruptedException出现一般都是因为在线程执行的时候被打断(interrupt),线程(A)不是自己打断自己,一般都是在另外一个线程(B)中执行中断方法(objA.interrupt())。
每个线程都管理一个自己的中断状态(interruption status),它可以通过Thread#interrupt()方法设置位中断状态,或则使Thread#interrupted()重置状态。另外,Thread#isInterrupted()通常用来判断是否处以中断状态。
抛InterruptedException的代表方法有:

  1. Thread.join
  2. Thread.sleep
  3. Object.wait
  4. CyclicBarrier.await: CyclicBarrier是一个屏障类,await方法可以理解为:等待多个线程同时到达之后才能继续进行,在此之前它就是这些线程的屏障,线程不能继续进行,而对于失败的同步尝试,CyclicBarrier 使用了一种要么全部要么全不 (all-or-none) 的破坏模式:如果因为中断、失败或者超时等原因,导致线程过早地离开了屏障点,那么在该屏障点等待的其他所有线程也将通过 BrokenBarrierException(如果它们几乎同时被中断,则用 interruptedException)以反常的方式离开。

5.Synchronized

采用synchronized修饰实现的同步机制叫互斥锁机制,它所获得的锁叫互斥锁。每个对象都有一个monitor(锁标记),当线程拥有这个标记才能访问这个资源,没有这个标记便进入锁池。任何一个对象系统都会为其创建一个互斥锁,是为了分配给线程的,防止打断原子操作。每个对象的锁只分配给一个线程。
特别强大,既可以保证可见性也可以保证原子性。
与volatile的区别:volatile就是告诉jvm,当前变量在寄存器的值是不确定的,需要从主存中读取。而synchronized是锁定当前变量,只有当前线程才可以访问该变量,其他被阻塞。volatile不会造成线程阻塞,synchronized会造成。volatile标记的变量不会被编译器优化,synchronized的会。

6.抽象类

包含抽象方法的类叫抽象类,抽象类可以拥有抽象方法、成员变量,普通的成员方法。

  1. 抽象方法必须为public或者protected。
  2. 抽象类不能用来创建对象
  3. 如果一个类继承抽象类,则子类必须实现父类的抽象方法,如果没有实现则必须把子类也定义为抽象类
  4. 抽象方法不能用static,private,synchronized,native修饰
  5. 在jdk1.8之前方法默认访问权限是public,1.8时是default
  6. 可以有构造器,可以有main方法,不可以new一个抽象类
    在这里插入图片描述

7.接口

  1. 接口中的方法默认访问权限是public,在1.8访问权限也可以是defalt,到了1.9也可以是private
  2. 多实现(implements A,B)
  3. 没有构造器
  4. 函数类型默认是public,只能有public类型的成员函数
  5. 非静态成员函数没有方法体,静态成员函数有方法体
  6. 子类必须实现接口的所有函数非静态成员函数
  7. 可以有main方法,可以new一个接口,需要在方法体实现所有接口函数
    在这里插入图片描述

8.static

static为成员变量或函数,在类初始化加载完成,可以被成员函数调用或访问。对于虚函数是c++的,虚函数不可能是static的

9.jsp页面跳转问题

forword,服务器获取跳转页面内容传给用户,用户地址栏不变
redirect,服务器向用户发送转向的地址,地址栏变成新的地址栏

10.关于类多态问题

向上转型:父类只能调用父类方法或者子类重写的方法,子类中单独的方法是无法调用的
多态成员方法的使用规则:编译看左边,运行看右边
运行结果:ABDC
在这里插入图片描述
如果把父类的methtwo改成static类型,
在这里插入图片描述运行结果:ABC子类无法覆盖父类的静态方法,只能隐藏。静态方法是属于类的,不属于对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值