从示例开始学习:
pragma solidity 0.4.24;
/*
Solidity中数据类型分为值类型和引用类型。值类型是指在使用时直接传递的值,比如在函数调用时,作为参数,是复制过来使用的。
*/
contract generalValueTypesContract {
// 无符号整数
uint x;
//初始化无符号整数值为88;
uint x = 88;
// 整数, 初始化为78
int a = 78;
// 常量,定义之后,不能再重新赋值了。
int constant variable1 = 8;
// 常量
int256 constant variable2 = 8;
// 对于整数,也可以使用16进制常数来初始化。
uint constant VERSION_ID = 0x123A1;
// 整数可以指定位数。
uint8 b;
int64 c;
uint248 e;
// 类型转换
int x = int(b);
// 布尔类型变量
bool b = true;
// solidity会自动推断这个变量类型是布尔。
var a = true;
// 地址是以太坊所特有的, 20 byte/160 bit
address public owner;
// 字节数组,也可以定义1~32的长度。
byte a; // byte is same as bytes1
bytes2 b;
bytes32 c;
// 动态长度的字节数组,同byte[]
bytes m;
// 同bytes字节数组,但无法读取长度,也不能通过[]来访问指定序号的字节。字符串都是UTF-8格式,使用双引号来赋值,不能用单引号。
string n = "hello";
// 长度为5的静态数组
bytes32[5] nicknames;
// 不定长度的动态数组。
bytes32[] names;
// 使用push操作添加新的元素到数组中,返回新元素在数组中的位置。
uint newLength = names.push("John");
// 定义字典类型的数组。比如这里定义一个字符串到整数的映射。 当然,value也可以是一个map。
mapping (string => uint) public balances;
//定义一个枚举类型;
enum State { Created, Locked, Inactive };
//枚举类型的变量。
State public state;
// 初始化枚举类型
state = State.Created;
// 枚举可以直接转换成整型。
uint createdState = uint(State.Locked);
}
三、基本数据类型
Solidity 是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。 此外Solidity还引入了最新Java规范中的var关键字来支持类型推断。
感谢您对本文的关注,如果您对区块链技术有兴趣,可以加入我们一起探讨, 请扫码关注“可可链”的微信公众号,并留言“加入可可链”。
本文欢迎转载,转载时请注明本文来自 微信公众号“可可链”。