編程范式:
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的基本語法基本相同,其實大部分的語言的基本語法也都相同,但是他們還是有一些細微的區別:
1、foreach語句:
PHP中的foreach語句和大多數語言一樣,就是中規中矩的foreach: foreach($arrays as $elem){ $elem...} 。但是java卻根本沒有“foreach”這個關鍵字,取而代之的就是“for”,有人還給取了一個好聽的名字“增強for循環”,其實就是foreach語句:for(String elem:arrays){elem...}。
2、goto語句:
Java中有此關鍵字,實際中,卻不用。而是用continue或者break來代替此關鍵件字;但是PHP中出現不多,但是正常使用。
Java:
less:
for(int i=0;i<10;i++)
{
........
break less;
}
PHP:
less:
for($i=0;$i<10;$i++)
{
........
goto less;
}
目前這個goto語句實在是用的太少,不論什么語言。。。
3、基本數據類型:
Java是int、double、boolean、byte、float、long、short、char;
php是與Java類似的標量類型是:int、float、boolean、string,但是,php還把數組array和object也歸為了基本數據類型之中,不僅如此,resource和NULL也是。
語言的基本類型并非都是int、double等標量類型,還可能包含集合等其他復合的類型或者特殊類型。例如,Golang就把map數組作為了基本類型。
4、文件包含語句:
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:確保被包含的文件只包含文件一次。
5、常量:
Java中沒有,需要自己定義。例如:public static final String SUNDAY = "Sunday";
php中常用的有兩種常量,常用的有:define("PI",31.4)、和 const SUNDAY = "Sunday";與java有對比意義的是第二種,與C語言類似的是第一種;還有一種常量是定義PHP系統級別的常量,定義完成中,可以在程序中直接使用。例如:要查看當前PHP的版本:echo PHP_OS。 “PHP_OS”就是系統級別的常量
OOP特性:
目前PHP所使用的主流編程范式也是OOP,Java和PHP在此特性上極為相似,語法也極其相似,但是還是有略微不同:
調用方法或者屬性的符號:
1、調用屬性和方法:
java和大部分的語言一樣,就是用點“.”。例如:object.name; object.getName();
php使用的是箭頭“->”,例如:$object->name; $object->getName();
2、調用靜態類和類的常量:
java和大部分語言一樣,就是用點“.”。例如:Object.createName(); object.NAME;
php使用的是“::”。例如:Object::createName(); object::NAME
3、文件命名空間和倒入關鍵字:
java中是命名為“com.ryugou.space” 的package。導入其他的類:import "com.gouryu.space.Object"; //包名 小寫,類名大寫。
php是命名為“comryugouspace”的namespace,這倆關鍵字作用可認為相同。導入其他的類:use "ComGouRyuSpaceObject";
4、構造函數和析構函數:
java中是和類名字相同的函數,無返回值;java中無析構函數
php中是通過名稱_ _construct()來識別構造函數的;語法如下:function _ _function([argument1,argument2, ...])。php中還有類似于 C++的析構函數,用于當所用對象銷毀時來調用。析構函數的名字必須是_ _destruct();語法為:function _ _destruct()。注意:無參數。
5、訪問權限:
java:private、protected、default、public; public,private不必多說;default表示同一個包內可見,protected表示同一包內的類和所有子類可見,什么不都寫表示“default”。
php:private、protected、public;private、public不必多說;protected表示的所有子類可見(php中無包的概念,所以。。。),注意:什么都不寫表示“public”。
6、方法重載:
java支持通過方法重載實現多態。
php不支持,且可能永遠都不支持。
公司地址:山西省運城市紅旗東街新新家園10號樓1單元602
聯系電話:馮經理 18603591730