这里,在类动物getObjectSize中,变量'name'返回0
class Animal {
String name;
public Animal() {
System.out.println(ObjectSizeCalculator.getObjectSize(this.name));
}
}
在类Dog getObjectSize中,变量'Dog name'返回0
class Dog extends Animal{
String dogName;
public Dog() {
System.out.println(ObjectSizeCalculator.getObjectSize(this.dogName));
}
public void dogplay(){
System.out.println("dog playing");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Animal();
Dog dog = new Dog();
long objectSize = ObjectSizeCalculator.getObjectSize(a);
long objectSize1 = ObjectSizeCalculator.getObjectSize(dog);
System.out.println(objectSize+" "+objectSize1);
}
}
我想到的是内存中的dogName引用大小等于0,动物类中的name引用大小也等于0,那么为什么在创建一个新的Dog对象后,它的大小比动物对象的大小大呢?
当我从类dog中移除(字符串dogName)时,现在dog对象的大小等于动物对象的大小。
问题是你使用了一个不正确的假设。的使用
System.out.println(ObjectSizeCalculator.getObjectSize(this.name));
构造函数中不获取引用this.name
的大小,而是获取由this.name
引用的对象的大小。在您的代码中,this.name
是null
,返回的大小是0
。
给定Animal
的实例有一个字段(name
),而Dog
的实例有两个字段(name
,继承自Animal
,和Dogname
),显然,Dog
的实例需要大于Animal
的实例。
上面的代码命名为“节点”,下面的代码命名为“测试” 我们都知道这一点。在java中,引用实例字段,在测试代码中,我们首先创建一个新的对象节点,在节点代码中,我们还创建了许多带有“new”的对象,我的问题是,在这种情况下,“this.and this”指的是什么?
在这里测试一下。 然而,我想匹配一对字符后的字符,所以我想我可以简单地把它放在后面: 不幸的是,这与任何东西都不匹配。
本文向大家介绍Python中对象的引用与复制代码示例,包括了Python中对象的引用与复制代码示例的使用技巧和注意事项,需要的朋友参考一下 可以说Python没有赋值,只有引用。你这样相当于创建了一个引用自身的结构,所以导致了无限循环。为了理解这个问题,有个基本概念需要搞清楚。 Python没有「变量」,我们平时所说的变量其实只是「标签」,是引用。 python中,"a=b"表示的是对象a引用对象
问题内容: 作为程序员,我认为它们看起来像“地址为1a234552的java.lang.Object”或类似sin 它是否正确?因此,所有参考均固定大小吗? 问题答案: 尽管在许多VM上,引用的大小是本机指针大小(即32位JVM为32位,而64位JVM为64位),但不能保证-特别是HotSpot现在或不久将支持“ “压缩的糟糕”是在64位JVM中的32位引用。(这并不意味着每个参考都经过压缩-请阅
第二个代码:
我有一个值,我想以我自己的类型存储该值和对该值中某些内容的引用: 有时,我有一个值,我想将该值和对该值的引用存储在同一个结构中: 有时,我甚至没有引用该值,我得到了相同的错误: 在每种情况下,我都会得到一个错误,即其中一个值“活得不够长”。这个错误是什么意思?