本人写了一段时间java了,最近半年在写python,遂想将其使用中的共同点和异同点整理出来,方便自己和大家学习。
两者的本质区别,请参考如下别人写的帖子:
https://blog.csdn.net/sinat_30603081/article/details/78489261?locationNum=1&fps=1
https://blog.csdn.net/qq_17635843/article/details/77880694
本人不是特别清楚,只大概知道java 是强类型语言,python是弱类型语言,java 的运行速度和效率高于python(主要是它只能运用于单核机器),原谅渣渣的我
使用比较:
- 基础语法篇:
先个来一个hello world 镇镇楼:
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello World");
}
}
if __name__ == ‘__main__‘:
print("Hello World")
此处大家已经明显感觉到了 java是通过花括号({ })和分号来区分代码的,而python通过代码缩进来保障这一点的,所以大家在写python代码时一定得注意行缩进,要不然后期代码会报错的,这点也是python异于别的语言的一个特点。
2.修饰符:
Java的: public
, protected, private
Python的:双下划线“__” 表示私有
3.数据类型:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。数字类型包括:byte,short,int,long,float,double,
Python:Number(数字),String(字符串),List(列表),Tuple(元组),Set(集合),Dictionary(字典) 这里python语言比起java 有些特殊,如List ,Tuple,Set等在java为内置的集合类,而在python却是一种数据类型,python的数字类型支持: int、float、bool、complex(复数)这四种类型,此处大家需要注意一些东东:python3 和 python2在int类型上有个区别,那就是python2 支持支持整形和长整型两种数字类型,而python3 只有整形,还有一个问题很重要很重要的,那就是python2 本身是没有布尔类型的,它用0表示False,用1表示True,到了python3,把True,和Fale作为了关键字,但是它们的值还是0和1,仍然可以进行加减。剩下的String
字符串类型和java中的String 类相似,至于
List(列表),Tuple(元组),Set(集合),Dictionary(字典)
我会在后续的java 集合类内会做对比的。
4.运算符:
算数运算符:
Java 和python 支持基本的 + - * /
以及 % 运算,特殊的是java 还支持
自增 ++ 以及自减 – 运算,而python还支持一些幂运算 ** ,以及取整除运算 //,这些运算java只能通过调用内置大的一些方法和api才能达到对应的效果
比较运算符:
二者均支持:== != > < >=
<= 这6个运算符
位运算符:
二者均支持:& | ^ ~ >> <<
这6个运算符
逻辑运算符:
Java支持的逻辑运算符为: &&
|| !
Python支持的逻辑运算符为:and or not
特有篇:
最后 python还支持成员运算符
:in 以及 not in这是java所没有的 和身份成员运算符:is 和 is not
运算优先级请看如下截图(出自菜鸟教程):
Python篇:
Java篇:
5.循环篇:
Java篇:
支持如下三种循环用法:
- while 循环
- do…while 循环
- for 循环
其中 while的用法:
while( 布尔表达式 ) { //循环内容 }
do……while 用法为:
do {
//代码语句
}while(布尔表达式);
for 的用法:
for(初始化; 布尔表达式; 更新) { //代码语句 }
python篇:
- while 循环
- for 循环
其中 while的用法:
while 判断条件:
语句
for 的用法:
for 变量 in 序列:
语句
总结:在日常使用中for是使用最多的循环,此处java 和 python 中都有很多很经典的用法,大家需要很好的掌握,请自行学习别的帖子,此处我不做过多陈述。
条件控制:
Java与python都支持if……else…… 语句,还有同时支持 if...else if...else 语句,只不过 python的这个语句表达式是这样的 if...elif...else ,逻辑判断结构都是一样的只是python的这个表达式较java 比较特殊罢了。
当然 java除了支持if……else 这样类似的结构外还支持 switch …… case结构,此处我也不做过多陈述了
6.异常处理:
Java 篇:
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
抛出异常方法:
throw/ throws 异常名
Python篇:
try:
<语句> #运行别的代码
except <名字>:
<语句> #如果在try部份引发了‘name‘异常
except <名字>,<数据>:
<语句> #如果引发了‘name‘异常,获得附加的数据
else:
<语句> #如果没有异常发生
抛出异常方法:raise [Exception [, args [, traceback]]]
此处java 与 python的捕获异常方法类似,只不过一个捕获异常使用 catch,一个使用except罢了。此处python更灵活点,多了个else语句。
7.面向对象:
类的声明:
Java:
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
Python:
class Dog:
breed = ""
age = 0
color = ""
def barking () :
pass
def hungry () :
pass
def sleeping () :
pass
此处我为了找个对应的例子然后写了个很挫的例子,就是为了让大家可以更清晰python的举例
构造方法:
Java的:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
Python的:
class Puppy:
def __init__(self,name):
pass
其中的 __init__ 就是python的构造方法
创建对象:
Java 篇:
public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数:name
System.out.println("小狗的名字是 : " + name );
}
public static void main(String []args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}
Python 篇:
class Puppy:
def __init__(self,name):
print ("小狗的名字是 : %s" % name)
if __name__ == ‘__main__‘:
puppy = Puppy("tommy ")
权限修饰符:
这个时候大家会问,java 有 public ,private 等权限修饰符,python有吗,我得郑重说有呀,必须有呀,只不过python 跟java 类似假如不显示声明的话默认都是公共的,假如在属性和方法面前加上”__”(此处是两个下划线) 时表示的就是私有属性或者私有方法了。
方法&函数:
Java 中的方法对应python中叫函数,别问我为啥,我就看别的文档都这么写的,声明方法:
Java 篇:
public /private/protected 返回类型 方法名(参数){
方法体
}
Python 篇:
def __ 或者此处啥都不写 方法名(参数与):
方法体
基本上与java的类似就是多了个 def 罢了
继承:
Java 篇:
class 父类 { }
class 子类 extends 父类 { }
python篇:
class 派生类 (父类)
这里你会发现其实java 和 python就是省略了一个 extends ,此处我大概点拨一下一个东东,那就是java 只能支持一个一个的继承,而python 很牛逼呀,支持多重继承,这点简直碉堡了
8.集合的应用:
- 列表:
Java 的列表声明方法:
List<String> list=new ArrayList<String>(); //此处举了个存储类型为String的列表
Python 的列表:
List = [] #声明是不是很简单,感觉跟java的数组声明有些像
- 字典(map):
这里的叫法不一样,python中将键值对 key – value 叫作 字典,而java中叫作Map,但实际的存储方式其实都是键值对
Java 声明办法:
Map<String,String> map = new HashMap<>(); //声明了一个键值都为String类型的map
Python声明办法:
Dic = {} #依然简单粗暴
- set
java 声明方法:
Set<String> set = new HashSet<>(); //声明一个类型为String的set
Python声明办法:
set () #此处需要记住这里必须得有set 这个单词在,大小写也记住,要不然解释器也不知道你声明的是啥玩意
至此,我的总结暂时完了,总结的都是些很初级的东西,主要说我本身就很初级~ 但是还是怀着互相学习的精神来写了我这篇处女帖,但我真心不知道咋排版。原谅渣渣得我,我也在努力不渣!有谁有啥问题,可以帖子留言~假如真有问题我一定会改的!
原文地址:https://www.cnblogs.com/Solomon-Kane-zm/p/10092243.html