solidity基础学习
1. Solidity 中数据类型有哪些
数据类型大致分为两种:值类型和引用类型
1.1值类型
整形、布尔型、字节型、地址型
1.2引用类型
数组、结构、枚举
java的数据类型大可分为简单数据类型(byte、short、int、long、double、Boolean、char)和复杂数据类型(String)
JavaScript数据类型大可分为值类型(基本类型):(String、Number、Boolean、Null、Undefined、Symbol)和引用数据类型(对象类型):(Object)、Array、Function,还有两个特殊的对象:正则(RegExp)和日期(Date)
2. Solidity 中运算符有哪些
2.1算数运算符(+、-、*、/、%、++、--)
2.2比较运算符(==、!=、>、<、<=、>=)
2.3逻辑运算符(||、&&、!)
2.4赋值运算符(=、+=、-=、%=、*=、/=)
2.5条件运算符(?:)
3.Solidity 中变量有哪些类型
3.1状态变量 其值永久存储在合约存储中的变量
3.2局部变量 其值仅在定义它的函数内可用的变量。 函数参数始终是该函数的本地参数。
3.3全局变量 这些是存在于全局工作区中的特殊变量,提供有关区块链和交易属性的信息
4.记录 Solidity 中变量存储类别有哪些,分别是什么意义
4.1 torage
(存储)
storage
中的数据被永久存储。其以键值形式存储。
4.2 memory(内存)
memory
是一个字节数组,其插槽大小为256位(32个字节)。数据仅在函数执行期间存储,执行完之后,将其删除。它们不会保存到区块链中。
4.3 calldata(调用数据)
calldata
是一个不可修改的,非持久性的区域,用于存储函数参数,并且其行为基本上类似于memory
。外部函数的参数需要calldata
,但也可用于其他变量。它避免了复制,并确保了数据不能被修改。
JavaScript中简单数据类型储存在栈中,复杂数据类型储存在堆中
5.记录 Solidity 中循环、数组的语法和用法,分别有哪些注意事项。
5.1循环
//for循环
for (条件) {
// 循环体
}
//while循环
while (条件) {
// 循环体
}
//do...while循环
do {
// 循环执行以下语句
//......
} while(条件) // 如果条件为true,就继续执行循环
其中solidity的循环语句与JavaScript和Java相似
5.3数组
solidity的数组
//不可变数组
type[arraySize]arrayName = [element];
//可变数组
type[]arrayName = [elememt];
//JavaScript中数组
var arrayName = [element];
var arrayName = new Array(element)
//java的数组
arrayRefVar = new dataType[arraySize];
dataType[] arrayRefVar = {value0, value1, ..., valuek};
solidity中创建数组都不与JavaScript和Java相似。