我可以在不使用对象引用的情况下以及在非静态上下文中更改对象吗?

时间:2018-05-03 21:05:11

标签: java function object methods

在代码中,在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 :(得分:1)

  • input.reverseArray(input);无法编译,因为reverseArray不是由input类型定义的方法,即int[]
  • reverseArray(input);编译并正常工作。
  • input = reverseArray(input);无法编译,因为reverseArray会返回void,因此无法将其分配给input
  • input =input.reverseArray(input);由于上述两个原因而无法编译。

如果reverseArray不是静态的,那么以上都不会编译。特别是,{em>静态方式从静态上下文(即来自reverseArray(input)方法)调用static(不使用对象作为在foo.reverseArray(input)),但reverseArray 不是静态的。调用reverseArray的方法是使用reverse类型的对象,因为reverse类定义了方法reverseArray

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

另请注意,根据Java约定,类应在CamelCase中命名,因此您应将reverse更改为Reverse