Могу ли я изменить объект, не используя ссылку на объект, а также в нестатическом контексте? - PullRequest
0 голосов
/ 04 мая 2018

В коде, в чем разница между звонками в main?

  • input.reverseArray(input);
  • reverseArray(input);
  • input = reverseArray(input);
  • input =input.reverseArray(input);

Наконец, будут ли они применимы, если reverseArray не был статическим?


public class reverse
{
     
    public static void main(String args[])
    {
        int [] input = new int[]{4, 5, 8, 9, 10};      
    }
    public static void reverseArray(int inputArray[])
        {
            
             
            int temp;
             
            for (int i = 0; i < inputArray.length/2; i++) 
            {
                temp = inputArray[i];
                 
                inputArray[i] = inputArray[inputArray.length-1-i];
                 
                inputArray[inputArray.length-1-i] = temp;
            }
             
            
        }
}

1 Ответ

0 голосов
/ 04 мая 2018
  • input.reverseArray(input); не компилируется, потому что reverseArray не является методом, определенным типом input, а именно int[].
  • reverseArray(input); компилируется и работает правильно.
  • input = reverseArray(input); не компилируется, поскольку reverseArray возвращает void, поэтому его нельзя присвоить input.
  • input =input.reverseArray(input); не компилируется по обеим вышеуказанным причинам.

Если бы reverseArray не было статичным, то ничего из вышеперечисленного не скомпилировалось бы. В частности, reverseArray(input) вызывается из статического контекста (т.е. из static метода) статическим способом (без использования объекта, как в foo.reverseArray(input)), но reverseArray это не статично . Чтобы вызвать reverseArray, нужно использовать объект типа reverse, поскольку класс reverse определяет метод reverseArray:

reverse myReverse = new reverse();
myReverse.reverseArray(input);

Также обратите внимание, что по соглашению Java классы должны быть названы в CamelCase, поэтому вы должны изменить reverse на Reverse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...