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

零学习python 】45.Python的类方法静态方法

方法静态方法方法方法是以类对象作为第一个参数的方法。需要使用装饰器@classmethod来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数。...__type 使用场景: 当方法需要使用类对象(如访问私有类属性等)时,定义类方法。 类方法一般和类属性配合使用。...静态方法 静态方法通过装饰器@staticmethod来修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。静态方法也可以通过实例对象和类对象去访问。...注意点: 当类定义了同名的方法时,调用方法会执行最后定义的方法。...Dog.demo_method() # 结果:静态方法 dog1.demo_method() # 结果:静态方法

10810

JVM之类加载阶段详解

对象,作为方法区这个类的访问入口 获取二进制流 这条规则虚拟机规范并没有指明说哪里获取,如何获取,只是说通过全限定名获取二进制字节流就行。...因此我们可以压缩包(JAR),网络(Web Applet),加密文件(加载时动态解密),运行时生成(动态代理)…这些路径通过类的全限定名去获取二进制字节流进行加载。...图示: 静态变量本身是应该存放在方法的,JDK7以前是用的永久代实现的方法区;但是JDK7以后,方法区是直接内存上的,而静态变量则会随着Class对象堆内存中进行分配。...所以叫做动态链接运行时才可以确定编译器的角度来讲: 首先变量必须都得有个类型(静态类型)用于之后的字段表存储代表这是什么类型的变量。...那么字段表获取到的类型就是静态类型,这个是在编译的时候生成的属性表示可以确定的,但是静态类型是可以进行变化的,比如类型强转就是改变的静态类型,但是强转后的类型编译期也可以确定(有对应的强转字节码指令

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

如何成为数据分析师系列(二):可视化图表进阶

缺点 漏斗图实际分析并不常见,但在PPT中用作信息描述却明显优于干巴巴的数字 1. 追踪流程较困难,而企业是结果导向的,我们更在意整个流程的转化率,有时不会深究细节; 2....应用场景 雷达图主要用于静态的多维对比,它直观地呈现几个观察对象多个指标上对比情况。 缺点 能表达的静态数据信息有限,线条不宜超过5条,指标不宜超过8个。...数据源-第一个指标要重复一列,作为环形的起点和终点; Tableau要进行透视表操作; 生成路径: CASE [数据透视表字段名称] WHEN '认证两分钟回复率' then 1 WHEN '认证数...箱线图可初步判断数据批的偏态和尾重; 异常值出现于一侧的概率越大,中位数也越偏离上下四分位数的中心位置; 异常值集中较小值一侧,则分布呈现左偏态;异常值集中较大值一侧,则分布呈现右偏态。...矩盒两端的位置分别对应数据的Q1、Q3分位数,矩形盒内部绘制一位数线 内=Q1-1.5*IQR、=Q3+1.5*IQR IQR(四分位矩)=Q3-Q1,它反映了中间50%数据的离散程度(数值越小,中间

1.8K30

05 Java 类和对象

覆盖不能改变方法静态与非静态属性。子类不能将父类非静态方法定义为静态方法,反之也一样。 final 方法不能被覆盖。 不允许子类方法的访问修饰符比父类有更多的限制。...静态方法 用 static 修饰的方法称为静态方法,也叫类方法. static 方法只能处理类变量,也可访问其它 static 方法,但不能访问任何归属对象空间的变量或方法....this this(参数),用来调用同类其他构造方法.注意 this 语句只能定义构造函数的第一行,因为初始化要先执行. super关键字则和 this 差不多,都是一个引用指向自身和上一级父类罢了...私有级别的关键字是 private,私有级别的成员变量和方法只能在其所在类的内部自由使用,在其他的类则不允许直接访问。...总结来说,import 是编译时概念,用于确定完全限定名,在运行时,只根据完全限定名寻找并加载类,编译和运行时都依赖类路径,类路径的 jar 文件会被解压缩用于寻找和加载类。

60010

基础数据类型之Integer详解

,所以无需对象,全都是静态方法 VaueOf系列都有对应的缓存区, 缓存区范围内对象为同一个  缓冲区为静态内部的数组 缓冲范围为  -128~127 static Integer valueOf...第二个参数指定的基数,返回第一个参数的字符串表示的无符号整数值 如果基数不在Character.MIN_RADIX 和 Character.MAX_RADIX的范围内,...Integer重写了equals方法比较的是两个Integer对象内部的 int value值 hashCode static int hashCode(int value) 静态方法返回某个int...getXXX系列 获取系统属性的数值 static Integer getInteger(String nm, Integer val) 确定具有指定名称的系统属性的整数值第一个参数被视为系统属性的名称通过...,开篇已经描述 Long也有提供    语义一致 static int signum(int i) 静态方法返回指定 int 值的符号函数(如果指定值为负,则返回 -1;如果指定值为零,则返回

1.1K30

jdk和jvm区别_java中集合和数组的区别

执行引擎用于执行指令,不同的java虚拟机内部实现,执行引擎执行Java代码的时候可能有解释执行(解释器执行)和编译执行(通过即时编译器产生本地代码执行,例如BEA JRockit),也有可能两者兼备...(在编译的时候,就已经将方法的局部变量、操作数栈大小等确定并存放在字节码,在装载的时候,随着类一起装入方法区。)...4.静态变量:就是类变量,类的所有实例都共享,我们只需知道,方法区有个静态区,静态区专门存放静态变量和静态块。 5.到类classloader的引用:到该类的类装载器的引用。...而jvm必须以某种方式把Class的这个实例和存储方法的类型数据联系起来。...四 jvm和jmm之间的关系 jmm的主内存、工作内存与jvm的Java堆、栈、方法区等并不是同一个层次的内存划分,这两者基本上是没有关系的,如果两者一定要勉强对应起来,那变量、主内存、工作内存的定义来看

29120

Java类加载基本过程

; 类的字段、方法的覆盖,重载矛盾; 字节码验证:通过语义流及控制流分析确定程序予以的合法性,正确性,方法体分析验证。...符号引用验证:虚拟机将符号引用转化为直接引用时候,解析阶段,对类自身以外信息进行匹配性验证 符号引用通过字符描述的全限定名是否能找到对应的类; 指定类是否存在符合方法字段的描述符,及简单名称所描述的方法和字段...准备:方法为类变量分配内存及设置类变量初始值。 初始值通常为数据类型的零值,final修饰的值直接初始化为相应值。 类变量为static修饰的变量,区分于实例变量。...执行类构造器()方法,如下: 编译器根据类文件定义顺序自动收集类的类变量的赋值动作和静态语句块儿的语句合并产生,静态语句块儿只能访问到其前定义的变量。...区别于类的构造方法,不需要显示的调用父类构造器,虚拟机保证子类的()执行之前父类的()已经执行完成。 父类静态语句块儿执行于前。

45320

JVM-10.类加载

类加载过程 2.1 加载 加载阶段,JVM做三件事: 通过一个类的全限定名来获取此类的二进制字节流 将这个字节流代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Clas...类的字段,方法是否和父类产生矛盾(覆盖父类final字段,不合规范的重载) 字节码验证:通过数据流和控制流分析,确定程序语义是合法的,符合逻辑的,对类的方法器进行校验分析,保证被校验的类的方法在运行时不会做出危害虚拟机安全的事件...对类自身以外(常量池中的各种符号引用)的信息进行匹配校验,包括: 符号引用通过字符串描述的全限定名能否找到对应的类 指定类是否存在符合方法的字段描述符和简单名称所描述的方法和字段 符号引用的类,...Java方法执行,putstatic指令是程序编译时,存放在类构造器()方法。...,收集顺序是由语句源文件中出现的顺序决定的,静态语句块只能访问定义静态语句块之前的变量,定义之后的变量,静态语句块可以赋值,但不能访问 ()方法和类的构造函数不同,它不需要显式调用父类构造器

37220

(22) 代码的组织机制 计算机程序的思维逻辑

本节就来讨论Java的解决机制,具体包括包、jar包、程序的编译与连接,包开始。...,Java解决这个问题的方法就是包。...一个类内,对其他类的引用必须是唯一确定的,不能有重名的类,如果有,则通过import只能引入其中的一个类,其他同名的类则必须要使用完全限定名。...Java源代码编译时,Java编译器会确定引用的每个类的完全限定名确定的方式是根据import语句和classpath。如果import的是完全限定类名,则可以直接比较并确定。...总结来说,import是编译时概念,用于确定完全限定名,在运行时,只根据完全限定名寻找并加载类,编译和运行时都依赖类路径,类路径的jar文件会被解压缩用于寻找和加载类。

744100

Java常量池(静态常量池与运行时常量池)

1)所谓静态常量池,即*.class文件的常量池,class文件的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。...2)而运行时常量池,则是jvm虚拟机完成类装载操作后,将class文件的常量池载入到内存,并保存在方法,我们常说的常量池,就是指方法的运行时常量池。...类索引用来确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,接口索引集合用来描述这个类实现了哪些接口,这些被实现的接口将按实现或继承的顺序从左到右的顺序排列接口的索引集合。...类索引、父类索引和接口索引都按顺序排列访问标志之后。 接下来就是@字段表@了,此处字段表存的就是前文说的类成员变量或实例成员变量,但不包括方法内部声明的变量。...如果类存在父类,则除非子类覆盖了父类的字段定义,否则在子类不会列出超类或父接口中继承而来的字段,但有可能列出原来java代码不存在的字段,譬如在内部类为了保持对外部类的访问性,会自动添加指向外部类实例的字段

2K21

JVM 类加载机制_类加载机制的作用和过程

这里解释一下动态绑定和静态绑定: 静态绑定: 程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类方法),此时由编译器或其它连接程序实现。...作为方法区这个类的各种数据的访问入口 值得一提的是,二进制流可以zip包获取,这也是JAR或者WAR包格式也能部署项目基础。...:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的; 符号引用验证:对类自身以外的信息进行匹配性校验, 比如符号引用通过字符串描述的全限定名是否能找到对应的类等等。...()方法是由编译器自动收集类的所有类变量的赋值动作和静态语句块的语句合并产生的。也就是说,如果一个类没有静态成员变量和静态块,是可以不执行类构造方法的。...2.类构造器的赋值操作 对于静态的赋值操作,我们需要注意:静态语句块只能访问到定义静态语句块之前的变量,定义它之后的变量,在前面的静态语句块可以赋值,但是不能访问。

52220

Java内存区域与虚拟机类加载机制

局部变量表所需的内存空间在编译器间完成分配,当进入一个方法是,这个方法需要在帧中分配多大的局部变量空间是完全确定的,方法运行期间不会改变局部变量表的大小。...2、类加载检查通过后,接下来虚拟机将新生对象分配内存。对象所需内存的大小类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存Java堆划出来。   ...① 通过一个类的全限定名来获取定义此类的二进制字节流(通过类加载实现);    ② 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;    ③ 在内存中生成一个代表这个类的java.lang.Class...()方法静态语句块只能访问到定义静态语句块之前的变量,定义在他之后的变量,在前面的静态语句块可以赋值,但不能访问。...六、类加载器   类加载器是类加载过程中加载阶段“通过一个类的全限定名来获取描述此类的二加载字节流”的加载动作。

72080

Java虚拟机:类加载机制与双亲委派模型

二、类加载器: 生命周期的第一阶段,即加载阶段需要由类加载器来完成的,类加载器根据一个类的全限定名读取类的二进制字节流到JVM,然后生成对应的java.lang.Class对象实例, 虚拟机默认提供了...任意一个类JVM的唯一性,是由加载它的类加载器和类的全限定名一共同确定的。...四、类加载生命周期: 1、加载阶段: 这阶段的虚拟机需要完成三件事情: (1)通过一个类的全限定名来获取定义此类的二进制字节流。 (2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。...: (1)()方法是有编译器自动收集类的所有类变量的赋值动作和静态语句块的语句合并产生的,收集的顺序是由语句源文件中出现的顺序决定的。...静态语句块只能访问到定义静态语句块之前的变量,定义它之后的变量,在前面的静态语句块可以赋值,但是不可以访问。

41430

JVM第六卷---类加载机制

Java语言运行时绑定的特性 ---- 加载 加载阶段主要做三件事情: 通过一个类的全限定名或获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表这个类的...Class对象,作为方法区这个类的各种数据的访问入口 通过一个类的全限定名或获取定义此类的二进制字节流,并没有指明二进制字节流必须得某个Class文件获取,因此就这一点,就可以玩出花来,例如: 动态计算生成...----》动态代理技术 将类的字节码载入方法内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有: _java_mirror 即 java 的类镜像,例如对...clinit方法的过程,该方法是由编译器自动收集类的所有类变量的赋值动作和静态语句块的语句合并而成的 初始化即调用 ()V ,虚拟机会保证这个类的『构造方法』的线程安全 发生的时机...clinit方法,其他线程都需要阻塞等待,直到活动线程执行完毕clinit方法 ---- 类加载器 Java虚拟机设计团队有意把类加载阶段的"通过一个类的全限定名来获取描述类的二进制字节流",这个动作放到

41110

JavaSE:第十三章:一分钟了解反射

利用Java反射的机制,就可以让第一个程序员没有得到第二个程序员所写的类的时候,来完成自身代码的编译。 解释四: 如果你是方法,快递员是虚拟机。快递员通过地址查地图找你的叫反射调用。...反射就是一种机制,可以让你仅知道类的名字的情况下,可以了解整个类的内部的结构,并且访问内部的成员和方法等。...大家每一个编写的类实例,都会定义这个类的包名,类名,访问域,特征符,构造器,字段,函数,父类,接口等等内容。这些内容我们的 Class 类中都提供了对应的获取方法进行获取。...();//获取类定义的方法 Method talkMethod = clazz.getMethod("talk", String.class);//获取类中指定名称和参数的公有方法 Method pugMethod...= clazz.getDeclaredMethod("pickUpGirls") //获取类定义指定名称和参数的方法 int modifers = pugMethod .getModifiers()

19430

JVM类加载过程科普

主要做三件事 通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口...,一般来说,Java应用的类都是由它来完成加载 连接 至此为止,我们的 Test.class 就加载到了 JVM ,而 JVM 呢为了自身的安全会进行一系列的校验。...校验的过程叫做 验证 验证 目的在于确保 Class 文件的字节流包含信息符合当前虚拟机的要求,保证被加载类的正确性,不危害虚拟机自身的安全。...而在 JDK8 以后,类变量会被分配在 Java 堆 解析 准备阶段完成了,但我们的 Test 类要想被执行还差最重要的一步:解析 将常量池中符号引用转换为直接引用. ( 有了直接引用,那引用的目标必定已经虚拟机的内存存在了...初始化 连接阶段完成之后,就开始正式执行 main 方法了,由于 main 方法是 public static 的,所以 JVM 会判断 Test 类是否已经初始化了,如果没有则对其进行初始化 一般在下面这

74990

JVM 系列(6) —— JVM 类加载机制

该阶段会验证如下内容: 符号引用通过字符串描述的全限定名是否能找到对应的类 指定类是否存在符合方法的字段描述符及简单名称所描述的字段和方法 符号引用的类、字段、方法的可访问属性(private、...概念上说所使用的内存都应当在方法区中进行分配,但必须到方法区本身是一个逻辑上的区域, JDK 1.7 及之前,HotSpot 使用永久代来实现方法区时,实现是完全符合这种逻辑的。...()方法是由编译器自动收集类的所有类变量的赋值动作和静态语句块(static}块)的语句合并产生的,编译器收集的顺序是由语句源文件中出现的顺序决定的,静态语句块只能访问到定义静态语句块之前的变量...,定义它之后的变量,在前面的静态语句块可以赋值,但是不能访问 ()方法与类的构造函数(即在虚拟机视角的实例构造器()方法)不同,它不需要显式地调用父类构造器,Java虚拟机会保证子类的()方法执行前...如果在一个类的 ()方法中有耗时很长的操作,那就可能造成多个进程阻塞[2],实际应用这种阻塞往往是很隐蔽的。 类加载器 类加载器能够通过一个类的全限定名来获取该类的二进制字节流。

38330
领券