什么时候要用static修饰符?

2025-01-02 19:07:08
推荐回答(5个)
回答1:

首先,static的用法是:1.static所修饰的方法和变量是属于类本身,而不是属于对象,无论创建多少个对象实例都是共用一个方法和变量.2.静态的方法不可以调用非静态的方法,非静态的方法可以调用静态的方法.
其次,在你的第一个程序中,main()是静态的方法,它要调用yes_no()方法的话,yes_no方法就必须是静态的,所以第一个要用static.
再次,第二个方法是通过对象调用其内部的方法不算是main()方法直接调用printlnfo().所以不需要用static修饰.
不知道这样回答你是否明白了.

回答2:

修饰符的作用是让被修饰的内容具备特定的功能,在程序中合理使用修饰符可以在语法和功能上实现很多需要的效果。
代码如下:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
abstract class FieldTest {
private String str;
private static final int CONSTANTS = 1;

public abstract void test();
}
public static void main(String[] args) {
Field[] fields = FieldTest.class.getDeclaredFields();

for(Field field : fields) {
System.out.println(field.getName() + " -> static:" + Modifier.isStatic(field.getModifiers()) + " final:" + Modifier.isFinal(field.getModifiers()));
}
Method[] methods = FieldTest.class.getDeclaredMethods();

for(Method method : methods) {
System.out.println(method.getName() + " -> abstract:" + Modifier.isAbstract(method.getModifiers()));
}
}
}

主要就是 Modifier.isXXXX()函数及field/method .getModifiers()函数就可以判断类/接口/字段/方法的修饰符

回答3:

static是静态,不需要实例化。
比如:
class A{
public static x(){
}

}
//无需A a = new A(); a.x();直接用类名调用。
class B{
A.x();
}

回答4:

static对象可以先于类实例化而存在,就是在类的实例得到内存之前就已经存在了static对象。它是可以被多个类所共享的,而且多个类共享的是同一个对象。mail方法必须是static的,而stataic修饰的方法中不能引用其他非static对象,所以static中只能访问static的,所以yes_no必须是static的。

回答5:

第一处不需要,加上static就可以不需要类生成一个对象再调用,而可以用类直接调用。
第二处必须加,这是JAVA固定形式,主方法main必须加