Предположим, моему методу нужен объект в качестве аргумента, будет ли разница между ними? И какой из них следует предпочесть?
public static void methodOne(){
myMethod(new MyObject());
}
public static void methodOne(){
MyObject objRef = new MyObject();
myMethod(objRef);
}
В Java это не имеет значения в любом случае, потому что Java заботится об удалении объекта, когда он выходит за рамки.




В первом примере у вас нет возможности получить доступ к экземпляру MyObject после вызова метода, а в примере 2 вы все еще можете получить к нему доступ, поскольку вы присвоили экземпляр переменной.
Итак, если вам нужно/хотите повторно использовать экземпляр, перейдите, например, 2. Если вам просто нужен экземпляр в методе, вы можете перейти, например, 1 (хотя вы также можете просто создать его в mthod -> вообще без аргумента)
Второй пример также дает вам возможность дать объекту значимый идентификатор. Иногда это полезно для удобства чтения.
Еще одна вещь, касающаяся второго примера: если вы вносите изменения в экземпляр, переданный методу, эти изменения сохранятся в вашем methodOne
На мой взгляд, особой разницы они не имеют. когда вы передаете их функции. На принимающей стороне они будут получены в конкретном экземпляре объекта. и все операции будут выполняться с использованием одного и того же в теле функции.
Для фрагмента кода, которым вы поделились, первый подход был бы чище.
Если вам нужна ссылка на объект, вы должны использовать второй вариант, в противном случае первый вариант будет лучше, потому что вы собираетесь создать «временную» переменную, переданную функции, и JVM может выполнить небольшую оптимизацию в памяти. потому что вы не сохраняете ссылку на эту переменную. Кроме того, если вам не нужна ссылка, я думаю, что второй вариант дает более читаемый код.
Это зависит от того, что вы хотите сделать с этим объектом. Если вы хотите использовать его после выполнения метода, вам нужно назначить его как объект.
Что-то еще, вам нужно:
public static void methodOne(){
myMethod(new MyObject());
}
В противном случае он не будет компилироваться.
Зависит от области видимости переменных.
Каждый входной параметр метода/функции отправляется как значение. Но если вы отправили объект как параметр, вы отправите его ссылку как значение.
public static void methodOne(){
MyObject objRef = new MyObject();
myMethod(objRef);
}
В качестве второго примера кода objRef можно использовать для всего methodOne(). Но это плохая идея модифицировать objRef функцию с недействительными возвратами.
В вашем первом примере вы отправили новый объект (он инициирован с пустым конструктором параметров), но вы не можете его повторно использовать.
Оба метода делают одно и то же. Второй дает вам возможность дать осмысленное имя вашему объекту, чтобы немного прояснить ситуацию.
Первый не компилируется.
new MyObject->new MyObject()