一、思考❓❔
1.Python与Java中的变量有差异吗?在哪些方面有差异呢?
- 差异非常大
- 在变量类型、内存结构、实现方式均有差别
2.为什么要学习两种语言的区别呢?
- 通过比较Java和Python的区别,能帮助开发者理解常用概念
- 帮助Python开发者能更快掌握Java,也能帮助Java程序员能够快速上手Python
二、变量定义差异?
内容 | Python | Java |
---|---|---|
定义时 | 无需指定变量类型,如:a = 10 | 必须指定变量类型,如:int a = 10 |
如何决定变量类型 | 由变量值的类型来决定变量类型,如: a = 10,a的类型为int; a = 10.1,a的类型为float; a = True,a的类型为bool |
由定义时变量前面的类型来决定,如: int a = 10,a的类型为int; long a = 10L,a的类型为long; float a = 10.1F,a的类型为float; double a = 10.1,a的类型为double; boolean a = true,a的类型为boolean |
变量类型是否可改变 | 随意改变,由赋值的值来改变变量的类型,如: one_var = 20; one_var = 20.1,变量类型从int -> float |
定义好之后,不能修改变量的类型,如: int one_var = 20; one_var = 30; one_var = 20.1(不支持) |
三、变量类型差异??
内容 | Python | Java |
---|---|---|
短整型 | int 动态变化,定义方式为: a = 100 |
short 2个字节,16位,定义方式为: short a = 100 |
整型 | int 动态变化,定义方式为: a = 10 |
int 4个字节,32位,定义方式为: int a = 10 |
长整型 | int 超过4个字节之后,会自动扩充,定义方式为: a = 12787923233 |
long 8个字节,64位,定义方式为: long a = 12787923233L |
单精度浮点型 | float 定义方式为: a = 1.34 |
float 需要在值的后面加F或者f,定义方式为: float a = 1.34F |
双精度浮点型 | float 定义方式为: a = 1.23923723739723 |
double 为默认类型,定义方式为: double a = 1.23923723739723 |
字符型 | 没有字符型,只有字符串型str 定义方式为: a = 'k' (单双引号均可) |
char 定义方式为: char a = 'k' (只能为单引号) |
字符串型 | str 定义方式为: one_str = "KeYou"(单双引号均可) |
String 为引用类型,定义方式为: String oneStr = "KeYou"; 或者String oneStr = new String("KeYou"); |
数组类型 | 没有内置的数组类型 可使用第三方numpy模块来实现: from numpy import array int_array = array([10, 20, 30]) |
为引用类型,定义方式为: int intArray[] = {10, 20, 30}; |
列表 | list 为可变类型,定义方式为: one_list = ["可优", 13.14, 520, True] 或者 one_list = [] one_list.append("可优") one_list.append(13.14) one_list.append(520) one_list.append(True) 可以添加任意类型的值 |
ArrayList 为引用类型,定义方式为: ArrayList oneList = new ArrayList(); oneList.add("可优"); oneList.add(13.14); oneList.add(520); oneList.add(true); 如果指定泛型那么类型将统一 |
HashSet | set 集合类型,不可改变,定义方式为: one_set = ("可优", 13.14, 520, True) 可以添加任意类型的值 |
HashSet 为引用类型,定义方式为: HashSet<String> oneSet = new HashSet<>(); oneSet.add("可优"); oneSet.add("13.14"); oneSet.add("520"); oneSet.add("True"); 指定泛型之后,只能添加相同类型数据 |
HashMap | dict 字典类型,可改变,定义方式为: one_dict = {"name": "可优", "age": 18, "gender": True} key为不可变类型,值可以为任意类型 |
HashMap 为引用类型,定义方式为: HashMap<String, String> hashMap = new HashMap(); hashMap.put("name", "可优"); hashMap.put("age", "18"); hashMap.put("gender", "帅狼"); 指定泛型之后,只能添加相同类型数据 |
四、变量存储结构差异??
- Java中的基本类型变量,存放的是值
- Java中的引用类型变量,一般存放在栈内存中,而值存放在堆内存中(使用new关键字)或者常量池中
- Python中的变量存放的是值的地址
- Python中的变量(任何变量)类似于Java中的引用类型(String、数组、ArrayList、类等)
五、总结??
- 本文介绍了最流行的两种开发语言(Java和Python)中变量各方面的区别
- 对于Python开发者想学习Java和Java开发者想学习Python的人有较大帮助
- 本文为可优原创,有不足之处,请多指教!
欢迎来到testingpai.com!
注册 关于