【超基礎】PythonとJavaとJavaScriptを比較します(変数, if文, while文, for文)

#目的
- 今週から本配属だった
- 結局Javaを勉強することになった
- 記憶が新しいうちにJavaとPythonでちがったことまとめておこう
- ついでに少し勉強したことがあるJavaScriptも引っ張り出して比較しよう

# この記事で比較する内容
- 変数
- if文
- while文
- for文

#変数
###Python
- データ型を宣言する必要はありません
 - 変数の中身によって勝手に型を指定してくれます
- セミコロンもいりません

```python:asobi.py
py_str = "Python"
py_int = 23
py_float = 23.5

# データ型確認
print(type(py_str))
print(type(py_int))
print(type(py_float))
```

```console:コンソール
<class 'str'>
<class 'int'>
<class 'float'>
```

- 変数のデータ型を書きかえることもできます

```python:asobi.py
py_str = "Python"
py_int = 23

print(type(py_str))

py_str = 10
print(type(py_str))

py_cal = py_str * py_int
print(py_cal)
```

```console:コンソール
<class 'str'>
<class 'int'>
230
```

###Java
- データ型を宣言しなければなりません
 - float型もありますが、主にdouble型を使うようです
 - 直接的にデータ型を確認する方法は見つかりませんでした(instanceofというメソッドがあるようですが、intやdoubleには使えません)
 - Javaのデータ型については[こちら](https://www.javadrive.jp/start/var/index4.html)のサイトがわかりやすいです
- セミコロンを忘れずに

```java:asobi.java
public class asobi {
	public static void main(String[] args) {
		String javaStr = "Java";
		int javaInt = 23;
		double javaFloat = 23.5;
	}
}
```

###JavaScript
- データ型の宣言は必要ありませんが、変数名の前にvarをつける必要があります
 - int型やfloat型ではなくどちらもnumber型になるんですね…
- セミコロンもいります

```html:asobi.html
<html>
<script>
var jsStr = "JavaScript";
var jsInt = 23;
var jsFloat = 23.5;

// データ型確認
console.log(typeof(jsStr));
console.log(typeof(jsInt));
console.log(typeof(jsFloat));
</script>
</html>
```

```console:コンソール
string
number
number
```

#if文
###Python
- if, elif, elseが使われます
- 条件の末尾に:を付けます
- 実行する文のインデントは必須です

```python:asobi.py
age = 23

if age >= 65:
    print("定年です")
elif age >= 20:
    print("成人です")
else:
    print("未成年です")
```

###Java
- if, else if, elseが使われます
- それぞれの条件を(), 実行する文を{}で囲います

```java:asobi.java
public class asobi {
	public static void main(String[] args) {
		int age = 23;

		if (age >= 65) {
			System.out.println("定年です");
		}else if (age >= 20) {
			System.out.println("成人です");
		}else{
			System.out.println("未成年です");
		}
	}
}
```

###JavaScript
- if, else if, elseが使われます
- それぞれの条件を(), 実行する文を{}で囲います
- if文の形自体はJavaと同じですね

```html:asobi.html
<html>
<script>
var age = 23;

if (age >= 65) {
    console.log("定年です");
}else if (age >= 20){
    console.log("成人です");
}else{
    console.log("未成年です");
}
</script>
</html>
```

#while文
- それぞれの言語で以下のようにコンソール表示させてみましょう

```console:コンソール
0です
1です
2です
3です
4です
```

###Python
- int型であるiと文字列をそのままつなげることができないので、iをstr型にします

```python:asobi.py
i = 0

while i < 5:
    print(str(i) + "です")
    i += 1
```

###Java
- 例によって条件を()、実行文を{}で囲います
- インクリメントでi++という形を使うことができます

```java:asobi.java
public class asobi {
	public static void main(String[] args) {
		int i = 0;
		while (i < 5){
			System.out.println(i + "です");
			i++;
		}
	}
}
```

###JavaScript
- 例によってwhile文の形自体はJavaと同じです

```html:asobi.html
<html>
<script>
var i = 0;

while (i < 5){
	console.log(i + "です");
	i++;
}
</script>
</html>
```

#for文
- それぞれの言語で以下のようにコンソール表示させてみましょう

```console:コンソール
0です
1です
2です
3です
4です
```

###Python
- iが0から4までの5回の範囲で繰り返されます

```python:asobi.py
for i in range(5):
    print(str(i) + "です")
```

###Java
- for文の繰り返し条件が(初期値; 範囲; 増減)で表されます
 - 初期値を格納する変数はデータ型を宣言する必要があります

```java:asobi.java
public class asobi {
	public static void main(String[] args) {
		for (int i = 0; i < 5; i++){
			System.out.println(i + "です");
		}
	}
}
```

###JavaScript
- 例によってfor文の形自体はJavaと同じです
 - 初期値を格納する変数名の前にはvarを付ける必要があります

```html:asobi.html
<html>
<script>
for (var i = 0; i < 5; i++){
    console.log(i + "です");
}
</script>
</html>
```

#感想
- 複数言語を勉強するとき、比較しながら勉強すると覚えやすい
- JavaとJavaScript、インドとインドネシア並にちがうといいつつ、書き方結構似てるんだな
- やっぱりPythonがいちばん書きやすい！