java静态变量简介

问:
1:我发现静态变量怎么不能在构造方法和main方法里声明?
2:直接在类里面声明倒可以,但是紧接着在这个类里怎么修改这个静态变量?

答:

本人新手,不太懂答:以前我也很困扰因为书上讲的太专业化了,给你举个简单的例子,一个房子,房子里有很多人,房子就是类,人就是对象.房子里的家具电器什么的都是被那些人公用的就是static,他是类所拥有的东西,如果有人改动了他他就会被永久改动,比如说一个人损坏了他别人用的时候他还是损坏的.正因为这样在类创建的时候他就会被先加载进去(所以这会还没有人呢所以静态方法不能引用对象的东西),然后在创建对象什么的.而那些非静态的变量和方法就好比是人身上的衣服和人的行为,每个人的都有但是不一定一样.不是公用的是私有的,每个人可以随便改动自己的变量但不会对其他人的变量产生影响.所以说定义静态的就在类里定义就行,何必跑到方法里定义都是公用的嘛!
也可以辩证的理解,方法之间的变量是不能互相调用的,这不和static变量的功能相悖么
怎么修改,在自己的类里面直接修改就行,在其他类在前面加上类名点变量名就行,希望对你有帮助,有什么不会的可以再问

http://zhidao.baidu.com/question/328291830.html 

下面借助代码进行说明

public class StaticTest {

    public static int a = 100;//如果类的成员变量是静态的,那么在类加载时,
    //在方法区中会开辟一块空间存储该静态变量(基本类型)或者该变量的引用,
    //静态变量的这块内存空间是可以被所有的对象访问的,这也就是为什么是全局变量的原因了

    public static void main(String[] args) {
     modify(a);
     System.out.println(a);//输出100,因为a是函数内部的变量,该变量只有在方法被调用的时候才分配空间的,
     //很明显此a的被分配的空间和静态变量分配的空间是不一样的
     StaticTest.a++;//通过类名直接调用该静态变量,可以直接对其进行操作
     System.out.println(a);//输出101,所以已经改变了该静态变量
     
     StaticDemo.printA();//输出101,证明StaticTest.a的值已经被更改了
    }

    public static void modify(int a) { // 这函数参数是a
        a++; // 这个a是函数参数里的a,不是全局静态的a
             // 所以这里你改的是函数内部的a,而不是全局的静态变量a
             // 你把函数参数改个名别叫a,就行了
        System.out.println("=======modify====="+a);
    }
   }

class StaticDemo{
    public static void printA(){
        System.out.println(StaticTest.a);
    }
} 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值