-
随便新建一个文件夹,存放代码
-
新建一个Java文件
-
文件后缀名为.java
-
hello.java
-
【注意点】系统可能没有显示文件后缀名,我们需要手动打开
-
编写代码
public class hello{ public static void main (String[] args){ System.out.print("hellow world"); } }
-
编译javac java文件
-
运行class文件,java.class文件
class A{ pbulic static int i=10; public void show (){ System.out.printf("%d\n",i); } } class M{ public static void main(string arg[]){ A aa1=new A(); A aa2=new A(); A aa3=new A(); aa1.i=20; aa2.show; System.out.printf("%d\n",aa3.i); } }
本程序证明了:A类的多个对象共用一个static属性i
class A{ pbulic static int i=10; } } class M{ public static void main(string arg[]){ System.out.printf("%d\n",A.i); } }
本程序证明了:static属性i是属于类本身,或者讲:没有对象,我们仍然可以直接通过类名的方式访问该类内部的static属性
static属性和方法虽然属于类本身,虽然可以通过类名的方式访问,但是static属性和方法很明显也属于类对象,当然也可以通过类对象名的方式访问
class A{ pbulic static int i=10;//public==protected88一样效果 private static void show (){ System.out.printf("%d\n",i); } } class M{ public static void main(string arg[]){ A.f();//false private+static A.i=22;//true public+static } }
只有非private的static成员才可以通过类名的方式访问static 只是表明了该成员具有了可以通过类名访问的潜在特征,但是可以通过类名访问,还必须满足一个条件:非private。
class A{ pbulic static int i=10;//public==protected88一样效果 public static void f (){ g();// error静态方法不能访问非静态成员 System.out.printf("%d\n",i); } public void g (){ //f(); true 说明非静态可以访问静态成员 System.out.printf("%d\n",i); } } class M{ public static void main(string arg[]){ A.f();//false private+static A.i=22;//true public+static } }
静态方法不能访问非静态成员非静态成员可以访问静态成员