1、代码解析:
其中 pragma 是solidity的编译控制指令,后面的*<4.0.26 <=9.0.0* 是指solity源文件可以被大于4.0.26 小于等于9.0.0版本的编译器编译。
contract
相当于java中的class,用来创建一个合约。
uint public money = 100
创建一个访问权限为public的无符号整数类型的状态变量。
function paToAcount(address add) public returns(string)
function:如果对JavaScript有过了解的应该熟悉,它是用来定义一个方法/函数。
address:是属于solidity的一个概念:账户 这个是由一串16进制数表示外部账户地址和合约地址(后面会详细说)
returns(string):表示方法会返回一个string类型的返回值。注意:string为小写。
关键字view和pure
说到这个关键字就需要先说一下以太坊的特性,对于合约的部署与方法的调用都是需要花费gas(也就是以太币,相当于手续费)。
但是对于一些合约里的方法来说,会频繁调用,并且并没有对状态变量进行修改,希望可以在调用时可以不花费gas就可以根据这两个关键字的特性,看情况使用。
view
是solidity的特有关键字,它只能修饰在方法上,被它修饰的方法可以读取合约的状态变量并且不花费gas,也就是JAVA中的属性,但是方法中不能对状态变量进行修改。
这是账户在调用test方法前的余额
点击test按钮,调用方法后,会展示返回值
查看调用后的余额并没有变化。
pure
是solidity的特有关键字,它只能修饰在方法上,被它修饰的方法不可以读取合约的状态变量并且调用方法时不花费gas。
示例代码中用pure修饰的方法中对状态变量进行了修改。
当点击编译后,发现报错,不能修改。
运算符
逻辑运算符
&&、|| 、!、bool类型与JAVA相同。
位运算符
0 1 0 1
0 1 1 0
&:按位与 都为1是1 其余为零 结果:0 1 0 0
| :按位或 有1就为1 其余为零 结果:0 1 1 1
~:取反 遇1为0 遇0为1 第一行结果:1 0 1 0
^:按位异或 相同为0 不同为1 结果:0 0 1 1
还有 左移与右移、加减乘除等 与JAVA相同
注意:
1、整数溢出错误:
int8 :代表是用8个2进制数来代表数字 所以能代表的范围是0~255
255 用8位2进制数表示为:1 1 1 1 1 1 1 1
当255 加一之后 变为: 1 0 0 0 0 0 0 0 0
int8 就会取后面的8为位: 0 0 0 0 0 0 0 0
所以应该注意整数溢出错误。
2、除数为0错误:
在solidity中当除数为0是 编译是可以通过的,但在调用时就会出错。
字节数组
字节数组分为两类:固定字节数组与可变字节数组
固定字节数组
固定字节数组的长度不可变。
可变字节数组
点击黄色按钮 初始化字节数组
在点击getInitLen
点击test按钮
数组长度变为5 长度可变
将test的返回值修改一下 返回数组内容
可以看出长度确实是变了 用0补充
string
string 可以与字节数组相互转化 通过转化为字节数组,获取长度与改变内容
当点击changeName后
个人学习记录、如有错误请多指正