pragma solidity ^0.4.0;
contract Person {
//属性的默认权限是internal 方法的默认权限是public
//只有public 权限的属性可以供外部访问。其他需要get set访问
//通过this(指针)只能访问public的方法。其他权限的方法可以通过方法名()直接调用
//只有public权限的属性和方法才能通过合约地址去访问。
//继承
//只有private 权限的属性不能被继承
//只有public 权限的方法才能被继承
// storage 指针传递 memory 值传递
function age() constant returns (uint) {
return 26;
}
function weight() constant public returns (uint) {
return 180;
}
function height() constant internal returns (uint) {
return 172;
}
function money() constant private returns (uint) {
return 32000;
}
}
pragma solidity ^0.4.0;
contract Person {
uint _age;
uint _height;
address _owner;
//属性==>_age,set方法==setAge get方法==》_age()
function Person(){
_age = 18;
_height = 180;
_owner = msg.sender;
}
function owner() constant returns (address) {
return _owner;
}
function setAge(uint age){
_age = age;
}
//constant 代表只读并且有返回值。 创建实例的时候就会调用带有constant的方法,只要往区块链写入信息都需要付gas
//同一个钱包地址创建同一个合约不会重新写入区块链,只会返回以前的部署的合约。
//public inernal(默认权限) private
function _age() constant returns(uint){
return _age;
}
}
pragma solidity ^0.4.0;
contract Person{
uint _age;
uint private _height;
uint public _sex;
//public 属性会自动生成一个get方法 如果手动重写方法可以覆盖掉自动生成的方法。
//private internal
function _sex() constant returns (unit) {
return _sex;
}
}
pragma solidity ^0.4.0;
contract C {
bytes9 public g = 0x6254454541545845;
string public name = "yujunlong";
bytes public b = new bytes(1);
bytes1 public bs1;
bytes32 public bs32;
function getByteLength() constant public returns (uint){
return g.length;
}
//string==>bytes
function nameBytes() constant public returns (bytes) {
return bytes(name);
}
function nameLength() constant public returns (uint){
return bytes(name).length;
}
function setNameFBF(bytes1 z) public{
bytes(name)[0] = z;
}
function setbLength(uint len){
b.length = len;
}
//b ==0x64
function setbData(byte b1, uint index){
b[index] = b1;
}
function pushByte(byte b1){
b.push(b1);
}
//后面补0
function b1Tb32(){
bytes9(bs1);
}
//截取后面的
function b32Tb1(){
bytes1(bs32);
}
function bytes32Content(bytes32 x) constant returns (string){
bytes memory bytesString = new bytes(32);
uint charCount = 0;
for(uint j = 0;j<32;j++){
byte char = byte(bytes32(uint(x)*2**(8*j)));
if(char!=0){
bytesString[charCount] = char;
charCount++;
}
}
bytes memory bytesString2 = new bytes(charCount);
for(uint j = 0;j<charCount;j++){
bytesString2[j] = bytesString[j];
}
return string(bytesString2);
}
}
pragma solidity ^0.4.0;
contract Person {
string _name;
function Person(string name){
_name = name;
}
function setName(string storage name) internal{
bytes(name)[0] = "Y";
}
function modifyName(){
setName(_name);
}
function name() constant returns (string) {
return _name;
}
}
pragma solidity ^0.4.0;
contract Person {
//对象的属性默认是storage 都是要写到区块链中的
//任何修改状态变量的方法都不能使用constant这个关键字
//属性的任何赋值都是需要写入到区块链的。
uint _u;
bool _b;
string _s;
address _a;
int _i;
byte b;
bytes1 b1;
//长度不可变,内容不可变
bytes2 b2;
//固定长度的数组,内容可变,长度不可变
byte[2] b22 = [byte(0x6c),0x79,0x87];
bytes32 b32;
bytes bs;
//可变
uint [] T = new uint[](5);
uint [] TT = [uint(1),3,4];
//固定不可变
uint [3] TTT = [uint(1),3,4];
function Person() {
_u = 10;
_b = true;
_s = "yjl";
_a = 0x07d62de1141cb58c35e76ab0e4d58903d8812b59;
_i = -10;
}
//
function f() public {
uint[3] memory x = [uint(1),3,4];
}
//int = int256 有符号 uint = unit256无符号
//int8-int16-int24...-int256
//unit8-unit16-unit24...-unit256
//11111111-01111111 0-01111111
//_a**_b _a的_b次方
//-a<<_b==>-a*(2**_b)
//-a>>_b==>-a/(2**_b)
//address 40位的4位等于160位==unit160
//address(unit160) unit160(address)
//payable 转账关键字 有转账api的时候要在方法后面加上这个关键字。
//bytes1 = byte 1个字节 8位00000000 a = 65
//bytes ===string
//delete 关键字清空bytes 数据
//固定长度的字节bytes1~bytes32的length的方法返回的是该字节固定的长度,而不是根据内容的变化而变化。
//0xff==11111111==255
// 数字默认uint8 需要强转为uint==>[uint(1),3,4]
//方法中创建的对象默认memory类型。状态属性默认storage
//memory 是放在内存中,没有写到区块链中的。storage是写到区块链中的。
}