static存储方式修饰符

static修饰的变量或方法称为类变量或类方法,表明所修饰的对象是静态的,可以被类的所有对象共享。。没有被static修饰的变量则是实例变量,即在引用之前,需要被实例化。static可以在任何对象被创建之前访问,无需任何对象引用。

1. 实例变量和类变量(静态变量)

静态变量仅在生成第一个对象时分配内存,所有实例对象共享同一个静态变量。静态变量可以通过类名直接访问,而无须先生成一个实例对象,也可以通过实例对象访问类变量。

实例变量:每个对象的实例变量都需要分配单独的内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。

2.实例方法和类方法(静态方法)

实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。

      但是类方法不能访问实例变量,只能访问类变量。类方法可以有类名直接调用,也可以由实例对象进行调用。类方法中不能使用this 或super 关键字。


在创建对象sumcat的过程中,先在stack空间创建对象引用sumcat,然后在heap区new一个Test内存区,里面有cat和number2。然后把number1++的值赋给number2=3,然后number1+1=4。在summouse调用number1时,number1即为4。

如果number1不是static变量,则会在每个实例化对象分配的heap空间内都有不同的值,即在sumcat和summouse内,number1的值都为3。


例如

public class Test {

        private String cat;

        private static int number1 = 0;

        int number2;

        Test(String cat){

                this.cat = cat;

                number2 = number1++;

           }

         public void info(){

            System.out.println("There are "+number2+" "+cat+".");

        }

     public static void main(String args[]){

           Test.number1 = 3;

           Test sumcat = new Test("cats");

           Test summouse = new Test("mice");

           sumcat.info();

           summouse.info();

       }

}

输出:

There are 3 cats.
There are 4 mice.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值