小弟,想问问高手们一个问题。如果,static声明的变量过多,会造成什么样的结果呢?又说说static声明的变量优点在哪,缺点又在哪?别COPY网上没有用的来哈,别打发我。。谢谢!
Javaä¸çstaticåéçä¼ç¼ºç¹:
staticçåéå±äºç±»æ¬èº«ï¼ææçå®ä¾çè°ç¨çéæåéçå¼é½æ¯ä¸æ ·çï¼å¨1个类éæ¹åäºä¸ä¸ªéæåéçå¼çè¯ææçå®ä¾å¨è°ç¨è¿ä¸ªå¼çæ¶åå°±å ¨é½åçäºååã 对äºç±»æ¥è¯´ï¼æååéçä»·å¼å°±æ¯å¨åæ¯ä¸ªç±»åç¬çä¿¡æ¯ï¼æ¯å¦æä¸ä¸ªå¦çç±»ï¼æ¯ä¸ªå¦ççå²æ°å°±æ¯ä¸ä¸ªæååéï¼è¿ä¸ªå¼æ¯ä¸ªå®ä¾é½åºè¯¥æ¯ä¸ä¸æ ·çï¼è¿ä¸ªæ¶åå°±ç»å¯¹ä¸è½ç¨éæçåééæçåéä¸è¬å¯ä»¥ç¨æ¥ç»è®¡ä¸å ±åé äºå¤å°ä¸ªå®ä¾.....æè å¹²èè¿ä¸ªç±»å ¨é¨é½æ¯éæçæ¹æ³ï¼é£å°±åªè½ç¨éæçåé
staticçåéå±äºç±»æ¬èº«ï¼ææçå®ä¾çè°ç¨çéæåéçå¼é½æ¯ä¸æ ·çï¼å¨1个类éæ¹åäºä¸ä¸ªéæåéçå¼çè¯ææçå®ä¾å¨è°ç¨è¿ä¸ªå¼çæ¶åå°±å ¨é½åçäºååã 对äºç±»æ¥è¯´ï¼æååéçä»·å¼å°±æ¯å¨åæ¯ä¸ªç±»åç¬çä¿¡æ¯ï¼æ¯å¦æä¸ä¸ªå¦çç±»ï¼æ¯ä¸ªå¦ççå²æ°å°±æ¯ä¸ä¸ªæååéï¼è¿ä¸ªå¼æ¯ä¸ªå®ä¾é½åºè¯¥æ¯ä¸ä¸æ ·çï¼è¿ä¸ªæ¶åå°±ç»å¯¹ä¸è½ç¨éæçåééæçåéä¸è¬å¯ä»¥ç¨æ¥ç»è®¡ä¸å ±åé äºå¤å°ä¸ªå®ä¾.....æè å¹²èè¿ä¸ªç±»å ¨é¨é½æ¯éæçæ¹æ³ï¼é£å°±åªè½ç¨éæçåé
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2017-11-25
static的变量属于类本身 所有的实例的调用的静态变量的值都是一样的~你在1个类里改变了一个静态变量的值的话所有的实例在调用这个值的时候就全都发生了变化.
对于类来说 成员变量的价值就是储存每个类单独的信息 比如你有一个学生类 每个学生的岁数就是一个成员变量 这个值每个实例都应该是不一样的 这个时候就绝对不能用静态的变量
静态的变量一般可以用来统计一共创造了多少个实例.....或者干脆你这个类全部都是静态的方法 那就只能用静态的变量本回答被提问者采纳
对于类来说 成员变量的价值就是储存每个类单独的信息 比如你有一个学生类 每个学生的岁数就是一个成员变量 这个值每个实例都应该是不一样的 这个时候就绝对不能用静态的变量
静态的变量一般可以用来统计一共创造了多少个实例.....或者干脆你这个类全部都是静态的方法 那就只能用静态的变量本回答被提问者采纳
第2个回答 2012-02-29
static声明的变量过多,会造成占用内存过多,因为它声明的变量要等到整个程序结束才释放。
static一般在全局变量中用。如果在局部变量中用,局部函数结束后它的值依然保留着
static一般在全局变量中用。如果在局部变量中用,局部函数结束后它的值依然保留着
第3个回答 2012-02-23
问题有点怪,打个比方,一个类里面如果有用static修饰的变量,那么,这个变量会在被执行构造方法之前就初始化,也就是在这个类被实例化之前,而且,就算这个类被new()N次,被static修饰的这个变量始终是相等的,例如:
A类有个t属性被static修饰
A a=new A();
A a1=new A();
a1.t=a.t;
不管t是基本类型还是对象,绝对恒等,因为他们指向同一个引用地址,
基于这种特性,所以,static变量一般在应用中都会用于保存全局的属性,比如说系统参数、或者是公用的一些参数,方便调用和修改。
缺点就在于,static变量不能用于保存局部信息,比如说,我把淘宝网的购物车对象用static修饰,后果可想而知,每个人购物车里的东西都会一样
A类有个t属性被static修饰
A a=new A();
A a1=new A();
a1.t=a.t;
不管t是基本类型还是对象,绝对恒等,因为他们指向同一个引用地址,
基于这种特性,所以,static变量一般在应用中都会用于保存全局的属性,比如说系统参数、或者是公用的一些参数,方便调用和修改。
缺点就在于,static变量不能用于保存局部信息,比如说,我把淘宝网的购物车对象用static修饰,后果可想而知,每个人购物车里的东西都会一样
第4个回答 2012-02-23
非高手,仅说一下自己的想法,static变量是在程序加载时赋值,具体说有什么优缺点嘛,就不太清楚了,适当的用吧