Не исчерпывающий список, и я разработчик PHP, который некоторое время назад путешествовал по Java, поэтому Caveat Emptor.
Каждая переменная в Java должна начинаться с типа данных. Это включает в себя примитивные типы, такие как boolean, int, double и char, а также типы данных Object, такие как 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");
ArrayLists по-прежнему имеют цифровые клавиши. Есть еще одна коллекция под названием HashMap, которая даст вам словарь (или ассоциативный массив, если вы ходили в школу в 90-х годах) как объект.
ArrayLists и другие коллекции реализованы с помощью так называемых обобщений (). Я не программист на Java, поэтому все, что я понимаю о Generics, это то, что они описывают тип объекта, с которым будет работать объект. Там происходит гораздо больше.
У Java нет указателей. Однако все Объекты на самом деле являются ссылками, похожими на PHP 5, отличными от PHP 4. Я не думаю, что Java имеет (устаревший) PHP & reference & синтаксис.
Все параметры метода передаются по значению в Java. Однако, поскольку все Объекты на самом деле являются ссылками, вы передаете значение ссылки при передаче объекта. Это означает, что если вы манипулируете объектом, переданным в метод, манипуляции останутся неизменными. Однако, если вы попробуете что-то подобное, вы не получите ожидаемого результата
public void swapThatWontWork(String v1, String v2)
{
String temp = var1;
var1 = var2;
var2 = temp;
}
Настало время упомянуть, что методам необходимо указать тип возвращаемого значения, и произойдет плохое, если метод вернет что-то, чего он не должен. Следующий метод возвращает int
public int fooBarBax(int v1){
}
Если метод генерирует исключение, вы должны объявить его как таковой, иначе компилятор не будет иметь с этим ничего общего.
public int fooBarBax(int v1) throws SomeException,AnotherException{
...
}
Это может быть сложно, если вы используете объекты, которые вы не написали в своем методе, которые могут вызвать исключение.
Ваша основная точка входа кода в Java будет методом для класса, в отличие от основной глобальной точки входа PHP
Имена переменных в Java не начинаются с символа ($), хотя я думаю, что они могут, если вы хотите, чтобы они
Имена классов в 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-приложения создаются с помощью метода «запустить, обработать запрос, остановить выполнение».