求问:java里面static修饰符作用

static作用具体是什么,非static作用又是什么,static修饰方法和属性分别是什么效果,具体点谢谢

static 是全局变量,

如 static int c=0; c=c+1;
那么这变量,就是一个全局变量, 每一次改变它都会执行,但是再给它赋值 就会报错
再这样写 c=5;
系统就会报错。

没有static的字段,每个实例对象都有一个独自的变量。
有了static,一个类只有一个变量(无论有没有实例化,以及这个类有多少个实例)
适合作为全局变量。
static修饰的方法,属于类而不是对象,无需实例化一个对象就可以直接调用。

static修饰的成员变量或者成员函数,是直接通过类名来访问的,不需要实例化的。
而非静态的成员方法的访问需要通过实例化的对象来访问。

具体效果看代码理解一下
static可以修饰变量,该静态变量在多个对象间是共享内存空间的,例如:
public class Aa{
private static int tmp=0;
public void test(){
Aa.tmp++;
Aa a1 = new Aa();
Aa a2 = new Aa();
a1.tmp++;
a2.tmp++;
//上面几行执行后tmp=3
}
}

static也可以修饰方法,例如:
public class Parent{
public static void hello(){
System.out.println("hello");
}
}
public class Sub extends Parent{
public void test(){
Parent.hello();
Sub.hello();
new Sub().hello();
//以上几句执行后会打印出三行hello
}
}
静态方法在子类和父类间是同一块代码区的,因此如果在子类中企图重载静态方法,是不允许的

static还可以修饰class,但都是修饰内部类,篇幅关系不再描述

有分吗兄弟?有的话我给你解释个清清楚楚!