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

简介: 拿着JAVA参考书,一章一章的走过 目前先整理这么多 风.fox编程范式:Java:纯面向对象的语言,有人说过:Java中一切皆对象!当然咯,人们都忘了Java的八种基本数据类型:int、double、boolean、byte、float、 long、short、char。但是念在每个Java每个基本数据类型都有包装类(int的包装类是Integer)的基础上,就

拿着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

目录
相关文章
|
2月前
|
Java PHP 数据安全/隐私保护
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
本文详细介绍了PHP面向对象编程的一系列核心概念和用法,包括构造函数、析构函数、继承、方法重写、访问控制、接口、抽象类、静态成员、final关键字、以及this、self、parent这三个关键字的异同和作用。通过具体示例代码,展示了如何在PHP中使用这些面向对象的特性,以及它们在实际开发中的应用。
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
|
6月前
|
安全 Java 编译器
深入理解PHP 8.0新特性及其对开发的影响Java中的多线程编程:从理论到实践
【5月更文挑战第27天】在这篇文章中,我们将详细探讨PHP 8.0的新特性以及它们如何影响开发者的工作流程。我们将深入研究这些新特性,包括JIT编译器,联合类型,命名参数,以及更多的错误处理机制。我们还将讨论这些新特性如何提高代码的可读性和性能,以及它们如何改变我们编写和维护PHP应用程序的方式。 【5月更文挑战第27天】在现代计算机科学中,多线程编程是一个重要的概念,它允许多个线程在同一时间内运行,从而提高了程序的效率和性能。本文将深入探讨Java中的多线程编程,包括其理论基础,实现方法,以及一些常见的问题和解决方案。我们将通过实例来理解如何创建和管理线程,以及如何使用Java的并发工具来
ly~
|
2月前
|
安全 Java 大数据
php跟java有什么区别
PHP 和 Java 是两种常用编程语言,各有特色。PHP 语法简洁灵活,适用于快速开发中小型网站,尤其在 Web 脚本和数据库交互中表现出色。Java 则语法严谨,强类型特性使其在企业级应用、移动开发及大数据处理中更受欢迎,具备高稳定性和安全性。通过优化,PHP 性能可提升,而 Java 在大规模应用中表现更佳。总体而言,PHP 开发效率高但维护性稍差,Java 则更注重代码质量和安全性。
ly~
37 5
|
3月前
|
Java 应用服务中间件 PHP
PHP——调用java文件中的方法
PHP——调用java文件中的方法
54 0
PHP——调用java文件中的方法
|
3月前
|
Java PHP 开发者
PHP中的异常处理:Java常见的编码方式
在PHP开发中,掌握异常处理至关重要,它有助于预见并管理运行时错误,避免用户体验受损或数据丢失。本文介绍PHP异常处理的基本概念与实践,包括try-catch语句的使用,以及如何通过抛出和捕获异常来增强代码的健壮性和可靠性。通过示例展示如何避免常见错误,如除数为零的情况,并探讨多catch块和finally语句的高级用法,帮助开发者提升程序稳定性与可维护性。[总字符数:238]
27 0
|
5月前
|
Java PHP 数据安全/隐私保护
php和Java配合 aes
php和Java配合 aes加密
40 1
|
4月前
|
Java 应用服务中间件 测试技术
PHP和Java在性能上的差异有哪些?
【7月更文挑战第2天】PHP和Java在性能上的差异有哪些?
184 0
|
4月前
|
Java 测试技术 数据库连接
PHP和Java哪个更难?
【7月更文挑战第2天】PHP和Java哪个更难?
48 0
|
4月前
|
PHP
PHP 接口和继承的异同?
【7月更文挑战第2天】PHP 接口和继承的异同?
27 0
|
6月前
|
Java
Java中的抽象类和接口之间的异同点
抽象类顾名思义是之抽象出来的类,具有多个类的共性,是抽象的。抽象类和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而“具体”是一种可见可触摸的现实对象。简单说,法拉利,保时捷,兰博基尼,布加迪等多种车子,可以抽象出车,也可以抽象出跑车,这就是抽象出来的类别,称为抽象类。
25 0