Rubyを学習後にJavaを勉強した人が感じた主な二つの言語の違い Part1

Javaの文法を勉強し始めRubyと比べてややこしいルールが多いのでメモしておく。


###出力



```
System.out.println "Java";  //これでRubyのPutsと同じ役割 コードの終わりに;を打つ
```


###変数とデータ型
Javaで変数を定義するためには、
①変数にいれる値のデータ型を指定する、②変数の名前を決める、
という2つが必要。

```
int number　= 7;

String name = "佐藤";   //String（文字列）型はのsは大文字

double syosu = 3.14;
```

###キャスト(強制的に型変換)



```
 int number1 = 7;
 int number2 = 2;

 System.out.println(number1 / number2);  //結果は3
 System.out.println((double)number1 / number2);  //結果は3.5
```

###真偽値 boolean型



```
  System.out.println(12 / 4 == 3);  //trueと出力

  System.out.println(12 / 4 != 3);　//falseと出力

```

###if文
　条件式はifの後の()のなかに書く

```
  if (true) {
    System.out.println("条件式がtrueのため、出力されます");
  }
    
    
  if (false) {
    System.out.println("条件式がfalseのため、出力されません");
  }
```

###switch文

```
int number = 13;
    
    // defaultを用いて、どのcaseにも合致しない場合の処理
    switch (number % 5) {
      case 0:
        System.out.println("大吉です");
        break;
      case 1:
        System.out.println("中吉です");
        break;
      case 4:
        System.out.println("凶です");
        break;
      default:
        System.out.println("吉です");
        break;
    }
```

###配列

　はじめに配列の要素の型を指定する。配列は{}中括弧。

```

 String names[] = {"YUI","YUKI","YOU"};　
```

###拡張for文　(for文をシンプルに書く)

```
   String[] names = {"犬", "猫", "亀"};
    
    for (String name : names){
      System.out.println("私のペットは"+name+"です");
    }
```


###クラスとメソッド

Javaは、ファイルではなくクラスを実行する。Mainクラスの中にMainメソッドがありその中にあるhelloメソッドが実行されるという流れ。

```
class Main {
//メソッドの定義 voidは戻り値がないという意味
  public static void main(String[] args) {　
    hello();
  }
  
  public static void hello() {
    // "Hello World"を、"Hello Java"に書き換えてください
    System.out.println("Hello Java");
  }
}
```

###戻り値 (メソッドの処理結果を、メソッドの呼び出し元で使いたい場合)

```
class Main {
  public static void main(String[] args) {
    // fullNameメソッドの結果を変数nameに代入
    String name = fullName("Kate" ,"Jones");
    
    // printDataの引数を書き換えてください
    printData(name, 27);
    
    // こちらは書き換えないでください
    printData("John Christopher Smith", 65);
    
  }

  public static void printData(String name, int age) {
    System.out.println("私の名前は" + name + "です");
    System.out.println("年齢は" + age + "歳です");
  }

  // fullNameメソッドを定義
  public static String fullName(String firstName ,String lastName){
    return firstName + " " + lastName;
  }
  
}
```

###オーバーロード(引数の型や個数が違う場合は同名のメソッドを定義できる)

```
//コンピュータが別々のメソッドとして判断できる

hello();        //引数がないhelloメソッド

hello("Java");　//引数が一つhelloあるメソッド
```


###真偽値の戻り値

```
isHealthyメソッドの戻り値（真偽値）で条件分岐
メソッド１
    if (isHealthy(bmi)){
      System.out.println("健康です");
    }else{
      System.out.println("健康ではありません");
    }


メソッド２
  public static boolean isHealthy(double bmi){
    return bmi >= 18.5 && bmi < 25.0;
  }
```

###Scanner
コンソールに値を「入力」し、その値をプログラム内で使うこともできる。
コンソールへの入力を受け取るにはScannerというライブラリを用います。

```
//import必須
import java.util.Scanner;　　

class Main {
  public static void main (String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.print("名前： ");
    
    // 変数nameを定義し、コンソールから文字列を受け取って代入してください
    String name = scanner.next();
    // 「こんにちは◯◯さん」と出力してください
    System.out.println("こんにちは"+name+"さん");
  }
}
```

Part2に続く....