• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
core-sivern
博客园    首页    新随笔    联系   管理    订阅  订阅

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
如果它存在于任一操作数,则复制位。 (ab) = 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" %("是")
是

 

posted @ 2018-03-06 15:47  core-sivern  阅读(91)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3