初识python 变量(与java的对比学习)

                博主以前学过java,学习时通过python和java的对比,觉得更能深刻理解两者之间的差异。

            python是一门脚本语言,是一种解释性语言。所谓解释性语言,个人理解就是一边编译,一边执行。

             与java不同,java执行前,需要javac进行编译,生成class文件,然后在使用java命令执行。

                                                        python变量与java变量的比较
            

            从变量声明上比较

            Python在声明变量时不需要说明数据类型,python会自动地根据你所赋的值去判断变量的数据类型。在python中,

            a=1  则说明a是整数类型

            b=“人生真是寂寞如雪”   则说明b是字符串类型。

            但是在java中,我们在声明变量时,必须指定变量的数据类型。在java中

            a=1、b=“人生真是寂寞如雪”是非法的,编译报错

            在java中,应当这样声明

            

            int a=1

            String b=“人生真是寂寞如雪”这样才是合法的。


           从存储方式的角度看

            python的内存管理机制与java不同。在python中,变量名其实就是一个标识符,它代表的是内存中某一个对象的引用。可以用我们生活中的例子来解释,比如当我们去图书馆借书时,我们总是先通过电脑等设备查找到我们要找的书的位置在哪一层楼,哪一排书架,哪一个书柜,第几列第几行。书的位置其实就是我们所说的引用,它指向了内存中的某一个对象。

            如图


            当执行a="刘亦菲"时,在内存中创建了两个对象,一个是a,一个是字符串“刘亦菲”,假设“刘亦菲”所在内存空间的地址为0x0001,此时a中存放的值是0x0001.

            当执行b=a时,在内存中创建了一个对象b,然后,把a中存放的值赋值给b,此时b中存放的值也是0x0001,也就是说,在这个时候,b也指向了“刘亦菲”这个对象。

            当执行a=“小龙女”时,又在内存中创建了一个对象“小龙女”,假设“小龙女”所在的内存空间为0x0011,把该地制值赋值给变量a,此时a中的值为0x0011,此时a指向了“小龙女”这个对象。

            在java中,以下列代码为例:

      

       执行过程分析:

        main方法进栈,创建一个栈帧,在栈帧中创建了一个变量d,默认初始化为null。然后堆内存中,创建了一个对象,对象的所在空间地址值为0x0022.执行d.name="大黄"时,执行到d.name时,默认初始化为null,在方法区的常量区中创建了一个对象“大黄”,它所在的内存空间地址值为0x0002,然后把0x0002赋值给d.name,此时d.name指向了“大黄。”

            当执行到d.age时,默认初始化为0,然后显式赋值为2.

            对象初始化完毕。把对象的地址值0x0022赋值给d。

            程序继续往下执行,当执行到d.eat()时,eat方法进栈,开辟一个栈帧,然后,在栈帧中创建了一个变量你,然后赋值为10.




变量的命名:

1、必须由字母开头。

2、变量名中可以有数字、字母、下划线。

3、变量名尽量有意义。


虽然下划线命名和驼峰命名法都可以,但是python一般采用下划线命名的方法。

 

变量赋值

在python中支持:a,b=1,2的赋值写法,也支持a=b=c=1的写法

但是在java中,这种写法都不支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值