java和php基础部分相同或异同

    xiaoxiao2025-12-26  4

    拿着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 com\fox\lanmp; 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 packageName\classFile; 多个引用 use packageName{classFile,classFile2}; php中没有包引用

    namespace com\fox\lanmp; use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{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<K, V> { 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<String, String> c1 = new Container<String, String>("name", "findingsea"); Container<String, Integer> c2 = new Container<String, Integer>("age", 24); Container<Double, Double> c3 = new Container<Double, Double>(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

    相关资源:python入门教程(PDF版)
    最新回复(0)