在上一章中,我們寫下了第一個 Solidity 合約并在 Remix 中成功運行。本章我們將深入了解 Solidity 中的幾種常用值類型(Value Types),并通過示例代碼在 Remix 進行驗證。
一、Solidity 中的三種數據類型
在 Solidity 中,數據類型可以分為三大類:
本章重點講解值類型,引用和映射類型將在后續章節深入講解。
二、常見的值類型介紹與用法
我們從最常用的四種開始:布爾型、整型、地址類型和字節數組。
- 布爾類型(bool)
bool public isActive = true;
布爾型只有兩個值:true
和 false
。常用于條件判斷、邏輯開關等場景。
- 整型(int / uint)
Solidity 中支持有符號整型 int
與無符號整型 uint
,可指定位數(如 uint8
、uint256
)。
int public signedInt = -42;
uint public unsignedInt = 100;
-
int
: 可以為負,如-1
-
uint
: 只能為正,默認uint256
不同位數的整型占用不同的存儲空間。
- 地址類型(address)
在 Solidity 中,地址類型用于表示以太坊賬戶地址(無論是用戶賬戶還是合約賬戶)。
Solidity 中地址類型分為兩類:
address public normalAddress = msg.sender;
address payable public payableAddress = payable(msg.sender);
用法區別:
// address 類型不能直接接收以太幣
// normalAddress.transfer(1 ether); ? 編譯錯誤// address payable 可以接收以太幣
payableAddress.transfer(1 ether); ? 正確
- 字節數組(bytes / bytesN)
定長字節數組(bytes1 ~ bytes32);不定長字節數組(bytes)
bytes1 public a = 0x01;
bytes32 public b = "Hello Bytes32!";
bytes public c = "Dynamic Bytes";
字節數組用于存儲二進制數據,常見于加密、哈希等場景。
三、完整示例代碼
將下面的代碼粘貼到 Remix 中運行,即可觀察每種類型的結果:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;contract ValueTypesDemo {// 布爾值bool public isActive = true;// 整型int public signedInt = -42;uint public unsignedInt = 2025;// 地址類型address public normalAddress = msg.sender;address payable public payableAddress = payable(msg.sender);// 字節數組bytes1 public oneByte = 0x01;bytes32 public fixedBytes = "Fixed length byte array";bytes public dynamicBytes = "Hello, dynamic bytes!";
}
在 Remix 上運行效果: