繁体   English   中英

Java:Static 方法

[英]Java : Static methods

我在学习java的初学者阶段,我做了一个冒泡排序程序。 代码如下

package bubblesort;

public class Bubblesort {

public static void main(String[] args) {
    int[] arr = new int[] {10,20,40,30,50};
    arr = BubbleSort(arr);
    for(int i:arr) {
        System.out.println(i+" ");
    }
}

public static int[] BubbleSort(int[] arr) {
    int temp;
    for(int i = 0;i<arr.length;i++) {
        for(int j =i+1;j<arr.length;j++) {
            if(arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}

}

My question is as following: "Since a static method can only take static data variables as parameters, then why 'BubbleSort' function in my program is not reporting any error because of arr not being a static variable?"

由于一个 static 方法只能将 static 数据变量作为参数

不正确。

一个static方法只能直接引用其他static成员,而不是实例成员。 这指的是类级别的字段、方法等。

但是任何方法都可以接受您传递给它的任何值作为参数/参数 并且可以在内部声明和使用它想要的任何局部变量。

一个 static 方法只能访问其包含类型的 static 成员 因此,在您的情况下, BubbleSort方法无法访问BubbleSort class 的任何实例字段或方法。 Arguments 和局部变量当然总是允许的。

Static 方法首先不知道也不关心参数的来源。 它是一个局部变量并不重要,因为它具有对数组的引用。

实际上不能做的是“直接”引用 static 方法中的实例方法或字段,因为根据定义,它需要一个特定的实例来调用这些方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM