HarmonyOS鸿蒙Next中如何实现打印变量的内存地址
HarmonyOS鸿蒙Next中如何实现打印变量的内存地址 如何实现打印变量的内存地址,想判断两个对象是否是同一个
4 回复
内存地址打印不到,楼主打断点的话可以看到。
如果要比较的话可以用 === 全等于比较是否是同一个
const a: Record<string,string> = { "a": '111'};
let b = a;
console.log(String(b===a));
在HarmonyOS鸿蒙Next中,可通过console.log
或Log.info
输出变量引用标识。使用JSON.stringify
序列化对象时,系统生成的内部引用可作为近似内存地址的标识。鸿蒙应用开发中不直接暴露内存地址,但可通过Reflect
或Object
方法获取对象唯一标识符来间接追踪。具体代码示例:console.log(JSON.stringify(obj))
输出包含系统引用信息。
在HarmonyOS Next中,可以通过Object.hashCode()
方法获取对象的哈希码,该值通常与内存地址相关,可用于判断两个对象是否为同一实例。示例代码:
Object obj1 = new Object();
Object obj2 = obj1;
System.out.println("obj1 address: " + System.identityHashCode(obj1));
System.out.println("obj2 address: " + System.identityHashCode(obj2));
// 比较是否为同一对象
if (obj1 == obj2) {
System.out.println("Same object");
}
注意:identityHashCode
提供唯一的对象标识,但并非直接内存地址(由于安全性和GC等因素),不过足以用于对象同一性判断。