変数は、コンピュータの内部ではメインメモリ(主記憶装置)上の一部の領域(アドレス)を確保して利用する仕組みです。人間が「100番地のメモリにデータを保存して」と直接アドレスを指定してプログラミングするのは非常に困難でミスが起きやすいため、そのメモリ領域に対して人間が理解しやすい「名前(変数名)」を付けたものが変数です。
実際のプログラミング言語において変数を扱う際には、多くの場合「データ型(型)」という概念が非常に重要になります。データ型とは、その変数の箱に「どのような種類のデータを入れるか」を決めるルールのことです。代表的なデータ型には、整数を扱う「整数型(int)」、小数点を含む数値を扱う「浮動小数点型(floatやdouble)」、文字の集まりを扱う「文字列型(string)」、そして真か偽(TrueまたはFalse)の2つの状態だけを扱う「論理型(boolean)」などがあります。
データ型を指定する理由は、コンピュータがメモリを効率的に割り当てるためです。例えば、小さな整数を入れる箱と、長い文章を入れる箱では、必要なメモリのサイズが大きく異なります。また、「文字の"1"」と「数値の1」は人間にとっては同じに見えても、コンピュータ内部のデータ表現は全く異なります。そのため、プログラミング言語(特にC言語やJavaなどの静的型付け言語)では、変数を使い始める前に「この名前の変数には、このデータ型の値しか入れません」と宣言(定義)することが厳格に求められます。これを変数宣言と呼びます。