PHP和Java有什么区别?
精通PHP但学习Java的人应该知道PHP和Java之间的主要区别是什么?
编辑:我的意思是语言语法的差异,即它们的数据类型,它们如何处理数组和引用变量,等等:)
精通PHP但学习Java的人应该知道PHP和Java之间的主要区别是什么?
编辑:我的意思是语言语法的差异,即它们的数据类型,它们如何处理数组和引用变量,等等:)
这不是一个详尽的列表,我是PHP开发人员,不久前他参观了Java,所以Caveat Emptor。
Java 中的每个变量都需要在前面附加一个数据类型。这包括基元类型(如布尔值、整型、双精度型和字符)以及对象数据类型(如 ArrayList、String 和您自己的对象)
int foo = 36;
char bar = 'b';
double baz = 3.14;
String speech = "We hold these truths ...";
MyWidget widget = new MyWidget(foo,bar,baz,speech);
每个变量只能保存其类型的值。使用上述声明,以下内容无效
foo = baz
对象上的相等性(而不是基元类型)检查对象标识。所以下面不直观地打印了假的。字符串具有处理此问题的相等方法。
//see comments for more information on what happens
//if you use this syntax to declare your strings
//String v1 = "foo";
//String v2 = "foo";
String v1 = new String("foo");
String v2 = new String("foo");
if(v1 == v2){
println("True");
}
else{
println("False");
}
数组是经典的 C 数组。只能保存一种特定类型的变量,需要以固定长度创建
为了解决这个问题,有一系列的集合对象,其中一个名为ArrayList,它的行为更像PHP数组(尽管持有一种类型的业务仍然是正确的)。你不会得到像语法那样的数组,所有的操作都是通过方法完成的
//creates an array list of strings
ArrayList<String> myArr = new ArrayList<String>();
myArr.add("My First Item");
数组列表仍然具有数字键。还有另一个名为HashMap的集合,它将为您提供一个字典(或关联数组,如果你在90年代上学的话)类似对象。
ArrayList 和其他集合是使用称为泛型的东西(<String>)实现的。我不是Java程序员,所以我对泛型的理解是它们描述了对象将要操作的东西的类型。那里还有更多的事情要做。
Java 没有指针。但是,所有对象实际上都是引用,类似于 PHP 5,与 PHP 4 不同。我不认为Java有(贬值的)PHP和参考和语法。
所有方法参数在 Java 中都按值传递。但是,由于所有对象实际上都是引用,因此在传递对象时会传递引用的值。这意味着,如果您操作传递到方法中的对象,则操作将保持不变。但是,如果您尝试这样的事情,您将无法获得预期的结果。
public void swapThatWontWork(String v1, String v2)
{
String temp = var1;
var1 = var2;
var2 = temp;
}
现在是时候提到方法需要指定其返回类型,如果一个方法返回它不应该返回的东西,就会发生不好的事情。以下方法返回整型
public int fooBarBax(int v1){
}
如果一个方法要引发异常,你必须这样声明它,否则编译器将不会与它有任何关系。
public int fooBarBax(int v1) throws SomeException,AnotherException{
...
}
如果您使用的方法中未写入的对象可能会引发异常,这可能会变得棘手。
Java中的主代码入口点将是类的方法,而不是PHP的主全局入口点
Java中的变量名称不以sigil($)开头,尽管我认为如果你希望它们这样做,它们可以
Java 中的类名区分大小写。
字符串在 Java 中是不可变的,因此串联可能是一个代价高昂的操作。
Java 类库提供了一种实现线程的机制。PHP没有这样的机制。
PHP方法(和函数)允许您使用可选参数。在java中,您需要为每个可能的参数列表定义一个单独的方法
public function inPHP($var1, $var2='foo'){}
public void function inJava($var1){
$var2 = "foo";
inJava($var1,$var2);
}
public void function inJava($var1,$var2){
}
PHP 需要显式$this对象调用自己的方法方法时使用。Java(如上例所示)则不然。
Java程序倾向于从“程序运行,保持运行,处理请求”的方式构建,其中PHP应用程序是从“运行,处理请求,停止运行”的方式构建的。
我认为这两种语言(以及它们的运行时系统)差异太大,无法列出所有差异。一些非常大的问题浮现在我的脑海中:
当需要时,您会注意到大多数差异,但最重要的是: