java运算符特点_java和python语法特点比较----运算符,打印,基本特性

基本对比

1、python是一个缩进检查的语言,java不是

在python中每一个空白符号,都会被python解释器所识别,用于定义代码的层次结构,类似于java当中的大括号({})

例:

1 //java代码

2 if(a=b){3 if(a>2){4 i+=2;5 }else{6 i+=1;7 }8 }else{9 i--;10 }

1 #python

2 if(a=b):3 if(a>2):4 i=i+2

5 else:6 i=i+1

7

8 else:9 i=i-1

在python中的空白字符有制表符(TAB),空格,换行符(\n),回车(\r),,虽然4个空格的长度和一个制表符是相等的,但是python解释器并不认为一个制表符等于4个空格,所以在缩进时应注

意一个TAB+4个空格的缩进,和4个空格+1个TAB的缩进是不同的,为了避免这个问题,建议将自己的IDE(代码编辑工具)中的TAB改为4个空格,在编写代码的时候统一使用空格。

2、注释

单行注释

1 //我是一个java单行注释2 #我是一个python单行注释

3

4 /*

5 * 我是一个java多行注释

6 */

7

8 '''

9 我是python多行注释

10 '''

11

12

13 /**

14 * 我是java文档注释

15 *

16 */

17

18 python !! 卧槽,我没有文档注释

java中的注释主要使用 //、/* 和 /**。python中主要使用 #、""",''',其中""" 和 '''是相同的python并没有文档注释

3、java强类型,python弱类型

java是个强类型语言,即声明变量的时候,必须指定类型。python并不是一个强类型语言,在声明变量时是不需要指定类型的。

注意这里不需要指定类型是指变量的声明不需要指定类型,并不代码python中就没有类型,熟悉java的同学应该知道,变量是显式的指定类型,而字面量的类型是隐式指定的。

例如:

String str="hello word"

//hello word"这个字面量,隐式的属于String类型,而str这个变量被显式声明为String,

该代码在python中应该这样书写

str="hello word"

#"hello word"属于String类型,但是,str的类型并没有显式声明,他可以根据字面量的值在运行时动态决定这个变量的类型。

以上代码可以带来很大的方便性,例如在声明一个浮点数时,在java中需要根据长度,事先定义这个数时float还是double,而在python中可以根据这个数的具体数值,在运行时决定长度。

同时以上代码的写法也带来了一些排错上的问题,在一段程序出现异常的时候,拿到的变量可能并非是你需要的那个类型的变量。java程序员在进行理解的时候可以认为所有的变量都被声明为Object类型了。

4、运算符

4.1.算术运算符

运算符描述示例

+

加法运算,将运算符两边的操作数增加。

a + b = 31

-

减法运算,将运算符左边的操作数减去右边的操作数。

a – b = -11

*

乘法运算,将运算符两边的操作数相乘

a * b = 210

/

除法运算,用右操作数除左操作数

b / a = 2.1

%

模运算,用右操作数除数左操作数并返回余数

b % a = 1

**

对运算符进行指数(幂)计算

a ** b,表示10的21次幂

//

地板除 - 操作数的除法,其结果是删除小数点后的商数。 但如果其中一个操作数为负数,则结果将被保留,即从零(向负无穷大)舍去

9//2 = 4 , 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0

4.2、比较运算符

运算符描述示例

==

如果两个操作数的值相等,则条件为真。

(a == b)求值结果为 false

!=

如果两个操作数的值不相等,则条件为真。

(a != b)求值结果为 true

>

如果左操作数的值大于右操作数的值,则条件成为真。

(a > b)求值结果为 false

<

如果左操作数的值小于右操作数的值,则条件成为真。

(a < b)求值结果为 true

>=

如果左操作数的值大于或等于右操作数的值,则条件成为真。

(a >= b)求值结果为 false

<=

如果左操作数的值小于或等于右操作数的值,则条件成为真。

(a <= b)求值结果为 true

4.3、赋值运算符

运算符描述示例

=

将右侧操作数的值分配给左侧操作数

c = a + b表示将a + b的值分配给c

+=

将右操作数相加到左操作数,并将结果分配给左操作数

c + = a等价于c = c + a

-=

从左操作数中减去右操作数,并将结果分配给左操作数

c -= a 等价于 c = c - a

*=

将右操作数与左操作数相乘,并将结果分配给左操作数

c *= a 等价于 c = c * a

/=

将左操作数除以右操作数,并将结果分配给左操作数

c /= a 等价于 c = c / a

%=

将左操作数除以右操作数的模数,并将结果分配给左操作数

c %= a 等价于 c = c % a

**=

执行指数(幂)计算,并将值分配给左操作数

c **= a 等价于 c = c ** a

//=

运算符执行地板除运算,并将值分配给左操作数

c //= a 等价于 c = c // a

注意:python中没有++,-- ,这两种自增长运算

4.4、逻辑运算符

运算符描述示例

and

如果两个操作数都为真,则条件成立。

(a and b)的结果为False

or

如果两个操作数中的任何一个非零,则条件成为真。

(a or b)的结果为True

not

用于反转操作数的逻辑状态。

not(a and b) 的结果为True。

4.5、位运算符

运算符描述示例

&

如果它存在于两个操作数中,则操作符复制位到结果中

(a & b) 结果表示为 0000 1100

dedb6ef52da8ecdb10035a3cfa3bff6f.png

如果它存在于任一操作数,则复制位。

(a

dedb6ef52da8ecdb10035a3cfa3bff6f.pngb) = 61 结果表示为 0011 1101

^

二进制异或。如果它是一个操作数集合,但不是同时是两个操作数则将复制位。

(a ^ b) = 49 (结果表示为 0011 0001)

~

二进制补码,它是一元的,具有“翻转”的效果。

(~a ) = -61有符号的二进制数,表示为1100 0011的补码形式。

<<

二进制左移,左操作数的值由右操作数指定的位数左移。

a << 2 = 240 (结果表示为 1111 0000)

>>

二进制右移,左操作数的值由右操作数指定的位数右移。

a >> 2 = 15(结果表示为0000 1111)

4.6、成员运算符

运算符描述示例

in

如果在指定的序列中找到一个变量的值,则返回true,否则返回false。

-

not in

如果在指定序列中找不到变量的值,则返回true,否则返回false。

-

4.7、身份运算符

运算符描述示例

is

如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False。

is not

如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False。

-

具体优先级这里不做对比,建议大家在使用的时候以括号为主。

补充:python中是支持字符串的乘法的。

5、system.out.print() VS print()

Java中如果你使用过log4j或者longback一定对他们打印日志时的方便所倾倒,在log4j中打印日志,可以使用占位符的方式进行字符串拼接,所幸,python中本身从字符串层面就支持这种方式。

例如:

java代码

logger.info("My name is {} , {} is a scientist","sivern","LuBenWei")//log4j可以根据占位符的方式,填充字符串。

python代码

print "My name is %s , %s is a scientist !" %("sivern","LuBenWei")//%s代码使用一个字符串进行占位

当然python还包含一些其他的占位符%r,%s,%d等

%r 和 %s 有什么不同?

%r 用来做 debug 比较好,因为它会显示变量的原始数据(raw data),例如一个中文 “是”使用%r进行占位输出,输出的会是他的编码。

>>> print "%r" %("是")'\xca\xc7'

>>> print "%s" %("是")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值