静态变量赋值问题

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");
}

以上是关于静态变量赋值问题的主要内容,如果未能解决你的问题,请参考以下文章

使用静态代码块实现赋值静态成员变量

使用静态代码块实现赋值静态成员变量

关于java静态变量取值的问题。

C# 静态类如何赋值,LINQ有关。

c++中静态成员变量和静态成员函数(笔试经历)

使用@Value注解给静态变量赋值