# （三）Java的强类型定义




在由Python转向Java的一个最大的感受就是Java的类型定义。Java要求你所定义的常量/变量和方法必须要声明类型。

#### 常量、变量
---

定义常量与变量。

```Java
public class JavaType {

    public static void main(String[] args) {
        final double PI = 3.14;  //定义常量
        int R = 5;   //定义变量
        System.out.printf("圆周率的面积:" + PI * R * R);
    }
}
```

* final double：final用于定义常量，double为常量PI的类型。

* int：为变量R的类型。


__更多类型__

更多一些常用的数据类型：

```Java
short s = 3;      // 定义short类型变量
int i = 22;       // 定义int类型变量
float f = 1.23f;  // 定义float类型变量
char a = 'a';     // 定义字符类型用char
String string = "hello world";  // 定义字符串类型String
boolean status = true;   // 定义布尔类型类型用 boolean
```

#### 数组与HashMap
---
这种强类型还体现在数组和HashMap中。

```Java
import java.util.HashMap;

……

//声明字符串数组 String[]
String[] fruits = new String[3];
fruits[0] = "apple";
fruits[1] = "banana";
fruits[2] = "grape";

//声明字符串字典 HashMap<String, String>
HashMap<String, String> hm = new HashMap<String, String>();
//添加字典
hm.put("Jim","1155689");
hm.put("Jane","1255669");
hm.put("Kevin","1165669");

```

#### 方法中的类型
---

类型的要求也体现在方法的定义上。

```Java

public class JavaType {

    public static String person(String name, int age){
        return "name: "+name+", age:" + age;
    }

    public static void main(String[] args) {
        String name = "alen";
        int age = 22;
        String p = person(name, age);
        System.out.println(p);
    }
}
```

首先，定义了`person()`方法，它需要返回值，所以需要在方法声明时指定String 类型。

其次，`person()`方法需要两个参数，每个参数也需要指定类型，`name`为String类型，`age`为int类型。


当然，Java体现类型地方还有很多，这里是我的一点体会。




原始封面

![课程图片](https://images.unsplash.com/photo-1488590528505-98d2b5aba04b?w=300)


