首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )

加载 -> 连接 ( 验证 , 准备 , 解析 ) 阶段 , 就可以完成常量池的初始化 , 即使没有执行 初始化 这个步骤 , 也不影响使用类中的常量值 ; 在 连接 的 准备 阶段 , 为 普通 的...; 二、常量加载示例 ---- 类加载时 , 如果只用到了类中的常量 , 则只进行 " 加载 -> 连接 ( 验证 , 准备 , 解析 ) " 两个过程 : public class Student...静态代码块 没有被执行 , 说明 类加载 的流程中 , " 初始化 " 步骤 , 没有被执行 ; 找到 Student.class 字节码文件 , 然后使用 javap -v -Student.class...; 出于最大限度性能优化的考虑 , 如果不使用该类的其它值 , 就不会执行 " 初始化 " 阶段 ; 因此这里不会调用 静态代码块 中的代码 ; Constant pool: #10 = Integer...[] 数组类型的 类加载初始化 , 但是不会触发 Student 类的初始化操作 ; 如果调用数组中的元素时 , 就需要初始化 Student 类 ; Student 类 : public class

3.6K20

python类的初始化方法_python初始化列表

【遇到问题】 我是在Windows环境下,使用Anaconda3的python3.6.5环境,安装TensorFlow最简单的CPU版本(自己的搓平板电脑不支持GPU): 管理员身份运行Anaconda...Prompt,然后执行:pip install tensorflow 安装过程非常顺利,Python中 import tensorflow 也OK 但是运行tensorflow程序时,报: File...【解决过程】 网上搜索有人说,这是使用Python3.6导致的,TensorFlow目前只支持Python3.5。但我在TensorFlow官网发现其已经支持Python3.6。...反正咱用的是Anaconda,换个Python版本so easy(有兴趣可以查看我的另外一篇使用Anaconda的博客https://www.cnblogs.com/wwcom123/p/9152909...轻松切换为Python3.5环境,发现问题依旧,那么不是这个问题。 于是我换回Python3.6.5版本继续尝试。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 中类的初始化过程

    先来一张 JVM 中的内存模型 。 ? 在Java 虚拟机原理这本书中介绍了类会被初始化的 5 种情况 。...5 当使用JDK1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果 REF_getStatic、REF_putStatic、REF_invokeStatic...关于类中结构的加载顺序 ,首次创建对象时 ,类中的静态方法 / 静态字段首次被访问时 ,Java 解释器必须先查找类路径 ,以定位.class 文件;然后载入 .class (这将创建一个 Class...因此 ,静态初始化只在 Class 对象首次加载的时候进行一次 。当用 new 创建对象时 ,首先在堆上为对象分配足够的存储空间 。然后将堆中的属性分别赋上默认的初始值 。...接口的初始化和类的初始化类似 ,区别在于 5 种情况的第三种 :子类的初始化过程中其父类必须先初始化 ,但接口初始化时不要求其父接口也进行初始化 ,只有在用到父接口时 ,才会去初始化 。

    67220

    python中的类

    关键字:class 含义:带有某些属性和方法的一个集合,可以理解成模板。 object的概念:类的实例。以对应类为模板,创建出来的对象。 如何理解python中的self? 1 实例本身,对象。...在类的代码(函数)中,需要访问Instance中对应的变量(属性),读取之前的值和写入新的值调用对应函数(function)执行对应的动作需要访问实例的变量和调用实例的函数,Python中规定函数的第一个参数...PS:类中函数的第一个参数固定为self就可以了。 如何理解python中的init()? 这是python的构造方法。...类似于init()初始化方法,用来初始化新创建对象状态,在一个对象创建以后立即调用,比如实例化一个类。..., print(user1.name) //对象调用类中变量 print(user1.age()) //对象调用类中的方法

    1.1K10

    python中的类

    每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。我们创建Dog实例时,python将调用Dog类的方法_init_()。...每当我们根据类创建实例时,都只需给最后两个形参(name和age)提供值。接下来定义两个变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例类访问这些变量。...在Python2.7 中创建类时,需要做的修改为------在括号内包含单词object。...在Python 2.7中定义Dog类时,代码类似于下面这样:Class Dog(object )。----2.根据类创建实例可将类视为有关如何创建实例的说明。...遇到这行代码时,python使用实参'willie'和6调用Dog类中的方法_init_()。方法_init_()创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name和age。

    1.9K10

    python中类的静态方法和类的类方法

    知识回顾: 上一节中,我们深化学习了类的属性监控,主要使用了三个魔法方法: __getattr__ __setattr__ __delattr__ 与此同时在书写属性设置监控的时候,千万不要忘记写__...设置类的属性 4.通过查看类的属性的值,来看属性监控是否成功 二、类的静态方法 在类中的方法名称前加一个头标记@staticmethod。...三、类的类方法 在类中的方法名称前加一个头标记@classmethod。 类的类方法的调用也不需要进行实例化。 类的类方法是在python中对类的构造方法的一个补充。...但在定义类方法的时候需要一个类的本身的参数。...五、总结强调 1.掌握类的静态方法 2.掌握类的类方法 3.理解静态方法与类方法的区别 4.掌握属性监控的魔法方法书写的方式,不能漏掉类内部存储的__dict__字典存储。

    3.2K20

    Python中类的声明,使用,属性,实例

    Python中的类的定义以及使用: 类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 (当没有实体时...类中的__init__函数:类似于java中的构造函数,以及类的使用 实例如下: #eg:定义一个狗类 class Dog: def __init__(self):   #方法名为 __init...计算属性 在Python中,可以通过@property(装饰器)将一个方法转换为属性,从而实现用于计算的属性。...()方法已经被我们写成了计算属性 继承的定义: 在编写类的时候,并不是每一次都要从空白开始编写,当要编写的类和另外一个已经存在的类存在一定的继承关系时,就可以通过继承来达到代码的重用的目的,提高开发效率...'''类的帮助文档''' 帮助文档 可以在创建对象的时候输入类名和'('时可以查看 statement 类体 可以使用pass

    5.6K21

    Python中的类和方法使用举例

    1.类的属性 成员变量 对象的创建 创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应,...obj = MyClass()创建类的一个实例,扩号对象,通过对象来调用方法和属性 类的属性 类的属性按使用范围分为公有属性和私有属性类的属性范围,取决于属性的名称, 共有属性---在内中和内外都能够调用的属性...__People__age ##测试时使用。如要调用 时,通过方法内调用 。 2.类的方法 成员函数 类的方法 方法的定义和函数一样,但是需要self作为第一个参数....类方法为: 公有方法 私有方法 类方法 静态方法 公有方法:在类中和类外都都测调用的方法. 私有方法:不测被类的外部调用模块,在方法前加个“__”c双下划线就是私有方法。...cm = classmethod(test) jack = People() People.cm() 通过类方法类内的方法 ,不涉及的属性和方法 不会被加载,节省内存,快。 #!

    1.2K10

    AS3.0中类初始化的顺序

    我做了一个比较,java中有静态初始化块的概念(as3中是没有的),格式如下: static { //TODO…. } 关于java中类的初始化顺序,我想只要随便搜索一下,将有超过十万的结果出来 这里侧重点在...,类中的变量才被初始化 运行的结果显示如下: 父类--静态变量 子类--静态变量 父类--变量 父类--构造器 子类--变量 子类--构造器 ?...as3中类的初始化顺序与java基本上是相同(除了as3中没有静态块的概念外): (1)当类被加载时,该类的静态属性和方法会被初始化 (2)初始化成员变量 (3)调用构造器 而java中: ?...运行的结果: 父类--静态变量 父类--静态初始化块 子类--静态变量 子类--静态初始化块 父类--变量 父类--初始化块 父类--构造器 子类--变量 子类--初始化块 子类--构造器...如果去除”静态初始化块” 那么java与as3的类加载顺序表现上是一致的

    67940

    Python中类的接口

    ---- 本节知识视频教程 一、接口 开场白要说的其实是在python中没有接口的概念。那么接口是怎样的呢? 接口:理解为一种规范。定义一个接口实际上是一定一个规范,那么一个接口类可以定义多个规范。...接口的实现:通过具体继承这个接口的类来具体实现。 二、Python中的判断模式 Python中采用可以采用方法判断代替某个接口方法是否存在。下面来开始介绍。...这里的参数3中的方法名称不一定是要在类的内部的,也可以是外部自定义的。 同样的,这个函数也可以适用到属性的获取上面。 3. setattr函数 这个函数用来设置对象的默认方法与属性。...setattr(参数1,参数2,参数3) 参数1:某个类的实例化对象。 参数2:需要设置的某个类的新的方法或属性名称。 参数3:对象参数2中的方法或属性名称的具体的值。...开始了解python语言吧! html中的起到什么作用?前端面试经常考到 python中类和对象 python中函数递归VS循环 python中函数的可变参数

    1.4K20

    Python中类的成员

    __add() # 派生类中不能访问 总结 对于这些私有成员来说,他们只能在类的内部使用,不能再类的外部以及派生类中使用. ps:非要访问私有成员的话,可以通过 对象....静态方法 定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或 实例的任何属性和方法; 调用:实例对象和类对象都可以调用。...双下方法(后面会讲到) 定义:双下方法是特殊方法,他是解释器提供的 由双下划线加方法名加双下划线 方法名的具有特殊意 义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法...调用:不同的双下方法有不同的触发方式,就好比盗墓时触发的机关一样,不知不觉就触发了双下方 法,例如:init 类方法 使用装饰器@classmethod。...,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一 个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则 由于新式类中具有三种访问方式,我们可以根据他们几个属性的访问特点

    98440

    Python 中的元类

    图9-5-1 实例、类和元类 在 help(type) 显示的帮助文档中,type 有三种使用方法: class type(object) | type(object_or_name, bases,...'www.itdiffer.com'}) 利用元类 type 所创建的类 Bar 继承了 Foo 和 Book 两个类,其类属性中除了在创建时设置的 name 之外,还有从 Book 类继承来的 website...并且,在元类 AuthorMeta 的构造方法 __new__() 中定义的属性 __author__ 已经成为了实例 Python 类的类属性——正是我们所希望的,元类中定义了更通用的对象,它们应该“...在9.4.1节中,定义“普通”类中的 __call__() 方法时,第一参数用 self表示,self 表示的是当前类的实例。...理解了上述内容,就可以在元类中重写 __call__() ,用以实现单例(参阅9.4.2节,这里不使用构造方法 __new__() )。

    64520

    Python类中的属性

    公共与私有 通常,在编程中,当某物是公共的时,你可以访问它并使用它;当它是私有的时,你不能。...Python有私有属性和方法吗? 我们在Python类的方法和属性的上下文中使用这两个术语,公共和私有。 当属性是私有的时,你不应该使用它;当方法是私有的时,你不应该调用它。...这是因为,正如我已经提到的,Python中的情况有所不同:当某事是公共的时,你可以访问和使用它;当它是私有的时,你不应该这样做——但这并不意味着你不能。...如果你的想象力以类似的方式工作,你需要戴上改变世界的眼镜,这样你就可以在Python世界中随意移动而不会不时地摔倒。每次使用Python时,你都必须戴上这副眼镜。...我已经多次使用过这种方法,知道它的存在很好,以防万一,等待着我来窥视类的属性和方法。 脚注 ¹ 请记住,在Python中,方法是类的属性。

    18130

    python 类中的方法

    数据流转过程 除了在类中可以写这种函数之外,在类中还可以写别的函数,延续上一个例子: #!...hiekay这个实例和Person类中的self对应,它们都是引用了实例对象(很多时候简化说成是实例对象)。”...hiekay”是一个具体的数据,通过构造函数中的name参数,传给实例的属性self.name,在类Person中的另外一个方法author的参数列表中第一个就是self,表示要承接self对象,return...在调用不同的实例时,self会自动的进行匹配,当然,匹配过程是python完成,仍然不用我们操心。...在类ClassName里面,除了前面那个具有初始化功能的构造函数之外,还有一个函数method,这个函数和以前学习过的函数一样,函数里面要写什么,也没有特别的规定。

    1.4K10

    Python中的元类

    Python一切皆对象,所以类也是对象。 我们知道,对象是通过类实例化创建出来的。但我们创建类时并没有进行实例化操作,为什么类也是对象呢? 类既然是对象,类肯定是另外某个类的实例。...在Python中,类是通过元类来创建的。元类就是用来创建类的类,如果类是一个机器,那么元类就是可以生产机器的机器。...元类是制造类的工厂,是一个类。 ? 二、Python中常见的内置类 python中定义了很多的内置类,我们看一下这些内置类都是哪个类的实例。...所以我们可以尝试自定义元类。...我们可以正常使用Study类中的属性和方法,可以正常实例化一个Study类的对象s,s是一个对象,s是Study类的实例,而Study类是OurMetaClass类的实例。

    59820

    Python中的接口类与抽象类

    接口类 面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。...所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能~ 接口继承可以使得外部调用者无需关心具体的实现细节...') # NotImplementedError 子类覆盖父类中的方法时,要注意方法名需要与父类中的方法名相同,且方法的参数个数与参数名也要相同~ 这里更好的方式是通过 abc模块 来实现接口~...抽象类 抽象类和接口类一样是一种规范,规定子类应该具备的功能。 在Python中,抽象类和接口类没有明确的界限。...上述示例中可以看到,抽象类中对部分方法进行了实现~ 其实 Python 原生仅支持抽象类,不支持接口类。

    1.8K10

    python中类的继承和类代码块

    知识回顾: 类的属性和方法的私有化。 Python中的类的私有化,并非真正意义上的私有化后不能被调用,而是通过编译器迂回的方式来重新定义私有化的成员名称。...使用一个库inspect的getmembers方法可以看到某个对象的私有化属性和方法。...---- 本节知识视频教程 一、类代码块 在定义类的时候,使用了冒号: 而这个冒号在python中的表示一个代码块的开始。 代码块的读取默认是从上到下的,类代码块中的代码同样是从上到下读取的。...类代码块使用注意点: 1.实例化一个类后,如果在方法外写的代码会被直接运行。 2.类中写的变量名称,自动会被认为类的属性,这个属性可以被该类的方法调用。...相关文章: python中类的属性方法和私有化 python中字典中的赋值技巧,update批量更新、比较setdefault方法与等于赋值 python中函数概述,函数是什么,有什么用 python中字典中的删除

    1.8K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券