Solidity is a statically typed programming language, which means that the type of each variable needs to be specified at compile-time. Solidity provides several categories of data types, as listed below:
- Value types
- Reference types
- Mappings
Value Types
These types of data are called value types because variables of these types will always be passed by value. There are several value types in solidity, as listed below:
- Boolean
- Integer
- Fixed Point Number
- String
- Address
- Array
- Literal
- Enum
We shall focus on boolean, integer and string data types first and discuss other data types in
Boolean
Boolean is a data type that only produces two possible values, true or false. They can be used together with some common operators, as follows:
Operator | Meaning |
! | Logical negation |
&& | Logical conjunction “and” |
|| | Logical disjunction “or’ |
== | Equality |
!= |
We declare a Boolean variable using the keyword bool
Integer
There are two types of integer, the signed integers, and the unsigned integers. The keyword to declare signed integers is int and the keyword to declare unsigned integers is uint. In addition, we can assign the number of bits a signed integer can hold using int8, int16 until int256. Similarly, we can use uint8 until uint256 for unsigned integers.
We declare an integer variable using the keyword int or uint
We can use various operators to deal with operations that involve integers. The operators are listed as follows:
Comparison Operators | <= < == != >= > |
Bit Operators | & | ^ and ~ |
Arithmetic Operators | – * / % ** << >> |
String
The string is a data type that cannot be operated arithmetically. String literals are written with either double or single-quotes, for example, “Abraham
We declare a string variable using the keyword string .
Example: This example
The code
pragma solidity ^0.4.24; contract myContract2 { uint private a; uint private b; bool ans; function getValue1(uint num1) public{ a = num1; } function getValue2(uint num2) public{ b = num2; } function checkAns() public view returns (bool){ if (a>b) ans=true; else ans=false; return ans; } }
After we compiled and deployed the contract, we get the following output. We can test the results by entering different values in getValue1 and getValue2. The results will be either true or false.