天天看点

static的用法(一):静态成员变量和静态成员方法

被static修饰的成员变量和成员方法独立于该类的任何对象。

被类所有的实例所共享。

当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例对象共用同一个static变量。这也就是说不管创建多少对象,static修饰的变量只占有一块内存。

1、静态成员变量:

声明为static关键词修饰的变量叫做静态成员变量,也叫全局变量。

静态成员变量的访问方式:

(1)直接通过类名调用类的静态成员变量:

类名.静态成员变量名
           

(2)通过对象名调用类的静态成员变量:

对象名.静态成员变量名
           

当成员变量需要在类的实例对象间共享时,使用static修饰成员变量,极为方便。

2、静态成员方法:

声明为static关键词修饰的方法叫做静态成员方法。例如:作为Java应用程序入口的main成员方法就是一个静态成员方法。

静态成员变量的访问方式:

(1)通过类名调用类的静态成员方法:

类名.静态成员方法名(成员方法调用参数列表)
           

(2)通过实例对象名调用类的静态成员方法:

对象.静态成员方法名(成员方法调用参数列表)
           

在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。

应用实例:

public class MyBook {

    //声明非静态成员变量 书名
    public String book_name ;   

    //声明静态成员变量,为类的所有实例所共享
    public static int book_number;

    //构造函数
    public MyBook(String book_name){
        this.book_name=book_name;
        book_number++;
    }

    public void print_book_name(){
        System.out.println("新买了一本书:"+this.book_name);
    }

    //静态成员方法,只能直接调用同类中其他的静态成员
    public static void print_book_number(){

        System.out.println(MyBook.book_number);
    }

    //main方法也是一个静态成员方法
    public static void main(String args[]){

        //new一本书“三体”
        MyBook book_1 = new MyBook("三体");

        MyBook book_2 = new MyBook("Java程序设计");

        //控制台打印第一本书的名字
        book_1.print_book_name();
        //控制台打印第二本书的名字
        book_2.print_book_name();

        //book_number为类的实例对象所共有

        //打印类对象的静态成员变量
        System.out.println("MyBook类中静态成员变量的值为:");
        MyBook.print_book_number();

        //打印book_1中静态成员变量
        System.out.println("book_1中静态成员变量的值为:");
        book_1.print_book_number();

        //打印book_2中静态成员变量
        System.out.println("book_2中静态成员变量的值为:");
        book_2.print_book_number();
    }

}
           
static的用法(一):静态成员变量和静态成员方法

所以,当一个数据需要给同一类的所有对象使用时,需要用static修饰。