21 static 静态的使用及特点

/*
* static:他是一个关键字,用来修饰成员变量和成员方法
* static特点:
* 被所有的对象所共享
* 可以直接使用类名来调用
* 静态所修饰的成员加载优先于对象,随着类的加载而加载

注意事项:

静态方法:
可以调用静态的成员变量
可以调用静态的成员方法
只能在静态的方法中调用静态的成员

不可以调用非静态的成员变量
不可以调用非静态的成员方法

非静态方法:
可以调用静态的成员变量

*/

public class StaticDemo {
    public static void main(String[] args) {
        //Person.graduateFrom = "传智"; //static修饰的成员可以直接使用类名来调用。静态所修饰的成员加载优先于对象,随着类的加载而加载
Person p = new Person(); p.age = 18; p.name = "xiaoming"; p.graduateFrom = "cz"; p.speak(); Person p1 = new Person(); p1.age = 20; p1.name = "xiaohong"; // p1.graduateFrom = "cz"; //被所有的对象所共享 p1.speak(); } } class Person { String name; int age; // String graduateFrom; static String graduateFrom;//static修饰的成员可以直接使用类名来调用。静态所修饰的成员加载优先于对象,随着类的加载而加载
public void speak() { System.out.println(name + "----" + graduateFrom); } }

  打印结果

 

public class StaticDemo2 {
    public static void main(String[] args) {
        Student.graduateFrom = "cz";
        Student.study();//由于方法和参数都是静态的可以直接用类名调用
// Student.method(); Student s = new Student(); s.method(); s.eat(); } } class Student { String name; int age; static String graduateFrom; public static void study() { System.out.println(graduateFrom); //静态方法不能调用非静态的方法和变量 // System.out.println(name); // method(); sleep(); } public static void sleep() { System.out.println("sleep"); } public void eat() { //非静态的方法可以调用静态的方法和变量 System.out.println(graduateFrom); System.out.println(name);
     sleep(); }
public void method() { System.out.println("method"); } }

打印结果

原文地址:https://www.cnblogs.com/longesang/p/11131276.html