Javaプログラミング(環境構築、変数の扱い、演算子、データの型変換)

# 最近Javaの勉強を始めたので学習記録を残します:city_sunset:

### 1.Javaの特徴
######・圧倒的求人数
Javaで書かれたプログラムはJVMによってハード ウェアやOSの違いを意識することなく動作させることが できます。(Javaの設計思想:一度書けば、どこでも動く)
→業務システム、スマートフォンアプリ、 WEBシステムなど、 様々な開発現場で使用されている。

######・未経験向き
Javaは大規模なシステムで主に採用されている言語です。 こういった大規模なシステムでは技術力の高さよりも 単純な人手を求めているケースが多く、未経験からでも 挑戦しやすい環境と言えます。

######・基礎が身につく
プログラミングの基礎を抑えた規則正しくキレイなコードが 書ける言語であり、Javaを使いこなせるようになると他の 言語を覚えることが楽になります。 Java以外の案件にも自信をもって臨めるようになります。

### Javaの環境構築(Mac)
以下の2ステップでJavaの開発/実行環境が整います

1.JDKのインストール
開発/実行するための機能をPCにインストールします。

2.環境変数の設定
「JDKや必要になるプログラムはここにある」ということ をコンピュータに教えるために環境変数を設定します。 以下の2つの環境変数を設定します。
PATH:JDK直下の「bin」フォルダを指定。 (ここにJavaのプログラム本体が格納されている)
JAVA_HOME:JDKのインストール先を指定。

Windowsと違いMacの場合はCLIを使って環境構築をするためミスや手間がかかる。そのため「eclipse」というツールを使います。eclipseのようなプログラミングに必要な機能やあると便利な機能を集約したものを統合開発環境(IDE)といいます。

### eclipse(Pleiades All in One)のインストール
eclipseは完全無料で配布されており、所定のWebサイトから ダウンロード&インストールすることで利用することが可能になります。eclipseに日本語化などを含む便利な機能を付属したものをPleiades と言います。Pleiades All in Oneには既にJavaが内包されているため、複雑な 環境設定をすることなくすぐにJavaのプログラミングを始めることが できます。
なお、今回利用するバージョン「Eclipse 2019」にはAdoptOpenJDK のバージョン11が既に入っています。

1.eclipseのダウンロード
- ダウンロード先:https://mergedoc.osdn.jp/ ※今回はバージョン「Eclipse2019」で進めます。

2. eclipseのインストール
- ワークスペースの設定(特に拘りがなければデフォルトでOK)
- 搭載されているJDKのうち、どれを採用するか選択 (今回はバージョン11を選択)

### 変数の扱い、定数、型
Javaでは基本的な型としてし機能ような種類があります。

|種類  |データ型  |扱えるデータ  |
|---|---|---|
|整数  |byte  |およそ±128  |
|整数  |short  |およそ±3万2千  |
|整数  |int  |およそ±21億  |
|整数  |long  |およそ±900京  |
|小数点数  |float  |小数(doubleよりより狭い範囲)  |
|小数点数  |double  |小数  |
|文字  |char  |一文字(Unicode文字)  |
|文字  |String  |文字列  |
|論理値  |boolean  |trueかfalse  |

```java
class JavaSample1 {
	public static void main (String[] args) {

		//整数（byte型）
		byte    month            = 12 ;           //月
		System.out.println("月：" + month);

		//整数（short型）
		short   year             = 2018 ;         //年
		System.out.println("年：" + year);

		//整数（int型）
		int     income           = 5000000 ;      //年収
		System.out.println("年収：" + income);

		//整数（long型）
		long    malePopulation   = 3500000000L ;  //人口（男性）
		System.out.println("人口（男性）：" + malePopulation);

		//小数点数（double型）
		double  acceptanceRateIT = 6.05 ;         //IT業界の求人倍率（2018年）
		System.out.println("IT業界の求人倍率（2018年）：" + acceptanceRateIT);

		//小数点数（float型）
		float   tax              = 1.08F ;        //消費税
		System.out.println("消費税：" + tax);

		//文字（char型）
		char    weekday          = '土' ;         //曜日
		System.out.println("曜日：" + weekday);

		//文字列（String型）
		String  name             = "中村" ;       //名前
		System.out.println("名前：" + name);

		//論理値（boolean型）
		boolean genderMale       = false ;        //性別が男性
		System.out.println("性別が男性：" + genderMale);
```
#### エスケープ文字
文字として表現できない情報はエスケープシーケンスを用いて表現。Javaの使用において予め特殊な意味付けのされている記号を文字として表現したいときに文字の先頭に「￥」(環境によっては「＼」を付けます。)

|エスケープ文字  |意味  
|---|---
|¥b  |バックスペース  
|¥f  |改ページ 
|¥n  |改行  
|¥r  |リターン  
|¥t  |タブ  
|¥'  |'  
|¥"  |"  
|¥¥  |¥  

#### 算術演算子
数値データの場合、加減乗算などの数値計算を行う際に使用される演算子を算術演算子といいます。

|演算子  |記述例  |意味  |
|---|---|---|
|+  |x + y  |加算する  |
|-  |x - y  |減算する  |
|*  |x * y  |乗算する  |
|/  |x / y  |除算する  |
|%  |x % y  |除算したり余りを求める  |
|-(符号)  |-x  |符号を反転させる  |
|++  |++x　、x++  |++ｘの場合、プラス1してから式を実行。x++の場合式を実行した後にプラス1  |
|--  |--x、x--  |--xの場合、マイナス１してから式を実行。x--の場合、式を実行してからマイナス1  |

```java
class JavaSample2 {
	public static void main (String[] args) {
		
		//算術演算子の活用
		
		int numberX = 8 ;
		int numberY = 4 ;
		int numberZ = 5 ;
		String stNumberX = "1";
		String stNumberY = "2";
		
		//『 + 』
		int answer1 = numberX + numberY ;
		System.out.println("answer1：" + answer1);
		
		//『 - 』
		int answer2 = numberX - numberY ;
		System.out.println("answer2：" + answer2);
		
		//『 * 』
		int answer3 = numberX * numberY ;
		System.out.println("answer3：" + answer3);
		
		//『 / 』
		int answer4 = numberX / numberY ;
		System.out.println("answer4：" + answer4);
		
		//『 / 』（割り切れない場合）
		int answer5 = numberX / numberZ ;
		System.out.println("answer5：" + answer5);
		
		//『 % 』
		int answer6 = numberX % numberZ ;
		System.out.println("answer6：" + answer6);
		
		// 符号反転
		int answer7 = -answer6 ;
		System.out.println("answer7：" + answer7);
		
		//『 ○++ 』
		int answer8 = numberX++ ;
		System.out.println("answer8：" + answer8);
		System.out.println("（ numberX：" + numberX + " ）");
		
		//『 ++○ 』
		int answer9 = ++numberY ;
		System.out.println("answer9：" + answer9);
		System.out.println("（ numberY：" + numberY + " ）");
		
		//『 +1 』と『 ++ 』の使い分けの注意
		int answer10 = numberZ + 1 ;
		System.out.println("answer10：" + answer10);
		System.out.println("（ numberZ：" + numberZ + " ）");
		
		//『 -- 』
		int answer11 = numberZ-- ;
		System.out.println("answer11：" + answer11);
		System.out.println("（ numberZ：" + numberZ + " ）");
		
	}
}

```

#### 関係演算子
様々なデータ型の2つの値を比較し、その結果をboolean型の値true/falseで表現する演算子を関係演算子と呼びます。

|演算子  |記述例  |意味  |
|---|---|---|
|==  |x == y  |値が等しければtrue、そうでなければfalse  |
|!= |x != y  |値が等しければtrue、そうでなければfalse  |
|>  |x > y  |xの値がyより大きければtrue、そうでなければfalse  |
|>=  |x >= y  |xの値がy以上であればtrue、そうえなければfalse  |
|<  |x < y  |xの値がyより小さければtrue、そうでなければfalse  |
|<=  |x <= y  |xの値がy以下であればtrue、そうでなければfalse  |

#### 論理演算子
boolean型のみ適用可能な演算子です。

|演算子  |記述例  |意味  |
|---|---|---|
|&&  |x && y  |どちらもtrueであればtrue、そうでないならfalse  |
|｜｜  |x ｜｜ y  |どちらか一方でもtrueであればtrue、そうでなければfalse  |
|^ |x ^ y  |xとyの値が違っていればtrue、そうでなければfalse  |
|! |!x   |xがtrueならfalse、falseならtrue  |

#### 代入における自動型変換
代入処理において以下の条件を満たしている場合、代入元の値の型と代入先の型に食い違いがあっても内部的に自動型変換が行われて代入が成功します。
・代入元と代入先が共に整数型(byte,short,int,long)あるいは小数点整数(double,float)であること。
・変数の大きさ(許容メモリサイズ)が以下を満たす事。
<font color="Blue">代入先の型(左辺) > 代入元の型(右辺)</font>
許容メモリサイズの小さな変数に大きな型のデータを代入しようとすると、桁溢れ(オーバーフロー)が起きてエラーになってしまいます。

下記の例では最終的にいちばんバイトサイズの大きいlong型に値が集約されます。

```java
class JavaSample3 {
	public static void main (String[] args) {
       byte  calc1_1 = 1 ;                              
       short calc1_2 = 2 ;                              
       long  calc1_3 = 300000000000L ;                   
       long answer1 = calc1_1 + calc1_2 + calc1_3 ;    
		System.out.println( answer1 );   
  }
}
```
以上がJavaの学習記録になります。参考までにどうぞ！！