Python基础 VS JAVA基础
由于Python与Java都属于面向对象的编程语言,所以这两种语言在很多方面有共通之处;
但是Python属于弱语言,Java属于强语言,这也造成了两种语言在有些地方又存在差异性;
接下来,我们来盘点Java与Python两种语言异同之处:
1、变量:
Java:八大基本类型及引用数据类型
Python:基本类型(int、float)及引用数据类型
2、运算符:
java:很多(这里用******代替)
Python:******、**(幂运算)、//(整除)
注意:在这里Python中*,可以代表重复运算
支持Python语句同步运算
3、引用类型
Java:List、set、map
Python:List(列表)、tuple(元组)、dict(字典)
4、函数
Java:
1.1、语法
public(修饰符) static(修饰符) void(返回值类型) add(方法名) (String(参数类型) s(形参))
1.2、可变参数
可变参数(*args,**kwargs)
1、Xxx是类型,一旦确定,里面只能填写一种类型的参数,当然个数也可变
Python:
1.2、语法
def add(方法名)(s(形参))
1.2、可变参数
可变参数(*args,**kwargs)
1、支持基本类型的可变
2、支持引用类型字典的可变
3、可同时支持两种
5、文件
Python:
分两块
1、文件内容的操作(交给文件对象完成)
2、文件本身的操作(交给系统的模块去完成)
Java:
文件内容和本身相关的操作,都交给创建的文件对象去完成
6、面向对象(封装)
Python:
0、通过内置的__new__()方法,进行对象的内存分配
1、通过内置的__init__()方法,进行对象的初始化
2、私有属性的定义(__属性名)
3、魔法方法(Python解析器编译时默认加上的方法) __str__()
Java:
1、通过构造方法,进行对象的初始化
2、私有属性的定义(Private修饰属性名)
3、Object的方法 toString()
7、面向对象(继承)
Python:
1、支持单继承、多继承
2、方法重写的概念(只要方法名相同,那就是方法重写)
注意:子类重新定义了__init__()方法后,父类的初始化方法就失效了;
如果想调用父类的方法可以使用super().__init__()
Java:
1、只支持单继承,但是有多实现
2、方法重写和方法重载那是两个不同的概念
注意:子类重写父类的构造方法时,会默认在第一行加上Super(0,自动调用了父类构造方法
8、面向对象(多态)
Python:
isinstance() 判断当前对象的类型
issubclass() 判断当前对象是不是某个类的子类
java:
instanceof 判断当前对象是不是某个类或者某个类的子类
9、异常
Python:
语法:
Exception
try{
...
}catch(Exception e){
...
}finally{
...
}
java:
语法:
Exception
Error
try:
...
except Exception as e:
...
finally:
...
表格形式体现:
这里只总结不同之处,相同之处忽略,语法的不同这里也忽略
| Python | Java |
基本变量 | 主要int、float | 八大基本数据类型 |
运算符 | **(幂运算)、//(整除) | 省略.... |
引用类型 | List(列表)、tuple(元组)、dict(字典) | List、set、map |
函数 | 可变参数(*args,**kwargs) 2、支持引用类型字典的可变 3、可同时支持两种 | 可变参数(xxx ...args) Xxx是类型,一旦确定,里面只能填写一种类型的参数,当然个数也可变 |
文件 | 分两块 1、文件内容的操作(交给文件对象完成) 2、文件本身的操作(交给系统的模块去完成) | 文件内容和本身相关的操作,都交给创建的文件对象去完成 |
面向对象(封装) | 1、通过内置的__init__()方法,进行对象的初始化 2、私有属性的定义(__属性名) 3、魔法方法(Python解析器编译时默认加上的方法) | 1、通过构造方法,进行对象的初始化 2、私有属性的定义(Private修饰属性名) 3、Object的方法 |
面向对象(继承) | 1、支持单继承、多继承 2、方法重写的概念(只要方法名相同,那就是方法重写) | 1、只支持单继承 2、方法重写和方法重载那是两个不同的概念 |
Java面向对象的封装代码
package com.javaxl.p1; /** * @author 小李飞刀 * @site www.javaxl.com * @company * @create 2019-07-04 11:05 */ public class Demo { public static void main(String[] args) { new A(); new B(); new C(); new D(); } } class A{ A(){ System.out.println("A"); } } class B extends A{ } class C extends A{ C(){ System.out.println("C"); } } class D extends A{ D(){ super(); System.out.println("D"); } }
结果:A、A、A、C、A、D
Python面向对象的封装代码
class A: def __init__(self): print('A') class B(A): pass class C(A): def __init__(self): print('C') class D(A): def __init__(self): super().__init__() print('D') A() B() C() D()
结果:
A、A、C、A、D
说明:Python的子类__init__方法重写时,不会默认在第一行调用父类的__init__方法
over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有