Java 四則演算 演算子 〜Step1-2: arithmetic calculation〜

イントロダクション

Javaによる、足し算〜割り算のやり方をまとめました。はじめのコードの記述方法はJava Hello World はじめのプログラム 〜 Step1-1〜を参照してください。

ちなみに前回はこんな感じのことをやりました。メインメソッドの作成とハローワールドの実行です。

ハローワールドの解説

四則演算

はじめのプログラム、「ハローワールド」を実装したら次は、四則計算を行うプログラムを書きましょう。
はじめのプログラムで「文字列を表示する」事を行ったので、次は「計算結果を出力しましょう」ということです。
ちなみに、「パソコンは基本的に計算機なので、四則計算は基本になる」ということです。

四則演算の解説

文字表示の次は

四則演算を実装できるようになりましょう。ポイントとしては、変数の型と計算するための*演算子「+, -, , /」を理解する*ことです。
これらの演算子は、それぞれ「足し算(+), 引き算(-), 掛け算(
), 割り算(/)を行うためのものです。
また、これらの演算結果を表示するSystem.out.println( ... );の処理の引数(「()」)に表示したいものを渡します。
コードで書くと下のようになります。

System.out.println("文字列を渡す");
System.out.println(1 + 1); // 計算結果を渡す

// 文字列に統合されるので「文字列を渡す1」と表示される
System.out.println("文字列を渡す" +1);

<文字列と数値の違い>

Javaプログラムの書き方動画

IntelliJ IDEAを使用して、パッケージとクラスの作成、メインメソッドの作成を行った動画です。Windowsナレーターで解説しています。

実行する前に、IDE(開発ツール)をインストールしましょう。

変数の使い方

今回は、変数の扱い方を学習します。

プログラムを書くときには、データを一時的に保存する変数が必要になります。変数は下のサンプルコードように「データ型」「変数名」Ex: String mojiの順番で書くルールになっています。そして「=」は変数にセットするという意味です。String moji = "セットされる文字"

そして、大まかに変数の種類として以下のような分類があります。

  1. プリミティブ型変数:データそのもの、数値や文字など
  2. 参照型変数:クラス(Javaでは全てクラスで表現されます)型の変数。

ここで「Javaでは全てクラスで表現されます」と記載しましたが、「プリミティブ型はクラスではないでしょ?」と思った方。
スルドイ!

その通りです。しかし、プリミティブ型もクラスとして表現されています。俗にいうラッパークラスとして使用されています。

しかし、プリミティブ型はクラスではありませんので、ちょっと語弊があります。

プリミティブ型の例

じゃ、プリミティブ型ってなによ?と疑問に思うと思います。筆者も疑問に思いました。
ややこしい言い方にですが、「低レベルな変数」という言い方になります。

ラッパークラスの場合は、クラスの定義通り「フィールド」と「メソッド」を持っています。

プリミティブ型の場合は、持っていません。「0と1で表現される値」と表現する方が妥当だと思います。
整数値、プラスマイナスを含めて難なく表現できます。しかし、小数点は「浮動小数点数」などと、妙な言い方をします。
これは、2進数での小数点表記がややこしいためです。そのためにJavaでは「BigDecimal」クラスが用意されています。

つまり、プリミティブ型はクラスとは違い、「値しか持っていない」ということです。だからchar a = 'a'char a = 65;は同じ'A'という意味(値)になります。

プリミティブ型の値に関して

他にも、「0bx10101010」は、2進数表記で整数型(10進数)だと「170」になります。当然2進数は8進数、16進数などに変換することができるので
それぞれに変換することができます。そしてパソコンは計算機なので、そういう計算が得意です。

リテラルという言葉の意味には「"XXX"」「123」などの表記も含まれます

進数 表記(リテラル) 10進数 内訳
2進数 |0bx1010 10 0 + 2 + 0 + 8
8進数 010 8 0 + 8
16進数 0x9, 0xf, 0x1f 9, 15, 31 9, 15, 15 + 16

ちなみに、上の2進数は8桁あります。これはデータの量で言うと「8ビット」つまり「1バイト」分のデータ量になります。
上記の「0b」は2進数表記の意味があります。そして以下のような形で書けばそれぞれの意味になります。これをリテラルと呼びます。

リテラル

変数名 表記(リテラル) 意味
byte 0bx10101010 2進数を表現する8ビット分のデータ
int 1, -12 ±の整数
double 1.2, 0.4 浮動小数点数
char 'a', 'i' 1文字を表す、整数値でもセット可能
String "moji" 文字列
// 整数値を使用するときの変数型
int num = 0;
// 小数点を含む数値を使用するときの変数型
double shosu = 0.0;
// 真偽値
boolean isNumber = false;
// 文字1文字を格納できるシングルクォーテーションで囲む
char ch = 'a';

他にもありますが、少しずつ覚えていきましょう。
使わないと忘れますので。。。

ちなみに、char型の変数は文字列として使用したいときは以下のように配列にします。

char[] moji = new char[]{`a`, `b`,  `c`};

リテラルとクラスの解説

参照型の例

自分で作成したクラスや、JavaAPIで用意されているクラスが参照型(クラス型)変数に格納できます。

// 文字列を表現するクラス
String moji = "hoge";
// int型のラッパークラス、下のコードは同じ意味になります。
Integer num = 1;
Integer num1 = new Integer(1);
// 同様にbooleanのラッパークラス(参照型になります)
Boolean isNumber = false;
Boolean isNumber1 = new Boolean

そしてクラスの型を「データ型」と呼ぶ時もあります。
どちらも同じ意味です。
ListArrayListのJavaDocです。

// データ型 変数名(宣言)
int number;
// 初期化(文字列もクラス型です)
String moji = "文字列です";
// クラス型の変数(java.util.List, java.util.ArrayList)
List<String> list = new ArrayList<String>();</String>

データ型 変数名;

// int型の変数「num」を宣言。
int num;

データ型 変数名 = 値(数値、文字列、クラスなどデータ型による)

// int型の変数「num」を「1」で初期化。
int num = 1;

ここまで、ずらずらと説明してきましたが、ちょいと動かしてみます。Eclipseを使用してデバック実行したものを動画にしました。

四則演算の解説

四則演算の方法

1.「+」足し算

//「num」に2が入る
int num = 1 + 1;

2.「-」引き算

//「hiki」に1が入る
int hiki = 2 - 1;

3.「*」掛け算

// 「kake」に1が入る
int kake = 1 * 1;

4.「/」割り算

// 「wari」に2が入る
int wari = 4 / 2;

その他の演算(計算に使用)

5.「++」インクリメント

// 変数「num」に2が入る
int i = 1;

int num = i++;

6.「--」デクリメント

// 変数「hiki」に0が入る
int i = 1;

int hiki = i--;

「%」剰余: 割った時のあまり

// 変数「amari」に1が入る
int amari = 5 % 2

→5 / 2 = 2 余り 1
<サンプルコード>: ダウンロードできます。

// 変数宣言の例→早い話が初期化は値を入れるが宣言は値を入れない

int num1;

// 変数に値0をセット、以前の値は削除される

num1 = 0;
/*
 *
 * 変数の初期化

 * 変数の宣言時に、値を代入する

 * 変数 = 値(代入)

 */
public static void main(String[] args) {
 int num1 = 1;

 <span class="s2">int</span> <span class="s3">num2</span> = 10;

 // 1.足し算

 <span class="s3">num1</span> = <span class="s3">num1</span> + <span class="s3">num2</span> + 2;
 
// 2.引き算
 
num1 = num1 - num2;

 // 3.掛け算

 num1 = num1 * 3;
 
// 4.割り算

 num1 = num1 / 2;
 
// 計算結果を表示
 
System.out.println("計算結果" + num1);
}
/** メインメソッド*/

public static void main(String[] args) {

   int hidari = 0;

   int migi = 1;

   int answer = (hidari++) + migi;
   // 計算結果が少数になる可能性があるので「double型を使用する)
   
double ans1 = answer / 2;

   int amari = 3 / 2;

}

問題

問題を解いてみましょう。クイズとかなぞなぞを解く感じで実行してみましょう。

<問題1>
mondai1メソッドを作成し、コンソールに以下を出力してください。
「出力内容」


「2 + 2 は 4です」


<問題2>
mondai2メソッドを作成して、コンソールに以下を出力してください。


「10 % 3 は 1です」


<問題3>
mondai3メソッドを作成して、コンソールにいかをしゅつりょくしてください。ただし、変数firstとsecondを表示結果と同様に初期化処理を行ってください。


変数「first」を12(数値)で初期化
変数「second」を"abc"(数値)で初期化
「firstとsecondを連結すると12abc」になります。


ヒント

初めに動かすために作るものは

  1. クラス
  2. メインメソッド

コンソール出力するのに使うメソッドはなんでしたか?計算結果を出力するコードがこの記事内にあります。

よくわからない時は、とりあえず動かしてみましょう。

とりあえず自分が似たようなことをやってみました。使用している開発ツールはEclipseです。

数値の扱いを学習したのでちょっと数学的(算数的)な問題を作ってみました。

<問題4>
正三角形の面積を求めるプログラムを作成してください。
なお、プログラム引数の第一引数が正三角形の一片の長さになります。

※ヒント
プログラム引数の使い方は以下のような手順です。
ちなみに、プログラム引数の使い方は下のような手順です。※Eclipseでのやり方
Eclipseでプログラム引数を渡すときは下のように行います。

  1. 実行するJavaファイルを右クリック
  2. 実行⇒実行の構成
    Program args
  3. 起動するクラスを選択、もしくは、検索
  4. 引数タブの「プログラム引数」に引数(文字列)を渡す
    ※プログラム引数を複数渡すときは間にスペースを入れる

リテラルに関して

変数の型に関しては、理解できたと思いますが、変数を宣言したときの右側部分

リテラルは文字列、整数型などの変数に値を設定する前。
つまりは、「=」の右側のことです。
「String a = "文字リテラル";」とか「int i = 10」などのような初期化をした時に出てくる右側部分です。つまりは、 「"文字リテラル"」と「10」がそれにあたります。

String moji = "文字リテラル";
int seisu = 10;

上のコードの場合は、文字リテラルが「"文字リテラル"」で整数リテラルが「10」になります。

細かい説明などはこちらの動画にしてありますので、よかったらどうぞ。

関連ページ

関連ページ一覧

[Eclipse セットアップ](http://zenryokuservice.com/wp/2020/09/01/%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bd%9ewindows%e7%89%88eclipse%e3%81%ae%e8%a8%ad%e5%ae%9a%ef%bd%9e/)

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

JavaFX関連ページ

  1. Eclipse SceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
  4. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜

ステップアップ関連ページ一覧

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine

JavaFX + ND4Jで機械学習準備

  1. JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
  2. JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
  3. Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜

オブジェクト指向関連ページ

  1. [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
  2. オブジェクト指向の概念2〜クラスとは〜

Java Discord

  1. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
  2. Java Discord セットアップ〜Hello Discord〜
  3. Java Discord ピンポン〜Discordプログラム〜
  4. Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す