1 package JavaStatic01; 2 /* 3 一旦使用static修饰方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。 4 如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。 5 如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。 6 7 无论是成员变量还是成员方法。如果有了static,都推荐使用类名称进行调用。 8 静态变量:类名称.静态变量 9 静态方法:类名称.静态方法() 10 11 注意事项: 12 静态不能直接访问非静态。 13 原因:因为在内存当中是【先】有的静态内容,【后】有的非静态内容。 14 2.静态方法中不能用this 15 原因:this代表当前对象,通过谁调用的方法,谁就是对象。 16 17 */ 18 public class StaticMethod { 19 public static void main(String[] agrs){ 20 MyClass obj = new MyClass();//首先创建对象 21 //然后才能使用没有带static关键字的内容 22 obj.method(); 23 //对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称调用. 24 obj.methodStatic();//正确,不推荐,这种写法在编译之后也会被javac翻译成为“类名称.静态方法名” 25 MyClass.methodStatic();//正确,推荐 类名称.静态方法名 26 27 //对于本来当中的静态方法,可以省略类名称 28 myMethod(); 29 StaticMethod.myMethod();//完全等效 30 } 31 public static void myMethod(){ 32 System.out.println("自己的方法"); 33 } 34 }
1 package JavaStatic01; 2 3 public class MyClass { 4 int num;//成员变量 5 static int numberStatic;//静态变量 6 //成员方法 7 public void method(){ 8 System.out.println("这是一个普通的成员方法!"); 9 //成员方法可以访问成员变量 10 System.out.println(num); 11 //成员方法可以访问静态变量 12 System.out.println(numberStatic); 13 } 14 //静态方法 15 public static void methodStatic(){ 16 System.out.println("这是一个静态方法!"); 17 //静态方法可以访问静态变量 18 System.out.println(numberStatic); 19 //静态方法不能直接访问非静态【重点】 20 //System.out.println(num); 21 } 22 }