收集了一下php和java語言的相同或不同之處(來源在末尾有出處),已備後續使用做參考,在下一篇文章再詳細寫出,相同或者不同,可以讓我們快速入門java 或者php。
風.fox
java:純面向對象的語言,有人說過:java中一切皆對象!當然咯,人們都忘了java的八種基本資料類型:int、double、boolean、byte、float、 long、short、char。但是念在每個java每個基本資料類型都有包裝類(int的包裝類是integer)的基礎上,就姑且認為一切是對象吧。
php:即使用可面向對象的方式程式設計,又可使用面向過程的方式。這種兩種程式設計範式結合的語言代表了計算機語言以後的一個發展趨勢,在scala、golang、python中都有展現。
java:java是編譯型強類型的語言(或者說是靜态類型的語言),變量必須聲明類型,例如:“int i = 0;”這樣語言會比較嚴謹,不易出錯,對開發周期比較長的超大型項目的長期開發和維護比較有好處。java源檔案是需要java編譯器編譯成class檔案的,雖說從jvm的角度而言,嚴格來講java也可以稱之為“解釋型”語言,因為畢竟是jvm解釋了class檔案,但是畢竟還是經過了java編譯器的編譯,況且直接編譯成了二進制位元組碼檔案,是以就不較真了,算它是編譯型的把。
php:php是解釋型弱類型的語言(或者說是動态類型或者非靜态類型的語言),變量不必聲明類型,例如:“$i = 0;”這樣語言書寫起來會比較舒服,能夠讓人更專注于業務邏輯,利于提高開發效率。php檔案稱之為“php腳本檔案”,它沒有被編譯,而是直接由php解釋器來解釋的,是以它是非編譯的解釋型語言。
目前流行“半弱半強”的編譯期自動類型判斷的編譯型靜态語言。例如:golang、swift、scala等。
java和php的基本文法基本相同,其實大部分的語言的基本文法也都相同,但是他們還是有一些細微的差別:
php中的foreach語句和大多數語言一樣,就是中規中矩的foreach: foreach(arraysaselem){ $elem…} 。但是java卻根本沒有“foreach”這個關鍵字,取而代之的就是“for”,有人還給取了一個好聽的名字“增強for循環”,其實就是foreach語句:for(string elem:arrays){elem…}。
java中有此關鍵字,實際中,卻不用。而是用continue或者break來代替此關鍵件字;但是php中出現不多,但是正常使用。
java:
php:
目前這個goto語句實在是用的太少,不論什麼語言。。。
java是int、double、boolean、byte、float、long、short、char;
java變量必須聲明類型(java是編譯型強類型的語言)
php是與java類似的标量類型是:int、float、boolean、string,但是,php還把數組array和object也歸為了基本資料類型之中,不僅如此,resource和null也是。
php變量不必聲明類型(php是解釋型弱類型的語言),且$符号作為變量的字首
語言的基本類型并非都是int、double等标量類型,還可能包含集合等其他複合的類型或者特殊類型。例如,golang就把map數組作為了基本類型。
java中沒有,php獨有。此語句的作用是在其被調用的位置判斷并包含一個檔案。(這個檔案的内容往往都是可以複用的元件)有:include()、include_once()、require()、require_once()四種。
include:其被調用的位置判斷并包含一個檔案的内容。使用方法:include(filename)
include_once:和include功能一樣唯一的不同是如果包含了檔案,則不再執行include_once(),否則,必須包含該檔案。
require:很大程度上與include相同,但是有兩點不同:1、無論什麼條件,不論require包含的位置都會出現。例如:if(){require(…)}else{require(…)}無論是在if語句,還是else語句中,都會出現require的檔案。2、require()出錯時,腳本停止執行,而include将會繼續執行。
require_once:確定被包含的檔案隻包含檔案一次。
java中沒有,需要自己定義。例如:public static final string sunday = “sunday”;
php中常用的有兩種常量,常用的有:define(“pi”,31.4)、和 const sunday = “sunday”;與java有對比意義的是第二種,與c語言類似的是第一種;還有一種常量是定義php系統級别的常量,定義完成中,可以在程式中直接使用。例如:要檢視目前php的版本:echo php_os。 “php_os”就是系統級别的常量
java和php中的異常處理 幾乎相同
目前php所使用的主流程式設計範式也是oop,java和php在此特性上極為相似,文法也極其相似,但是還是有略微不同:
調用方法或者屬性的符号:
java和大部分的語言一樣,就是用點“.”。例如:object.name; object.getname();
php使用的是箭頭“->”,例如:object−>name;object->getname();
java和大部分語言一樣,就是用點“.”。例如:object.createname(); object.name;
php使用的是“::”。例如:object::createname(); object::name
java中是命名為“com.ryugou.space” 的package。
導入其他的類:import “com.gouryu.space.object”; //包名小寫,類名大寫。
php是命名為“com\ryugou\space”的namespace,這倆關鍵字作用可認為相同。
導入其他的類:use”com\gouryu\space\object”;
java包引用:import packagename.*;
php中沒有這個功能
java中是和類名字相同的函數,無傳回值;java中無析構函數
php中是通過名稱_ construct()來識别構造函數的;文法如下:function function([argument1,argument2, …])。php中還有類似于 c++的析構函數,用于當所用對象銷毀時來調用。析構函數的名字必須是 destruct();文法為:function _destruct()。注意:無參數。
java:private、protected、default、public; public,private不必多說;default表示同一個包内可見,protected表示同一包内的類和所有子類可見,什麼不都寫表示“default”。
php:private、protected、public;private、public不必多說;protected表示的所有子類可見(php中無包的概念,是以。。。),注意:什麼都不寫表示“public”。
java支援通過方法重載實作多态。
php不支援,且可能永遠都不支援。
類的聲明:java的class可以定義為public,此時檔案名要與公共類完全一緻,php中沒有這個功能
如果不包含公共類,則class與php聲明一樣
靜态變量修飾符 static(兩者同)
靜态初始化器 static{}(php沒有)
最終常量 final(兩者同) (建議用static代替)
易失變量 volatile(php沒有)
抽象方法 abstract(兩者同)
靜态方法 static (兩者同)
最終方法 final(兩者同)
本地方法 native(php沒有)
多線程同步方法 synchronized(php沒有)
java有傳回值類型,
php必須有關鍵字function,php可以由傳回值類型,也可以省略
java中的main(string args[]),php中沒有
值調用,引用調用
兩者幾乎相同
java和php都支援 //或/**/
java通過jdbc來通路資料庫,通過不同的資料庫廠商提供的資料庫驅動友善地通路資料庫。通路資料庫的接口比較統一。
php通過pdo來通路資料庫,已經和java類似,通路資料庫的接口比較統一。
兩種語言都可以使用oop系統設計
php和java都支援跨平台
php最經典的組合就是:php + mysql + nginx/apache。非常适合開發中小型的web應用(大型應用也可以開發),開發的速度比較快。而且所有的軟體都是開源免費的,可以減少投入。
java的web應用伺服器有免費tomcat、jboss等,如果需要更好的商業化的服務有:web sphere和web logic。
java開發的程式,最後使用者拿到的是隻是一些編譯好的class類,無法看到完整的源代碼,安全性高。
php開發的程式,代碼是開源的,也有可以把軟體源碼加密的商業軟體
兩者幾乎差不多。java編譯的源碼可以反編譯出來
php和java幾乎都一樣
各有千秋 不好比較
1:java是半編譯語言,php是腳本語言。
2:java使用封裝繼承,最小的機關是類,php作為腳本,最小機關就是語句,用兩者輸出hello world就知道了,是以java文法比較嚴格,而php很靈活
。
3:java是自動記憶體配置設定回收,php是一次建立一次銷毀。
4:java可以常駐記憶體,多線程;php無法常駐記憶體,也沒有線程的概念。
5.php調用父類的構造函數不是使用super(),而是 parent
php使用parent表示父類,這點同java的super
6.php有析構函數,類似java的finalize方法。例如:
7.php使用this表示當對象,這點同java的this
8.php使用self表示目前類,java沒有這個關鍵字,也不需要使用表示類
9.php在調用本類中的靜态變量和方法時,必須使用self關鍵字和::,
java中直接使用 “.”
如果不在本類中則直接使用類名:
以上部分來源于
<a href="http://blog.csdn.net/i6448038/article/details/50352278">http://blog.csdn.net/i6448038/article/details/50352278</a>
<a href="http://www.xuexila.com/baikezhishi/536806.html">http://www.xuexila.com/baikezhishi/536806.html</a>
<a href="http://www.myexception.cn/php/1955258.html">http://www.myexception.cn/php/1955258.html</a>
<a href="http://blog.163.com/lvshutao@126/blog/static/16463746720142212211595/">http://blog.163.com/lvshutao@126/blog/static/16463746720142212211595/</a>