本篇文章给大家谈谈python与java的区别与联系,以及python和java的本质区别,希望对各位有所帮助,不要忘了收藏本站喔。
Source code download: 本文相关源码
Java与Python对比
1、java是静态语言,python是动态语言,也就是java定义变量时需要指定变量类型,而python则不需要指定变量类型。
2、java中有8种基本类型(byte.short.int.long.float.double.char.boolean)和引用类型(类,接口,求组);python中数据类型有数值型(整型,浮点型,布尔类型,复数类型),字符串(str),列表(list),元组,集合,字典python绘制弧形的函数。
3、java和python运算符基本一致。
4、java和python导入模块(类)的方法基本一致,都是import,不一样的是,python可以按需导入。
5、java和python中都有if相关,while相关,for相关流程控制语句,不一样的是,在python中elseif写成elif,而且python中没有swicth语句。
6、在python中,打印拼接字符串,要用str函数将不是str的类型值转换才能打印,否则只能用print(a,b)这种方式打印;而在java中可以使用加号直接拼接字符串。
7、定义方法方面,在python中用def定义,也就是直接def name()来定义方法,并且方法块是靠4个空格的缩进来区分的,并不是采用java中用 {} 区分;另外在python中定义匿名函数的方式是lambda(形参):(方法体),并且python中包含专用的filter(函数名,数据名)过滤函数和map映射函数(函数名,数据名)。
8、面向对象方面,java和python都支持,并且都支持封装,继承,多态等特性。在python中定义类方式为:class 类名(父类类名1,父类类名2),也就是这种方式定义并继承父类。要注意的是python支持多继承!而java中只能通过接口来实现多继承!在python中,当继承多个父类,并且这多个父类中有相同的方法时,子类中实例继承的是继承列表中最右边的父类方法。python中因为没有类型检测,所以多态性表现的更加灵活,只要具有同样的属性或方法,都可以用多态思路进行调用,这点不像java中,必须继承同一个父类才可以采用多态。
9、python中所有方法都是def开头,并且类中方法参数中必须包含self,self个人理解也就相当于java类中的this。python中类构造方法统一为def__init__(self,变量名),并且构造方法中涉及父类的构造方法调用跟java差不多。
10、python中实例变量跟java中是的实例变量差不多,唯一区别就是python中是在构造函数中定义的,方式为self.变量名=变量名。而java中是直接在类内部定义的。
11、python中实例方法跟java中实例方法也差不多,区别也就是格式不一样而已。
12、python中类变量和java中的类变量也差不多,访问方法也差不多,区别就是都是在类中直接定义,而java中需要加static关键字,而python不需要加关键字。
13、python中类方法跟java中的类方法也差不多,访问方法也差不多,区别就是python中需要给类方法加上个注解@classmethod,而java中也是加上static关键字。
14、python中私有化关键字为__,而java中为private,python中私有化属性,可以通过定义get方法和set方法,然后通过实例.get/set()来访问。也可以通过定义特殊属性封装方法来直接通过实例.属性名来使用。特殊封装方法为:def 类名(self)(此方法需要加上@property注解)=get()方法。def 类名(self,变量名)(此方法需要加上@变量名.setter注解)=set()方法。
15、异常处理方面:在python中是使用try-except-finally处理异常,而java中用try-catch-finally处理异常,自定义异常跟java差不多,区别就是格式不一样而已。抛出异常在python中用raise 异常类(异常消息),而在java中用throw 抛出异常。
16、python中模块工具也就是java中的类工具,用模块类工具,就要先import导入相关模块。
Java:
public class Person {
//1.属性(普通属性)
public int age = 10;
//1.属性(类属性)->所有对象共享,随着类的加载而记载
public static String name = "小动物";
//2.普通方法(对象)
public void eat() {
System.out.println("动物吃东西");
}
//2.静态方法(类)->当方法体内没有调用到任何属性时,用静态方法,无需new对象
public static void play() {
System.out.println("动物玩玩");
}
//3.构造方法
public Person(int age) {
this.age = age;
}
//4.普通代码块
{
System.out.println("我是父类普通代码块");
}
//4.静态代码块
static {
System.out.println("我是父类静态代码块");
}
//5.内部类(略)
Python:
# 类定义
class people:
# 1.属性(类属性)->无需实例化对象,直接通过类名即可访问
hand = '两只手'
leg = 2
gender = '男'
# 1.属性(私有类属性)->私有属性在类外部无法直接进行访问,可以通过内部方法进行访问
__weight = 0
# 2.定义构造方法(定义在构造函数里的属性是成员属性)
def __init__(self, n, a, w):
self.name = n # 1.属性(成员属性)
self.age = a # 1.属性(成员属性)
self.gender = w # 1.属性(成员属性)->若静态属性与普通属性重名,优先访问成员属性,成员属性屏蔽类属性
# 3.普通方法(对象)
def speak(self):
print("%s 说: 我 %d 岁 " % (self.name, self.age))
# 3.普通方法(私有)
def __speak(self):
print("我是私有方法")
# 3.类方法
@classmethod
def eat(self):
print("我是类方法")
# 3.静态方法
@staticmethod
def study(self):
print("我是静态方法")
# 实例化类
p = people('runoob', 10, 30)
p.speak()