Static关键字
static 来修饰方法 : 有点类似OC中的类方法 :
1.只能用类名来调用
2.类中是不允许访问属性。
1. 访问方式:
1.可以通过对象来访问
对象.方法名();
2.可以通过类名来访问
类.方法名();
推荐使用类名调用。
2. 作用:
1.用来修饰成员变量
2.用来修饰方法
3. Static修饰方法的使用注意点:
1.静态方法可以用对象和类名调用。非静态方法只能用对象来调用。
2.静态方法是可以访问静态的成员变量,不能够访问非静态的成员变 量。非静态方法中可以访问任何成员变量。
原因:有可能静态方法被调用了,但是对象还没有被创建出来。
3.静态方法可以直接访问静态方法,但是不能访问非静态方法.非静态方法是可以访问静态方 法。
原因:有可能静态方法被调用了,但是对象还没有被创建出来 ,非静态方法只能由对象调用。
如果对象被创建出来,静态方法早就存在内存中了。
4.静态方法中是不允许出现this关键字和super关键字
this : 表示一个方法调用者对象。
可能对象没有被创建出来。
//特点 :
静态的数据早于非静态的数据存在内存中。
4. 什么情况下使用static来修饰方法:
当一个方法不需要直接放味非静态数据,这个时候就可以用static修饰 (定义工具类)
代码实例一:
class Student{ String name; // 非静态的成员变量 static String country; // 静态的成员变量 public Student(String name){ this.name = name; } //公有的方法 public void study(){ eat(); //非静态是可以调用静态的方法。 System.out.println(name+"正在学生"); } //用static 来修饰吃饭的方法 //结构上就是在public后面多了一个static //静态方法 public static void eat (){ //study(); 不允许调用非静态方法。 sleep(); System.out.println(country+"正在吃饭"); } //静态方法 public static void sleep (){ System.out.println("学生在睡觉"); } } class Demo4 { //静态方法 public static void main(String[] args){ Student s = new Student("张三"); s.study(); s.country = "中国"; //调用吃饭的方法 //Student.eat(); s.eat(); }
代码实例二:
class Student{ String name; // 非静态的成员变量 static String country; // 静态的成员变量 public Student(String name){ this.name = name; } //静态代码块 //编译的java.class文件被使用的时候就执行了. static{ System.out.println("我是静态代码块"); } //公有的方法 public void study(){ eat(); //非静态是可以调用静态的方法。 System.out.println(name+"正在学生"); } //用static 来修饰吃饭的方法 //结构上就是在public后面多了一个static //静态方法 public static void eat (){ //study(); 不允许调用非静态方法。 sleep(); System.out.println(country+"正在吃饭"); } //静态方法 public static void sleep (){ System.out.println("学生在睡觉"); } } class Demo5 { //静态方法 public static void main(String[] args){ Student.eat(); /* Student s = new Student("张三"); s.study(); s.country = "中国"; //调用吃饭的方法 //Student.eat(); s.eat(); */ } }