# Solidity Data Types

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
• Array
• Literal
• Enum

We shall focus on boolean, integer and string data types first and discuss other data types in future articles.

### 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 != Inequality

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”, “007”, “abc%&\$” and more.

We declare a string variable using the keyword string .

Example: This example The string two types of variables, unsigned integer and boolean. We also use the keyword if and the operator > to check whether the outcome is true or false.

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.