static关键字初步认识:

        被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

       

举个例子:

<span style="font-size:18px;">class  Person{
	static String name ;
	String sex;
	
	public void eat(){
		System.out.println("真好吃");
		
	}
	public  void paly(){
		eat();
		Person.say();
		this.sex = "男";
		this.name = "胡博君";
	}
	public  static  void  say(){
		System.out.println("我要说话了");
	}
	public  static  void  talk(){
		eat();  //这里会报错
		this.sex = "女";    //这里会报错
		Person.name = "胡博君";
		Person.say();
	}
	
}</span>

总结说明:

    根据上面的例子我们可以总结static的几个特性:

   1、被static修饰的方法或者属性可以直接用类名来调用,当然也可以用对象来调用,最好用类名来调用。【play()方法里面就充分的证实了这一点】

   2、被static修饰的方法中不能出现非static修饰的方法或者属性只能调用static修饰过的属性或方法,因为非static修饰的方法是属于对象的,而static修饰过的方法是在编译时期就产生的,static中不能出现未来的对象的方法也是符合逻辑的,因为我们无法调用未来的方法。【非static修饰的方法属于普通方法,也属于对象的方法。上面的talk()方法支持了此论述】

   3、被static修饰的方法中不能出现this或者super,因为这些都是对象,static属性编译时期的产物,原因和第二点一样,编译时期的东西不能调用以后才能出现的对象的方法,就是说现在无法调用未来的方法或者说非static修饰的方法。【上面的talk()方法中支持了此论述】