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 }