難しくないJava変数の基本。使い方を覚えて効率アップ
プログラミングでは言語にかかわらず『変数』を使います。変数の使い方は言語によって微妙に異なりますが、ここではJavaの変数の使い方について見ていきましょう。変数の役割や型、書き方を詳しく解説します。
目次[非表示]
- 1.Javaの変数 基本は宣言・代入・取得(参照)
- 1.1.「データの箱」である変数の特性
- 1.2.変数の書き方と命名規則
- 1.3.ローカル変数とグローバル変数
- 2.「宣言」には適切なデータ型を選択する
- 2.1.なぜデータ型の設定が必要なのか
- 2.2.プリミティブ型8種の特徴
- 2.3.参照型はクラス型・インターフェース型・配列型がある
- 2.4.型変換で型を変えることも可能
- 3.変数にデータを入力する「代入」
- 3.1.代入の前に行う初期化と注意点
- 3.2.代入の具体的方法とポイント
- 4.変数からデータを受け取る「取得(参照)」
- 5.javaの変数の使い方をマスターしよう
Javaの変数 基本は宣言・代入・取得(参照)
変数はプログラミング言語を扱うのであれば、必ず覚えておきたい概念です。
変数を扱う方法は「宣言」「代入」「取得」に分かれます。
それぞれの役割と書き方を見ていきましょう。 その前に、まずは変数とは何か、基本的なところから解説します。
「データの箱」である変数の特性
変数とは、データを格納しておく領域のことで、よく箱に例えられます。変数は、日常で使うさまざまなツールやアプリに利用されています。
例えば、商品の計算です。品物の代金を「price」という変数として処理し、消費税10%込みの金額を計算する式を『price*1.10』とします。
この「price」の値を置き換えるだけで、どのような商品でも10%の税率で計算できる命令文を作成できます。これが変数の役割です。
変数は、数値以外にも文字列や真偽値として扱うこともできます。Javaを扱う上で、変数への理解は必須です。
変数の書き方と命名規則
変数の書き方は、『データ型 変数名;』です。「データ型」というのは、変数の種類が整数なのか、文字なのか、真偽値なのかといった属性を決める型のことです。
例えば『int test;』と変数を書けば、これは「testは整数の値を持つ変数」という意味になります。 変数名には命名規約があり、ルールに則って名前を決めます。規約は以下のとおりです。
- 半角英数字、_(アンダーバー)、$(ダラー)のいずれかを使用
- 変数名の頭文字は数字以外
- Javaで使用されている予約語は使用不可
- すでに使用している変数は再度使用不可
- 論理値を示す『true』、『false』、『null』または演算子は使用不可
- 大文字、小文字は区別する
このルールに則っていないと変数として判断されず、エラーになってしまうので注意しましょう。
ローカル変数とグローバル変数
Javaの変数には種類があり、ローカル変数とグローバル変数という2種類に分類されます。ローカル変数とは、プログラム内のとある範囲でのみ利用できるものです。
逆に、グローバル変数は、プログラム内のどこからでも使用できる変数を指します。グローバル変数はどのクラス、メソッドからも参照できてしまうため、一般的にはあまり好ましいとはいえません。
そのため厳密にいうと、グローバル変数というものはJavaに存在しません。しかし、変数の宣言にstatic句を使用すれば、そのクラスをインスタンス化せずに、どこからでも変数が利用できるのです。
これをstatic変数と呼びますが、グローバル変数と同様の機能を持つものになります。
■関連記事
Java短期講座(入門5日・基礎10日)-株式会社ジョブサポート
「宣言」には適切なデータ型を選択する
変数の宣言には、適切なデータ型を選択する必要があります。
何も考慮せずにデータ型を設定すると、メモリを無駄に消費したり不都合な事態を招いたりする恐れがあるのです。
適切なデータ型を選択する理由と、データ型に関する基本知識を紹介します。
なぜデータ型の設定が必要なのか
プログラミング言語の中には、PerlやRubyのように、変数のデータ型を宣言しなくてもよいものがあります。
一方で、JavaやC言語のコンパイラ型言語は、データ型の宣言が必要です。 データ型の宣言をしないプログラムの中には、その状況に応じてデータ型を調整してくれるものもあります。
例えば、同じ『1』でも数字ではなく文字列の『1』として捉えたい場合は、臨機応変に処理してくれるのです。 しかし、予期せぬ変換をすることで、上手く動作しなくなるリスクもあります。
データ型の宣言をすると、どのような場合でも固定された型として認識するため、そのような事態を回避できます。 このように、データ型を宣言することにはメリットがあるのです。
プリミティブ型8種の特徴
Javaの基本的なデータ型を、プリミティブ型といいます。全部で8種類あります。それぞれの特徴は以下の通りです。
型の種類 |
名称 |
内容 |
boolean |
ブーリアン型 |
true または false。 |
char |
文字型 |
消費メモリ2バイト。'\u0000'~'\uffff'。 |
byte |
バイト型 |
消費メモリ1バイト。-128~127。 |
short |
短整数型 |
消費メモリ2バイト。-32768~32767。 |
int |
整数型 |
消費メモリ4バイト。-2147483648~2147483647。 |
long |
長整数型 |
消費メモリ8バイト。約-922京~約922京。 |
float |
単精度浮動小数点数型 |
消費メモリ4バイト。±3.40282347E+38~±1.40239846E-45 |
doubule |
倍精度浮動小数点数型 |
消費メモリ8バイト。±1.79769313486231570E+308~±4.94065645841246544E-324 |
参照型はクラス型・インターフェース型・配列型がある
データ型において、基本のプリミティブ型以外のものを参照型と呼びます。
参照型はクラス型・インターフェース型・配列型に分かれます。
参照型はオブジェクト実体の場所情報を使ってアクセスする型の総称で、一般的にはこの型を使った変数をオブジェクト変数と呼びます。
型変換で型を変えることも可能
変数を使う上で、異なった型の変数を代入する場面もあるでしょう。Javaでは「キャスト」と言って条件を満たすと強制的に型が変換されます。 キャストには、次のようなルールがあります。
- 式内の各オペランドの型が異なるときは、大きな型に統一される。ただし、intより小さな型はすべてintに統一される
- 異なる型へ代入する場合は、左辺の型に変換される
- 文字列を連結するときは、+演算子の一方のオペランドがStringオブジェクトであるとき、もう一方のオペランドが文字列に変換されて連結される
また、強制的に型を指定することも可能で、これを明示的型変換(キャスト)と呼びます。
オンライン・リモート講座(入門5日・基礎10日)-株式会社ジョブサポート
変数にデータを入力する「代入」
変数にデータを入力することを「代入」と呼びます。代入にもいくつかのルールがあります。代入のルールと方法について見ていきましょう。
代入の前に行う初期化と注意点
代入を行う際、元々どんな属性のどんな値が入っているかがわかりません。
そこで、変数から値を読み出す前に、変数の初期化を行う必要があります。このとき、変数が初期化されていないとコンパイルエラーになるので注意しましょう。
Javaの場合、ローカル変数は宣言しただけでは初期化されません。そこで、次のように記述して初期化します。
また、次のように書き込むと初期化と宣言を同時に行えます。
代入の具体的方法とポイント
変数を代入するには「=」を使います。先に記述したように「変数名=値;」で基本的な記述は完了です。
これで、「整数型の変数bを宣言し、さらにbに100の値を代入する」という処理をしています。左辺に変数名、右辺に値です。「=」は数学のイコールとは意味が違うので注意しましょう。
変数からデータを受け取る「取得(参照)」
変数に格納したデータを取り出すことを「取得」といいます。ここでは取得について詳しく解説します。
格納されている値の取り出し方
格納されている値を取り出すには、変数名を記述します。例えば、以下のような記述式です。
この記述により、変数Bに格納されている30の値が取り出されます。
格納されている値は1度取り出してもなくなることはなく、何度でも取り出すことが可能です。
javaにおける「参照渡し」「値渡し」「参照の値渡し」
Javaで「参照」といえば、参照値のことです。あくまで値であり、他の言語で言うところの参照とはまったく異なります。
これを踏まえた上で、「参照渡し」「値渡し」「参照の値渡し」についてそれぞれ見ていきましょう。
- 参照渡し:メソッドの因数に、変数そのものの参照を渡すこと
- 値渡し:メソッドの引数に、値のコピーを新規に作成して渡すこと
- 参照の値渡し:C言語などで言うポインタ渡しのこと。
変数を渡した際の挙動が違ってくるので、区別して使い分ける必要があります。
javaの変数の使い方をマスターしよう
プログラミングにおいて変数は重要な要素です。Javaの変数は型の決定や宣言など、いくつかのルールがありますので、はじめのうちに覚えておきましょう。
Javaの変数をマスターすると、Javaでできることが一気に広がります。変数の使い方をマスターすれば、Javaに対する理解が深まっていきます。