石田修二 > コンピュータメモ > Java >    (サイト内検索

変数

ここでは「値を器に入れて持ち運ぶ」という手法を学びます。

public class Val {
	public static void main(String[] args) {
		int a;
		int b;
		int x;
		
		a = 10;
		b = 20;
		x = a + b;
		
		System.out.println(x);
	}
}

変数の中に入っている値を調べることを,変数を参照すると言います。

これも変数のサンプルプログラム。

public class Var1 {
	public static void main(String[] args) {
		// 文字列型の変数
		String name;
		// 整数型の変数
		int sansu;
		int kokugo;
		int goukei;
		
		// 変数に値を代入する
		name = "石田修二";
		sansu = 70;
		kokugo = 80;
		goukei = sansu + kokugo;
		
		// 変数の値を表示する
		System.out.println("名前:" + name);
		System.out.println("算数:" + sansu);
		System.out.println("国語:" + kokugo);
		System.out.println("合計:" + goukei);
	}
}

生徒の名前と算数と国語の点数,そしてそれらの合計点を「変数」に格納し,それらの値を表示するプログラムです(佐藤滋『ちょっとはじめる Java』p107より)。

/* 変数を使うプログラム
 * 
 */
public class Var1 {

	public static void main(String[] args) {
		// 文字列型の変数
		String name;
		// 整数型の変数
		int sansu;
		int kokugo;
		int goukei;
		
		// 変数に値を代入する
		name = "石田修二";
		sansu = 70;
		kokugo = 80;
		goukei = sansu + kokugo;
		
		// 変数の値を表示する
		System.out.println("名前:" + name);
		System.out.println("算数:" + sansu);
		System.out.println("国語:" + kokugo);
		System.out.println("合計:" + goukei);
	}
}

同じ型の変数はカンマで区切って1行で行うことができます。この例であれば,

int sansu, kokugo, goukei;

配列

同じデータ型の値を,複数まとめて格納できる箱のようなもの。必要とする要素の数だけメモリ領域を確保します。配列を使うと,それぞれの値を順番に処理できます。

public class Basic2 {
	public static void main(String[] args) {
		// 配列の宣言
		String[] name;
		
		// 配列に格納する要素のメモリ領域を3つ確保
		name = new String[3];
		
		// 配列への値の格納
		name[0] = "日替わり幕の内弁当";
		name[1] = "スペシャル洋食弁当";
		name[2] = "唐揚げ弁当";
		
		// 値の出力
		System.out.println("1番目の配列:" + name[0]);
		System.out.println("2番目の配列:" + name[1]);
		System.out.println("3番目の配列:" + name[2]);
	}
}

異なる型の自動変換について

数値計算における型の違いに注意する必要あり。数値を代入する変数には整数型と実数型があります。これらは「数値」を代入しておくものですが,その精度によって型が分かれています。

具体的に以下のプログラムを見てみましょう。

/*
 * 自動変換の注意
 */
public class henkan {
	public static void main(String[] args) {
		// 整数型変数 a と b を宣言
		int a = 1, b = 2;
		// 実数型変数 f を宣言
		double f;
		// 文字列変数 s を宣言
		String s = "平均は ";

		// 2 で割る場合
		f = (a + b) / 2; // 全て整数型
		System.out.println(f);
		// 2.0 で割る場合
		f = (a + b) / 2.0; // 2.0 という実数型が混じっている
		System.out.println(f);
	}
}

a と b にそれぞれ 1 と 2 が代入されています。これら2つの数字の平均値を計算し,その答えを実数型の変数 f に代入することを考えます。

平均値ですから,2つの数字を足して2で割ります。このとき 2.0 で割るという式を書く場合と 2 で割るという式を書いた場合で答えが異なります。

前者は全て整数型(a,b,2全て)なので,計算自体が整数で行われ,結果も整数となります。したがって,答えも小数部分が切り捨てられ,1 となってしまいます。

一方,後者のように,2.0で割り算を行う場合,2.0 は実数型なので,整数型と実数型が混在した演算になります。この時,Java は最も計算精度の高い型に変換してから演算を行います。このケースでは整数型であった a と b の2つの変数は実数型に変換されて,実数の精度で演算が行われます。その結果,1.5 という答えになります。

ポイントは 1つでも実数型があると,実数で計算 ということです。

10と15を足して2で割る計算を行いなさい。この時,2で割った答えと,2.0で割った答えの二つを表示するようにして下さい。

答えの一例

public class CalcMean {
	public static void main(String[] args) {
		int a = 10, b = 15;
		double f;

		f = (a + b) / 2;
		System.out.println(f);
		f = (a + b) / 2.0;
		System.out.println(f);
	}
}

リンクはご自由にどうぞ。

【石田修二トップページ】  【コンピュータメモ】 【Java】

Last modified: 2017-02-02 00:14:07