最初的代码如下: class Object def abc p "instance abc" end def self.abc p "class abc" end end obj=Object.new obj.abc #instance abc Object.abc #class abc 修改一下: class Object def abc p "instance abc" end end obj=Object.new obj.abc #inst…
目录 前言 例子 源码 输出 图解 深入分析 学以致用 写在最后 前言 在JAVA虚拟机内存管理中,堆.栈.方法区.常量池等概念经常被提到,对理论知识的理解也常常停留在字面意思上,比如说堆内存中存放对象,栈内存中存放局部变量,常量池中存放字符串常量表等,本篇文章通过一个有趣的例子,尽量将这些理论概念通过程序样例及图解的方式表达清楚,让我们更能深入底层知识. 例子 源码 StringJvm类中定义了一个CONST_STRING字符串常量,并赋值"Hello World": main方法定…
最近在项目中,发现了一个bug,充分了展示了自己对java底层的认知有很多的不足和欠缺. 下面有段代码: String str="1#2#3"; String[] strs=str.split("#"); System.out.println(strs.length); ok,上面这段代码最终输出结果是2,这没有问题,但是如果换成下面的写法呢,请看: String str="##"; String[] strs=str.split("#…
D:\learnProg\Ruby>irb#浮点数转换成整数,会强行去掉小数点后面的数字 irb(main):017:0> 123.45.to_i => 123 #整数转换成浮点数,会添加小数点和0 irb(main):018:0> 123.to_f => 123.0 #整数转换成字符串 irb(main):019:0> 123.to_s => "123" #浮点数转换成字符串 irb(main):020:0> 123.45.to_s =…
虽然obj-c的语法格式略显繁琐,但它和ruby都从某些方面继承了smalltalk的某些动态的东西.这些东西是 C和C++之类的静态语言所不曾有的. 比如ruby中可以将一个类或对象的所有方法枚举出来,在obj-c中我们同样可以这样做: #import <Foundation/Foundation.h> int main(void){ @autoreleasepool{ unsigned int count = 0; Method *ms = class_copyMethodList([NS…
OC类方法和实例方法中的self Objective-C里面既有实例方法也类方法.类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenience method).类方法由类来调用,不需要对象参与,所以在其他的语言里面类方法有的时候被称为静态方法. 类方法和实例方法中的self区别: 1,实例方法里面的self,是对象的首地址.2,类方法里面的self,是Class.在类方法里面的self和实例方法里面的self有着本质上的不同,尽管他们…
最近在debug dubbo代码过程中遇到的很有趣的问题 我们都知道dubbo ReferenceBean是消费者的spring bean包装,为了查一个consumer端的问题,在ReferenceBean的父类ReferenceConfig的 T get()方法(140行)打上了一个断点. 当我debug 跟进init方法之后发现,ReferenceConfig的成员变量initialized(boolean类型),没有初始化,值变成了true? 纳尼... 在学习java的基础知识的时候,…
类方法: 类方法是属于类对象的 类方法只能通过类对象调用 类方法中的self是类对象 类方法可以调用其他的类方法 类方法中不能访问成员变量 类方法中不能直接调用对象方法 类方法是存储在元类对象的方法缓存中 实例方法: 实例方法是属于实例对象的 实例方法只能通过实例对象调用 实例方法中的self是实例对象 实例方法中可以访问成员变量 实例方法中直接调用实例方法 实例方法中可以调用类方法(通过类名) 实例方法是存放在类对象的方法缓存中…
类方法是类的方法,在定义的时候要在上方加上一个@classmethod装饰器来进行装饰,形参是cls,类和实例都可以取调用类方法: 实例方法是实例对象方法,只有实例可以调用,类是不能调用的,形参是self,指的是对象本身: 静态方法是一个任意的函数,只是刚好放到了类里面,需要在上方加上一个@staticmethod来进行装饰,可以使用对象直接调用.…
###################### #类变量 ###################### class Cloud @@count=0 def initialize(user,password,ip) @user = user @password =password @ip =ip end def createvm @ip =ip @@count+=1 end end ######################### #类方法和实例方法 #######################…