1、因为工作的原因,最近使用了三个多月的java作为主力语言。很早之前在菜鸟教程也看过java文档两遍,但实践少,处于能看懂写出来不流畅的状态(对于java必须要略懂,不能能看到就头疼跳过,因为现在百度随便搜个解决方案,大部分是java的文章,如果不能看懂,就没办法把它翻译成自己的python来实现了)。后来花大精力专门学习python的oop和设计模式,再来使用java,就更流畅了,主要注重掌握一些思想,遇到具体的解决问题方案,可以百度复制现成的东西来用很方便,java的网上文章比python多得多的多。通过使用java后,反过来对python程序编写也有一些帮助和影响。

以下是python和java的一些对比。

java的static属性    --->  py的类属性

java的static方法    --->  py的类方法    py需要加入@classmethd,   staticmehod和classmethod都差不多,在classmethod中访问A的类属性用cls.xx ,staticmethod中一般不访问类属性才使用staticmethod,如果staticmethod方法还非要用类属性可以用A.xx。

java的public方法    --> py的 func()

java的protected方法 --> py的 _func()

java的private方法   ---> py的 __func()

java的abstract抽象类 抽象方法  --->     from abc import ABCMeta, abstractmethod

                                 __metaclass__ = ABCMeta
@abstractmethod
def _getBaiduHeaders(self):pass

java的interface   ---> py没有,py用鸭子类,  要想规范 ,需要使用 zope.interface包。

java的this ---> py的self,但有点不同的是 ,表示实例属性/方法时候python必须写self,java在少数情况下才必须用this,所以python代码中的self明显比java的this出现多的多,java中除了声明为static属性/方法的是属于类属性/方法,没被static修饰的属性都是默认带this的实例属/方法。

java的变量和方法会有很多前缀,我的一些只学python朋友,非常的排斥java,觉得加这么多前缀太罗嗦了,但这样好处是所有意图都是显式的,人人都注重这些用途,想无视都没办法。py是隐式的,如果一意孤行不学习优秀的写法长期埋头自己搞自己的,会出一些问题,看见一个笨瓜写的python所有类的代码就是全部都是公有实例方法,这样造成理解和ide补全都很差劲。其实python也有静态方法/属性 公有、私有、保护这些概念的,比较隐式。如果不理解java什么时候加static、 final 、private、protected、public那写python也会很糊涂,造成写的python类里面全都都是公有实例方法和属性。

2、另外关于python java整体的区别,我的一些感受是:

1、java更易理解,所有变量声明都有类型,python的如果自定义类的对象时由函数深层次返回的,返回对象的函数中如果没有写注释rtype,需要一级一级的去找,才能确定对象的类型。另外就是,如果变量命名不规范,阅读时候难以看清楚类型,比如有人喜欢把变量命名为xx_json,但让它表示的却是一个字典,初看起来会造成误会。

2、java性能好一些,只要是静态语言都比动态语言性能好,这不用说了。

3、java强制oop,团队风格会比较统一,团队写的东西复用性更强。py的风格比较自由一些,团队协作起来比java差一些。

4、java比python的有些地方复杂一些,比如简单的读写文件比python的步骤和代码多多了。但复杂业务,注重的解决流程,其实都还差不多,python也节约不了太多的思考。

5、idea对java的支持比pycahrm对py的支持更加完美,由于是动态语言很灵活,对于python,ide也没办法完全知道我们的想法和意图。

6、java有编译过程,低级错误会直接报错,不会等到程序运行到那一行才会报错,节约了很多时间。python没有编译过程,运行时确定,如果项目太长很耗时,发现一些很明显的低级错误就要花更长的时间了。好在python在pycahrm中可以使用inspectcode功能来进行静态检查,可以提前发现一些错误,但与java的编译来检查错误,还是有差距。

7、java一切以类为基本单元,最简单的打印helloworld都需要写类,有时候对某个问题只需要做个简单的测试验证,java起手式太多,没有python便捷。

3、总体java比python好,话不能说的太死太绝对留下把柄,所以结论是 二者各有优点。

java的this static public protected private abstract interface 在python的对应,java python一些区别的更多相关文章

  1. JAVA修饰符类型(public,protected,private,friendly)

    转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...

  2. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  3. [学习笔记]Java的public,protected,private,缺省的作用域

    0.引言 Java的访问指示符public,protected,private,缺省可以用来修饰类和方法. 1.作用域如下 具体如下: 作用域       当前类    同一package   子孙类 ...

  4. Java学习笔记(4)----Public,Protected,Package,Private修饰符可见性

    Java修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...

  5. C++中public,protected,private派生类继承问题和访问权限问题

    C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...

  6. 【转载】C++中public,protected,private访问

    第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...

  7. php public protected private属性实例详解

    php 类中函数和类变量都有三个属性:public protected private,具体什么时候使用什么属性好纠结,特意找了个实例,这样看起来更清晰. public 表示全局,类内部外部子类都可以 ...

  8. C++ 类访问控制(public/protected/private)

    第一:private, public, protected 访问标号的访问范围. private:只能由1.该类中的函数.2.其友元函数访问. 不能被任何其他访问,该类的对象也不能访问. protec ...

  9. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

随机推荐

  1. 在Word 2007中添加参考文献及其引用的方法

    以前写文章的时候忽略了在文章中添加参考文献及其引用的方式,文章各式显得不太正式,在网上进行了相关搜索,将方法整理如下: 1.将光标停留在需要插入文献的地方[1],选择菜单栏上的"引用 -&g ...

  2. zookeeper快照清理

    从3.4版本以后,在配置文件中有2个参数分别设置快照的清理.默认没有打开. autopurge.purgeInterval=1 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0 ...

  3. ansible wc -l 对结果值取大小的操作

    [root@localhost ansible]# cat zss.yml - hosts: zss tasks: - name: step1 ping: - name: step2 install ...

  4. 史上最全 Css Hack汇总

    前言 每次要找个东西都得慢慢去翻自己收集的一些东西,每次都是那么花时间,再加上有时存放时间久远就忘了当时是存在哪了,为了方便查询及阅读,决定把一些Css Hack 收集起来... 1.区别不同浏览器, ...

  5. linux查找文件夹命令

    查找命令: 查找根目录下查找文件夹名称叫www.91cnm.com的目录地址 find / -name www.91cnm.com -d 1 查找/var/www/目录下叫index.php的文件 f ...

  6. Linux强制杀进程命令行工具

    需求, 有时候我们会有手动启动程序, 但是又在后台, 没有像服务那样有start, 和stop的程序, 这时候需要用强制杀进程方式 涉及工具, awk, sed, xargs, kill 需求一: 已 ...

  7. Mysql 配置文件和目录的合理分配

    记得给权限呀, 权限呀, 都是泪 多实例 单实例 配置文件 [client] port = 3301 socket = /data/mysql3301/data/mysqld3301.sock [my ...

  8. Pandas 读取文本格式数据

    title 其实书中说的我认为不够全,因为公司里面现在主要用stata和spss,暂时还没有用到sas,excel也很少用 那么读取文件的方式,因为有人已经总结了,我就偷过来算了 对应不同的文件类型有 ...

  9. Oracle 数据泵使用详解

    数据泵使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端 ...

  10. 2017年第八届蓝桥杯C/C++B组省赛题目解析

    一. 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优 ...