【Java】基本的な型と命令ノート

#データ型#
 - 整数
    - `byte`：±約128
    - `short`：±約3.2万
    - `int`：±約21億
    - `long`：±約900京
 - 小数
    - `float`：曖昧で良い小数
    - `double`：厳密な小数
 - 真偽値
    - `boolean`：`true` or `false`
 - 文字
    - `char`：文字１文字
 - 文字列
    - `String`：文字列

##型変換の概念##
データ型の大小関係に従う。小は大に入れるが逆は無理。
`byte` < `short` < `int` < `long` < `float` < `double`


```java
public class Main {
  public static void main(String[] args){
	// int型同士で計算した場合 -> 2
	System.out.println("int型同士で計算した場合");
	int a=5;
	int b=2;
	System.out.println(a/b);

	// int型同士で計算した場合 -> 2.5
	System.out.println("double型同士で計算した場合");
	double c=5;
	double d=2;
	System.out.println(c/d);

	// 片方がint型,もう片方がdouble型で計算した場合 -> 2.5
	System.out.println("片方がint型,もう片方がdouble型で計算した場合");
	int e=5;
	double f=2;
	System.out.println(e/f);

	// 片方がdouble型,もう片方がint型で計算した場合(検算) -> 2.5
	System.out.println("片方がdouble型,もう片方がint型で計算した場合(検算)");
	double g=5;
	int h=2;
	System.out.println(g/h);

	// int型同士て計算したものをdouble型変数xに代入した場合 -> 2.0
	System.out.println("int型同士て計算したものをdouble型変数xに代入した場合");
	int i=5;
	int j=2;
	double k=i/j;
	System.out.println(k);
  }
}
```

#基本的な命令文#
- 画面出力
    - `System.out.print(引数１);`
    - `System.out.println(引数１);`
- 数値の大小比較
    - `Math.max(引数１, 引数２);`
- 文字列型の数値型変換
    - `Integer.palseInt(引数１);`
- 乱数発生
    - `new java.util.Random().nextInt(引数１);`
- キーボードからの入力受付
    - `new java.util.Scanner(System.in).nextLine(引数１);`
    - `new java.util.Scanner(System.in).nextInt(引数１);`

```java
public class test02 {
  public static void main(String[] args){
    // 画面出力
    System.out.print("System.out.print();");
    String a="My name is";
    String b="sample program";
    System.out.print(a+b);
    System.out.println(a+b);

    // 数値の大小比較;
    System.out.println("Math.max();");
    int m=5;
    int n=2;
    int l=Math.max(m,n);
    System.out.println("比較実験："+m+"と"+n+"で大きい方は"+l);
    System.out.println("--");

    // 文字列型の数値型変換;
    System.out.println("Integer.parseInt();");
    String age="31";
    int i=Integer.parseInt(age);
    System.out.println("あなたは来年"+(i+1)+"歳になりますね");
    System.out.println("--");

    // 乱数発生;
    System.out.println("new java.util.Random().nextInt();");
    int r=new java.util.Random().nextInt(2); // nextIntの方に引数を入れる。
    System.out.println("乱数発生器："+r);
    System.out.println("--");

    // キーボードからの入力受付
    System.out.println("new java.util.Scanner(System.in).next~系");
    // 名前と年齢を受け取る。
    System.out.println("あなたの名前を教えてください。");
    String x = new java.util.Scanner(System.in).nextLine();
    System.out.println("あなたの年齢を入力してください。");
    int y = new java.util.Scanner(System.in).nextInt();
    // 出力
    System.out.println("ようこそ"+x+"さん（"+y+"歳）。");
  }
}
```

##追記 2019/05/13##
`new java.util.Scanner(System.in).nextline()`だが、
これはインスタンスの生成とメソッドの使用を一文でやっている。

- インスタンス：`java.util.Scanner`
- メソッド：`nextLine()`

でもこれだとEclipseはエラーを返してくる。

```
<unassingned Closeable value>が閉じられることはありません
```

`Scanner.close()`メソッドを使って入力受付を終わらせろ、ということらしい。
なので、インスタンスの生成とメソッドの使用は2文に分けるのが吉。
[（参考）]
(https://ja.stackoverflow.com/questions/41408/java-%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9-%E3%83%AA%E3%83%BC%E3%82%AFunassigned-closeable-value%E3%81%8C%E9%96%89%E3%81%98%E3%82%89%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93)

```java
Scanner scn = new java.util.Scanner(System.in);
String str = scn.nextLine();
scn.close(); //ここで閉じる。
```

あるいは、

```java
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
```

こういう↑書き方もある。

- インスタンス：
    - `InputStreamReader`
    - `BufferedReader`
- メソッド：
    - `readLine()`

なお、直接コマンドプロンプトでjavacとjavaを叩くとエラーは出ない模様。

#参考書籍#
[スッキリわかるJava入門 第二版]
(https://www.amazon.co.jp/dp/B00MIM1KFC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
Pp.075-091

[やさしいJava 第7版]
(https://www.amazon.co.jp/dp/4815600848/ref=cm_sw_r_tw_dp_U_x_P7o2CbMQG50SB)
Pp.61-67