Python vs Java (一):史上最全变量类型区别 -99.99% 的人都收藏了

发布于 更新于
本文目录
  1. 一、思考❓❔
  2. 1.Python与Java中的变量有差异吗?在哪些方面有差异呢?
  3. 2.为什么要学习两种语言的区别呢?
  4. 二、变量定义差异?
  5. 三、变量类型差异??
  6. 四、变量存储结构差异??
  7. 五、总结??

技术文章测试开发

差异非常大

一、思考❓❔

image.png

1.Python与Java中的变量有差异吗?在哪些方面有差异呢?

  • 差异非常大

  • 在变量类型、内存结构、实现方式均有差别


2.为什么要学习两种语言的区别呢?

image.png
  • 通过比较Java和Python的区别,能帮助开发者理解常用概念

  • 帮助Python开发者能更快掌握Java,也能帮助Java程序员能够快速上手Python



二、变量定义差异?

image.png

内容

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(不支持)



三、变量类型差异??

image.png

内容

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", "帅狼");
指定泛型之后,只能添加相同类型数据



四、变量存储结构差异??

image.png
  • Java中的基本类型变量,存放的是值

  • Java中的引用类型变量,一般存放在栈内存中,而值存放在堆内存中(使用new关键字)或者常量池中

  • Python中的变量存放的是值的地址

  • Python中的变量(任何变量)类似于Java中的引用类型(String、数组、ArrayList、类等)



五、总结??

image.png
  • 本文介绍了最流行的两种开发语言(Java和Python)中变量各方面的区别

  • 对于Python开发者想学习Java和Java开发者想学习Python的人有较大帮助

  • 本文为可优原创,有不足之处,请多指教!

image.png

来源:testingpai

继续阅读