[英]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.