静态变量赋值问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态变量赋值问题相关的知识,希望对你有一定的参考价值。
3楼的程序根本没法运行的,自己仔细看看了!首先说明:静态变量不是常量,
是变量,是可以和普通变量一样
来赋值的。
静态变量指的是他的生命周期是整个程序运行周期。
不会在函数void
fun1()
调用完毕就释放,而是还是存在的
而且变量的值不变。
同时,静态变量如果不赋初值的话,默认是0
而普通变量的值是不确定的,不知道的。
因为本质上是分配的不同的内存空间。
你肯定是上课的时候听错了,是只能定义一次,
而不是只能赋值一次,哈哈! 参考技术A 代码是按顺序执行的,后面的赋值当然会走,静态变量只赋值一次是没错的,你可以这样来验证。
void
fun1()
static
int
value
=
50;
value++;
pirntf("%d\n",
val);
int
main()
for(int
i
=
0;i<3;i++)
fun1();
return
0;
如果你理解静态变量的含义,相信你会看到预期结果的。。。本回答被提问者采纳 参考技术B 静态变量只能赋值一次是指
static
int
value
=
50;
这样的初始化语句只执行一次,
后面的value
=
100;还是每次都要执行的 参考技术C 谁和你说
静态变量只能赋值一次
不是这样的
静态变量
是定义的时候
初始化一次
使用静态代码块实现赋值静态成员变量
文章目录
对于集合类型的静态成员变量,应该使用静态代码块赋值,而不是使用集合实现来赋值。
//赋值静态成员变量反例
private static Map<String, Integer> map = new HashMap<String, Integer>(){
{
map.put("Leo",1);
map.put("Family-loving",2);
map.put("Cold on the out side passionate on the inside",3);
}
};
private static List<String> list = new ArrayList<>(){
{
list.add("Sagittarius");
list.add("Charming");
list.add("Perfectionist");
}
};
//赋值静态成员变量正例
private static Map<String, Integer> map = new HashMap<String, Integer>();
static {
map.put("Leo",1);
map.put("Family-loving",2);
map.put("Cold on the out side passionate on the inside",3);
}
private static List<String> list = new ArrayList<>();
static {
list.add("Sagittarius");
list.add("Charming");
list.add("Perfectionist");
}
以上是关于静态变量赋值问题的主要内容,如果未能解决你的问题,请参考以下文章