當前位置:
首頁 > 知識 > java和php基礎部分相同或異同

java和php基礎部分相同或異同

java和php基礎部分相同或異同

拿著JAVA參考書,一章一章的走過

目前先整理這麼多

風.fox

編程範式:

Java:純面向對象的語言,有人說過:Java中一切皆對象!當然咯,人們都忘了Java的八種基本數據類型:int、double、boolean、byte、float、 long、short、char。但是念在每個Java每個基本數據類型都有包裝類(int的包裝類是Integer)的基礎上,就姑且認為一切是對象吧。

PHP:即使用可面向對象的方式編程,又可使用面向過程的方式。這種兩種編程範式結合的語言代表了計算機語言以後的一個發展趨勢,在Scala、Golang、Python中都有體現。

OOP 面向對象

封裝

繼承

多態

執行入口方法

JAVA中程序入口是 main方法,沒有則報錯

PHP中不需要入口方法,隨時都可以運行

JAVA

class main{

public static void main(String args[]){

/......

}

}

基本元素

JAVA或PHP程序

是由空白符,標識符,字面值,注釋,運算符,分隔符以及關鍵字組合而成

空白符

可以是空格,製表符,換行符

JAVA和PHP 都相同

標識符

標識符用於命名事物,例如類,變數以及方法。

標識符可以是大寫或者小寫字母,數字,下劃線,美元符號等字元組成的任意字元序列

不能以數字開頭,防止與數值產生混淆

都是大小寫敏感的

PHP唯一與JAVA不同的是 變數要以$號為開頭,其他都相同

字面值

數據類型中介紹

注釋

// 或者 /* */ 注釋方式

PHP和JAVA是相同的

分隔符

() {} [] ; , . (JAVA)

() {} [] ; , / -> :: (PHP)

java 和PHP 從 . 號開始不一樣,

JAVA 中 . 用於將包的名稱與子包以及類的名稱分隔開,也可以用於將變數或方法與引用變數分隔開。

如果在PHP中,「」用於將包的名稱與子包以及類的名稱分隔開,「->」用於將變數或方法與引用變數分隔開。

PHP中 :: 是靜態參數(變數,常量,方法)與引用變數或者類分割開

(我覺得PHP中,不用 . 分隔符是語言設計中永遠的一個痛)

關鍵字

JAVA和PHP中的關鍵字部分相同

數據類型

java是編譯型強類型的語言,變數必須聲明類型

php是解釋型弱類型的語言,變數不必聲明類型

基本類型

整型

浮點型

字元型

布爾型

整形

java

名稱 長度(寬度)

byte 8

short 16

int 32

long 64

整形字面值中可以嵌入一個或多個下劃線(程序編譯時,自動忽略下劃線),方便閱讀。

下劃線只能用於分割數字,不能位於字面值的開頭和結尾。

int x = 123_12__123;

php

int 長度與平台有關,32位平台,64位平台

浮點型

JAVA

double 64 雙精度

float 32 單精度

字面值中可以嵌入一個或多個下劃線(程序編譯時,自動忽略下劃線),方便閱讀。

下劃線只能用於分割數字,不能位於字面值的開頭和結尾。

double num = 9_12__23.2__123_23;

PHP

float 長度與平台有關,32位平台,64位平台

字元型

布爾型

JAVA 和PHP 相同

PHP特有數據類型(也可以說分類不同吧)

Array 數組

Object 對

Resource 資源類型

NULL

Callback 回調類型

變數

java是編譯型強類型的語言,變數必須聲明類型

php是解釋型弱類型的語言,變數不必聲明類型,且$符號作為變數的前綴

變數可以是大寫或者小寫字母,數字,下劃線,美元符號等字元組成的任意字元序列

java 和php 區分大小寫,賦值,變數的作用範圍,成員變數與局部變數(作用同,使用方法不同)這些方式相同

JAVA

int x = 123123;

int a; //初始化

java 變數聲明不能以數字開頭

有很多保留關鍵字

PHP

$x = 123123;

符號作為變數的前綴沒有保留關鍵字(開頭)

數組

JAVA

int arr[];

int arr2[]=new int[12];

int duo[][]=new int[9][3];

PHP

php中最強大的就是數組

$arr=[];

$arr2=[1,2,3];

$duo=[[1,2,3],[3,3,4]];

$sss=[["A"=>"c","h"=>"d"],["b"=>"d"]];

運算符

JAVA

算術運行符:+、-、*、/、%

賦值運行符:+=、-=、*=、/=、%=

自增/自減運行符:++、–

關係運算符:==、>、<、>=、<=、!=

邏輯運行符:&&、||、!、^

PHP(包括上面的,還有)

類型運算符:instanceof

數組運算符:+、==、===、!=、<>、!==

字元串運算符:+

執行運算符:「

錯誤控制運行符:@

位運算符

三元運算符

JAVA和PHP都一樣

控制語句

if else

JAVA

if(a ==1){

}else if(a ==2){

}else if(a ==3){

}else{

}

PHP(包括上面的,還可以寫成)

if($a ==1){

}elseif($a ==2){

}elseif($a ==3){

}else{

}

switch

可以是數值,字元類型

java 和 PHP 幾乎相同

循環語句

for,while,do while

java和php基本使用方法都相同

java for 的 foreach 版本

int nums[]={1,2,3,4,5,6};

int sum=0;

for(int x: nums){

sum+=x;

}

PHP foreach

$nums=[1,2,3,4,5,6];

$sum=0;

foreach($nums as $x){

$sum+=$x;

}

跳轉語句

break

continue

return

java 和php 基本寫法相同

java 版 break 的 goto版本

less: {

for(int i=0;i<10;i++)

{

........

break less;

}

}

PHP goto

less: {

for($i=0;$i<10;$i++)

{

........

goto less;

}

}

java每個類會生成一個.class文件

php每個文件為.php文件

類修飾符

abstract(同)

final(同)

public(PHP沒有)

變數修飾符:

靜態變數修飾符 static(同)

靜態初始化器 static{}(PHP沒有)

最終常量 final(同) (建議用static代替)

易失變數 volatile(PHP沒有)

方法修改飾

抽象方法 abstract(同)

靜態方法 static (同)

最終方法 final(同)

本地方法 native(PHP沒有)

多線程同步方法 synchronized(PHP沒有)

訪問控制符,JAVA比PHP多了包的概念

JAVA的public可以修改類,PHP不可以;其他相同

JAVA的默認是同一包中可見,PHP默認是任何地方可見

類或方法的引用

java是使用」.」點號引用屬性與方法,

PHP是使用」->」引用屬性與方法,沒有點號用法

JAVA

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

}

Box mybox3;//聲明

mybox3=new Box();//實例化

Box mybox=new Box();// 聲明

Box mybox2=new Box(10,20);// 聲明

java的class可以定義為public,此時文件名要與公共類完全一致,PHP中沒有這個功能,如果不包含公共類,則class與PHP聲明一樣

php

class Box{

private $width;

private $height;

public __construct(int $w,int $h){

}

}

$mybox2=new Box(10,20);// 聲明

方法

JAVA有返回值類型,PHP必須有關鍵字function

JAVA中的main(String args[])特殊方法,php中沒有

返回值

java

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

public int show(){

}

public static void main(String args[]){

}

}

構造函數

java

JAVA 中構造函數的名稱和包含他的類的名稱相同,並在語法上和方法類似。因為方法支持重載,所有可以由多個構造函數

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

}

Box mybox3;//聲明

mybox3=new Box();//實例化

Box mybox=new Box();// 聲明

Box mybox2=new Box(10,20);// 聲明

PHP

php 中方法不支持重載,所以只能有一種,如果需要更多,可以通過其他方式實現

class Box{

private $width;

private $height;

public function __construct(int $w,int $h){

}

}

$mybox2=new Box(10,20);// 聲明

對象銷毀

java和php 中使用方式相同

JAVA finalize 方法銷毀對象

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

protected void finalize(){

//

}

}

PHP

class Box{

private $width;

private $height;

public function __construct(int $w,int $h){

}

public function __destruct () {

echo "clear";

}

}

this表示當對象

Java的this 表示當對象,一般情況下不必寫

PHP也使用this表示當對象,這點相同

PHP使用self表示當前類,Java沒有這個關鍵字,也不需要使用表示類

PHP在調用本類中的靜態變數和方法時,必須使用self關鍵字和::,JAVA中直接使用

方法重載

JAVA支持方法重載,PHP不支持

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

public int show(int x){

System.out.println(x);

return x;

}

public double show(double x){

System.out.println(x);

return x;

}

public String show(String x){

System.out.println(x);

return x;

}

}

class Show{

public static void main(String args[]){

Box box=new Box(10,30);

box.show("字元");

box.show(10);//整型

box.show(10.123);//浮點型

}

}

構造函數重載

JAVA支持構造函數重載,PHP不支持

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

public int show(int x){

System.out.println(x);

return x;

}

public double show(double x){

System.out.println(x);

return x;

}

public String show(String x){

System.out.println(x);

return x;

}

}

class Show{

public static void main(String args[]){

Box box=new Box(10,30);

Box box2=new Box();

}

}

將對象用作參數

java和PHP都支持

JAVA

class Box{

int width;

int height;

public Box(int w,int h){

}

public Box(){

}

public Box(Box ob){

width=ob.width;

height=ob.height;

}

public int show(int x){

System.out.println(x);

return x;

}

public double show(double x){

System.out.println(x);

return x;

}

public String show(String x){

System.out.println(x);

return x;

}

}

class Show{

public static void main(String args[]){

Box box=new Box(10,30);

Box clone_box=new Box(box);

}

}

PHP

class Box{

private $width;

private $height;

public function __construct($w=0,$h=0){

$this.width=$w;

$this.height=$h;

}

public function setData(Box $box){

$this.width=$box.width;

$this.height=$box.height;

}

public function __destruct () {

echo "clear";

}

}

$box=new Box(10,20);

$clone_box=(new Box())->setData($box);

返回對象

java 和php中返回對象 相同

包(命名空間)

java中叫包

PHP中叫命名空間

JAVA

package com.fox.lanmp;

class Box{

}

php

namespace comfoxlanmp;

class Box{

}

包 引用

java

java 中 引用關鍵詞 import

單獨引用:import packageName.className;

包引用:import packageName.*;

package com.fox.lanmp;

import com.fox.util;

import com.fox.service.*;

class Box{

}

php

php 中命名空間 引用關鍵詞 use;

單獨引用 use packageNameclassFile;

多個引用 use packageName{classFile,classFile2};

php中沒有包引用

namespace comfoxlanmp;

use some
amespace{ClassA, ClassB, ClassC as C};

use function some
amespace{fn_a, fn_b, fn_c};

use const some
amespace{ConstA, ConstB, ConstC};

class Box{

}

介面和抽象類

java 和php 中 相同,某些寫法不同

異常處理

JAVA和PHP 相同

JAVA

try {

// some code

} catch (SecondException e) {

// handle first and second exceptions

} catch (Exception e) {

// ...

} finally{

//

}

php

try {

// some code

} catch (FirstException | SecondException $e) {

// handle first and second exceptions

} catch (Exception $e) {

// ...

} finally{

//

}

拋出異常 throw

throw 關鍵詞

java和PHP相同

方法 異常 throws

PHP中沒有,JAVA中有

如果方法肯能引發自身不進行處理的異常,就必須指明這種行為,以便方法的調用者能夠保衛他們自己以防備上述異常。可以通過在方法聲明中提供throws子語句來完成該任務。

class Demo{

static void one throws IllegalAccessException{

System.out.println("one");

throw new IllegalAccessException("Demo");

}

public static void main(String args[]){

try{

one();

}catch(IllegalAccessException e){

System.out.println("CAUGHT " +e);

}

}

}

泛型

泛型,即「參數化類型」。

JAVA特有,PHP 沒有

public class Container {

private K key;

private V value;

public Container(K k, V v) {

key = k;

value = v;

}

public K getKey() {

return key;

}

public void setKey(K key) {

this.key = key;

}

public V getValue() {

return value;

}

public void setValue(V value) {

this.value = value;

}

}

public class Main {

public static void main(String[] args) {

Container c1 = new Container("name", "findingsea");

Container c2 = new Container("age", 24);

Container c3 = new Container(1.1, 2.2);

System.out.println(c1.getKey() + " : " + c1.getValue());

System.out.println(c2.getKey() + " : " + c2.getValue());

System.out.println(c3.getKey() + " : " + c3.getValue());

}

}

輸出

name : findingsea

age : 24

1.1 : 2.2

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP愛好者 的精彩文章:

sleep()到底睡多久,你知道嗎?
Web服務分層設計模型

TAG:PHP愛好者 |

您可能感興趣

部分Apple Watch 4反覆崩潰和重啟
webpack各部分怎麼編寫
聯名Look book 公開!Palace x Ralph Lauren部分單品更新
Apple 確認部分 iPhone X 屏幕有觸控異常
部分地區Windows Update出故障
Apple 確認部分 MacBook Pro 電池存在問題
Oculus Research更名Facebook Reality Labs,宣布OC3預言部分成真
Xbox One Skip Ahead測試通道向部分Xbox Insider開放
部分 Google 員工將針對 Project Dragonfly 進行抗議活動
「圖」部分三星用戶已嘗鮮Samsung Experience 10 Launcher
蘋果GymKit體驗:讓健身器材成為Apple Watch的一部分
Facebook Building 8重組,部分成員加入AR/VR部門
部分Fitbit用戶反應 無法與安卓9 Pie系統進行同步
《Produce48》參賽陣容部分確定,想pick誰?
MR Studios將支持Magic Leap和部分VR頭顯
OVO 成員 Chubbs 再爆 Drake 部分 Air Jordan PE 收藏!
《In China》Eve Arnold部分作品欣賞
Champion Clarkson聯名加入!Supreme第十四周部分發售單品已確認
Simplygon將支持部分CAD格式
Taste of Scotland:威士忌是蘇格蘭不可分割的一部分