什么是不可变类1.不可变类是指类的实例一经创建完成,这个实例的内容就不会改变。2.Java中的String和八个基本类型的包装类(Integer,Short,Byte,Long,Double,Float,Boolean,Char)都是不可变类3.不可变类vs不可变变量:二者是不一样的。不可变类是指类的实例内容不会改变,考虑如下代码:1Strings="ABC";2s="BCD"3System.out.println("s:"+s);4//outputs:BCD 在line2中我们对s变量进行了再次赋值,实际上是又创建了一个值为"BCD"的String对象,并将s指向它。变化的是s指向的内存地址
什么是不可变类1.不可变类是指类的实例一经创建完成,这个实例的内容就不会改变。2.Java中的String和八个基本类型的包装类(Integer,Short,Byte,Long,Double,Float,Boolean,Char)都是不可变类3.不可变类vs不可变变量:二者是不一样的。不可变类是指类的实例内容不会改变,考虑如下代码:1Strings="ABC";2s="BCD"3System.out.println("s:"+s);4//outputs:BCD 在line2中我们对s变量进行了再次赋值,实际上是又创建了一个值为"BCD"的String对象,并将s指向它。变化的是s指向的内存地址
在solidity语言中引用类型修饰符(引用类型为存储空间不固定的数值类型)memory、calldata与storage,它们只能修饰引用类型变量,比如字符串、数组、字节等...memory适用于方法传参、返参或在方法体内使用,使用完就会清除掉,释放内存calldata仅适用于方法传参,修饰该变量的值不能修改storage仅适用于方法体内,而且它的指针必须指向链上数据。使用完,链上数据将保存最新状态 常量修饰符constant编译前已经确定,编译后不能再修改常量的值constant它不是状态变量,所以它不储存在插槽(Slot)里面,获取该常量的方法修饰必须是Pure,而不是Viewimmut
在solidity语言中引用类型修饰符(引用类型为存储空间不固定的数值类型)memory、calldata与storage,它们只能修饰引用类型变量,比如字符串、数组、字节等...memory适用于方法传参、返参或在方法体内使用,使用完就会清除掉,释放内存calldata仅适用于方法传参,修饰该变量的值不能修改storage仅适用于方法体内,而且它的指针必须指向链上数据。使用完,链上数据将保存最新状态 常量修饰符constant编译前已经确定,编译后不能再修改常量的值constant它不是状态变量,所以它不储存在插槽(Slot)里面,获取该常量的方法修饰必须是Pure,而不是Viewimmut