よく忘れるチートシート(Java編)

Javaでよく忘れるやつの覚え書き

同確はPCにJavaを入れるか https://paiza.io/ja この辺で
エラーが出たら申し訳bangatです

プログラミング5大要素

１. 変数
   Integer
   
   ```IntegerSample.java
   import java.io.PrintStream;
   import java.lang.Integer;

   class IntgerSample {
     public static void main(String[] args) throws Exception {
       Integer num = 10;

       System.out.println(num);
     }
   }
   ```

   String

   ```StringSample.java
   import java.io.PrintStream;
   import java.lang.String;

   class StringSample {
     public static void main(String[] args) throws Exception {
       String str = "abcdefg";

       System.out.println(str);
     }
   }
   ```

２. 配列
    Array：JavaはArrayよりListで扱う方がいいよ(Arrayだと中身が見えないからデバッグしづらい)

   ```ArraySample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.lang.reflect.Array;

   class ArraySample {
     public static void main(String[] args) throws Exception {
       Integer[] numArray = { 1, 2, 3, 4, 5 };

       System.out.println(numArray);
     }
   }
   ```
     
   List：Listはインターフェイスなので実際に使用する際は
   ArrayList, LinkedList, Arrays.asList() で作成したインスタンスを代入します
   
   ```ListSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.util.List;
   import java.util.Arrays;

   class ListSample {
     public static void main(String[] args) throws Exception {
       List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5);

       System.out.println(numList);
     }
   }
   ```
     
   ArrayList：可変長の配列

   ```ArrayListSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.util.List;
   import java.util.ArrayList;

   class ArrayListSample {
     public static void main(String[] args) throws Exception {
       List<Integer> numList = new ArrayList<>();

       numList.add(1);
       numList.add(2);
       numList.add(3);

       System.out.println(numList);
     }
   }
   ```   

   Map：連想(Hash)配列 MapもListと同じインターフェイスなので実際に使うのは HashMap等を使います

   ```MapSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.util.HashMap;
   import java.util.Map;

   class MapSample {
     public static void main(String[] args) throws Exception {
       Map<String, Integer> alfabetHash = new HashMap<>() {
         {
           put("a", 1);
           put("b", 2);
         }
       };

       System.out.println(alfabetHash);
       System.out.println(alfabetHash.get("a"));
       System.out.println(alfabetHash.get("b"));
     }
   }
   ```
   
３. ループ
   Foreach

   ```LoopSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.util.List;
   import java.util.Arrays;
   import java.util.Map;
   import java.util.HashMap;

   class LoopSample {
     public static void main(String[] args) throws Exception {
       List<Integer> numList = Arrays.asList(1, 2, 3, 4, 5);
       Map<String, Integer> alfabetHash = new HashMap<>(){
         {
           put("a", 1);
           put("b", 2);
           put("c", 3);
         }
       };

       // 単一行で書く場合
       numList.forEach(num -> System.out.println(num));
       System.out.println("--------------");
       // 複数行で書く場合
       numList.forEach(num -> {
         num *= 10;
         System.out.println(num);
       });
       System.out.println("--------------");
       // 引数が複数の場合
       alfabetHash.forEach((key, value) -> {
         System.out.printf("key=%s, value=%s%n", key, value);
       });
     }
   }
   ```
   多重ループ

   ```NestLoopSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.lang.String;
   import java.util.List;
   import java.util.Map;
   import java.util.ArrayList;
   import java.util.HashMap;

   class NestLoopSample {
     public static void main(String[] args) throws Exception {
       List<Map<String, Integer>> listHash = new ArrayList();

       listHash.add(new HashMap<>() {
         {
           put("a", 1);
           put("b", 2);
         }
       });
       listHash.add(new HashMap<>() {
         {
           put("a", 10);
           put("b", 20);
         }
       });
       listHash.add(new HashMap<>() {
         {
           put("a", 100);
           put("b", 200);
         }
       });
       System.out.println(listHash);
       System.out.println("---------------");
       listHash.forEach(rowHash -> {
         System.out.println(rowHash);
         System.out.printf("a: %d", rowHash.get("a"));
         System.out.println("");
         System.out.printf("b: %d", rowHash.get("b"));
         System.out.println("");
       });
     }
   }
   ```
   
４. 条件分岐

   ```IfSample.java
   import java.io.PrintStream;
   import java.lang.Integer;
   import java.lang.String;

   class IfSample {
     public static void main(String[] args) throws Exception {
       Integer a = 99;
       System.out.printf("aの値は %d", a);
       System.out.println("");
       if (a < 100) {
         System.out.println("aは100未満です"); 
       }
       a++;
       System.out.printf("インクリメント後のaの値は %d", a);
       System.out.println("");
       if (a == 100) {
         System.out.println("aは100です");
       }
       if (a <= 100) {
         System.out.println("aは100以下です");
       }
       a++;
       System.out.printf("インクリメント後のaの値は %d", a);
       System.out.println("");
       if (a > 100) {
         System.out.println("aは100より大きいです");
       }
       if (a >= 100) {
         System.out.println("aは100以上です");
       }
       if (a == 500) {
         // なんか処理
       } else {
         System.out.printf("いいえ、500ではありません aは%dです", a);
         System.out.println("");
       }
       if (a != 500) {
         System.out.println("はい、aは500ではありません");
       }
     }
   }
   ```
  
５. メソッド
   
  ```Main.java
   import java.io.PrintStream;
   import java.lang.String;

   class Main {
     public static void main(String[] args) throws Exception {
       String message = new MethodSample().getMessage();
       System.out.println(message);
     }
   }
   
   class MethodSample {

     MethodSample() {
         
     }

     public String getMessage()
     {
       return "hallow. selamat pagi.";
     }
   }
  ```

６. コンパイル関連

```
// export JAVA_HOMEはしておくこと
$ javac -d classes classes Sample.java

// jarファイルの中を見る
$ jar tf JarSample.jar
```