1. 静态变量存在什么位置?

方法区

2. 类加载机制,双亲委派模型,好处是什么?

某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

使用双亲委派模型的好处在于Java类随着它的类加载器一起具备了一种带有优先级的层次关系

  • 例如类java.lang.Object,它存在在rt.jar中,
  • 无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的Bootstrap ClassLoader进行加载,
  • 因此Object类在程序的各种类加载器环境中都是同一个类。
  • 相反,如果没有双亲委派模型而是由各个类加载器自行加载的话,如果用户编写了一个java.lang.Object的同名类并放在ClassPath中,那系统中将会出现多个不同的Object类,程序将混乱。
  • 因此,如果开发者尝试编写一个与rt.jar类库中重名的Java类,可以正常编译,但是永远无法被加载运行。

3. Object类的方法并简要说明

Object()默认构造方法。

clone() 创建并返回此对象的一个副本。

equals(Object obj) 指示某个其他对象是否与此对象“相等”。

finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

getClass()返回一个对象的运行时类。

hashCode()返回该对象的哈希码值。

notify()唤醒在此对象监视器上等待的单个线程。

notifyAll()唤醒在此对象监视器上等待的所有线程。

toString()返回该对象的字符串表示。

wait()导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

wait(long timeout)导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。

wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

3.1 wait方法的底层原理

ObjectSynchronizer::wait方法通过object的对象中找到ObjectMonitor对象调用方法 void ObjectMonitor::wait(jlong millis, bool interruptible, TRAPS)

通过ObjectMonitor::AddWaiter调用把新建立的ObjectWaiter对象放入到 _WaitSet 的队列的末尾中然后在ObjectMonitor::exit释放锁,接着 thread_ParkEvent->park 也就是wait。

4. 类和对象的区别

1.类是对某一类事物的描述,是抽象的;而对象是一个实实在在的个体,是类的一个实例。

比如:“人”是一个类,而“教师”则是“人”的一个实例。

2.对象是函数、变量的集合体;而类是一组函数和变量的集合体,即类是一组具有相同属性的对象集合体。

面向对象回顾(静态变量、类加载机制/双亲委派模型、Object类的方法、类和对象区别)相关推荐

  1. 类加载机制--双亲委派

    类加载机制--双亲委派  BootsTrap  ------ %JAVAHOME%/lib下面的jar | | Extension ------ %JAVAHOME%/lib/ext 路径下的jar ...

  2. 类加载机制-双亲委派,破坏双亲委派--这一篇全了解

    概述 概念 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型. 类的生命周期 类从被加载到虚拟机内存中开始,到卸载出内存 ...

  3. JVM成神之路-类加载机制-双亲委派,破坏双亲委派

    概述 概念 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型. 类的生命周期 类从被加载到虚拟机内存中开始,到卸载出内存 ...

  4. java类加载机制为什么双亲委派_[五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的...

    Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的不过源码其实比较简单,接下来简单介绍一下我们先从启动类说起有一个Launcher类 ...

  5. Java类加载机制双亲委派机制

    关键知识点提炼: 类的唯一性:类的实例= 类加载器 ➕全限定类名 (扩展pandora容器隔离原理-类加载器隔离) 类加载过程:家(加)宴(验)准备了西(析)式菜. 加载-验证-准备-解析-初始化 双 ...

  6. java类加载和双亲委派模型浅说

    本文目录 前言 一.类加载器 1.1 类加载机制的基本特征 1.2 类加载的分类 1.3 类加载器 A.启动类加载器(引导类加载器,Bootstrap ClassLoader) B.扩展类加载器(Ex ...

  7. 由源码深入Java类加载器(双亲委派模型)

    JVM类加载器 JVM主要有以下几种类加载器: 引导类加载器 主要加载JVM运行核心类库,位于JRE的lib目录下,如rt.jar中的类. 扩展类加载器 主要加载JVM中扩展类,位于JRE的ext目录 ...

  8. 【Java 虚拟机原理】Android 类加载机制 ( 双亲委派机制 | BootClassLoader | PathClassLoader | DexClassLoader )

    文章目录 一.Android 类加载机制 二.双亲委派机制 一.Android 类加载机制 Android 中的类加载 使用了 双亲委派 机制 , 如下图所示 : 在 Android 中提供了 333 ...

  9. 看完吊打面试官!java类加载机制双亲委派

    前言 周末花了2天时间学习了额RabbitMQ,总结了最核心的知识点,带大家快速掌握RabbitMQ,整理不易希望帮忙点赞,转发,分享下,谢谢 阿里的人才画像 其实最近两年自己一直在做面试官,也面试过 ...

最新文章

  1. 数据项目总结:王者荣耀总决赛预测!
  2. Random在for以及foreach循环中产生相同随机数问题
  3. Android调试错误-No resource identifier found for attribute 'showAsAction'
  4. mysql 5.5 重新编译_源码编译mysql5.5过程记录
  5. Python 全栈开发十 socket网络编程
  6. 删库不跑路,详解MySQL数据恢复
  7. 手机型号大全_双十一高价位华为手机推荐,2020年哪款更值得入手
  8. 公安部起草《“十三五”平安中国建设规划》并公开征求意见
  9. hadoop环境准备-大数据Week5-DAY6-1-hadoop
  10. Firefox for iOS 终于登陆中国
  11. linux 有道 离线词典,有道词典离线版
  12. Ubuntu 18.04 安装驱动
  13. JS原创小游戏 旋转方块(源码)
  14. c语言快速幂,快速幂
  15. Hadoop In Action
  16. Android利用自定义View实现简单的足球战术板
  17. matlab 分段符号函数,Octave符号包中的分段函数?
  18. 51单片机实验——按键外部中断实现四进制计数器
  19. 如何组织一场安全、可靠、高效的网络实战攻防演习?
  20. windows设置定时任务执行程序命令

热门文章

  1. 第179天:javascript中replace使用总结
  2. HTML5 移动页面自适应手机屏幕四类方法
  3. 使用HTML5在浏览器中开发虚拟现实业务
  4. Golang中函数不支持重载
  5. 查看win10剩余激活时间
  6. Deepin 20.2.3系统标题栏及其按钮美化
  7. nginx https配置
  8. sbt创建play framework(play!)scala web项目
  9. 【代码】ReentrantLock使用tryLock进行尝试锁定
  10. scala逻辑运算符的一览图和代码案例