黑马程序员技术交流社区

标题: Static成员变量初始化问题 [打印本页]

作者: Smart_lll    时间: 2014-11-22 07:27
标题: Static成员变量初始化问题
本帖最后由 Smart_lll 于 2014-11-22 07:28 编辑

Static成员变量在声明时,必须赋值吗?先声明再赋值为什么会报错呢?:Q 求解!
正确代码:
class Person{         private static String country = "cn";
...
}

错误代码:
class Person{
       private static String country;
       country = "cn";
...
}



QQ截图20141122072555.png (99.97 KB, 下载次数: 40)

QQ截图20141122072555.png

作者: wzg1015    时间: 2014-11-22 08:31
先去了解下基础语法吧。
作者: kerner    时间: 2014-11-22 09:36
类中只能定义变量或者方法,还有两种代码块,静态代码块和动态代码块。所以你的赋值语句必须放在代码块中。
作者: Smart_lll    时间: 2014-11-22 11:14
kerner 发表于 2014-11-22 09:36
类中只能定义变量或者方法,还有两种代码块,静态代码块和动态代码块。所以你的赋值语句必须放在代码块中。 ...

ok,thank you ! :handshake
作者: Smart_lll    时间: 2014-11-22 11:19
kerner 发表于 2014-11-22 09:36
类中只能定义变量或者方法,还有两种代码块,静态代码块和动态代码块。所以你的赋值语句必须放在代码块中。 ...

但是在类中使用 private static String country = "cn";这条语句不算是赋值吗?
作者: dong53821713    时间: 2014-11-22 12:04
本帖最后由 dong53821713 于 2014-11-22 12:22 编辑

静态变量在声明的时候赋值,或者在静态代码块中赋值,再或者放到方法中赋值。
类体中不能给已经声明的变量赋值,语法问题


class Person{
       private static String country;//这样写可以,默认初始化
       private static String country = "cn";//这样写也可以,手动赋值
       country = "cn";//这样不对。在类体中不允许对已经声明的数据成员进行赋值,语法就是这样规定的
...
}

作者: kerner    时间: 2014-11-22 13:32
Smart_lll 发表于 2014-11-22 11:19
但是在类中使用 private static String country = "cn";这条语句不算是赋值吗?

这是初始化语句。
作者: Smart_lll    时间: 2014-11-22 14:07
dong53821713 发表于 2014-11-22 12:04
静态变量在声明的时候赋值,或者在静态代码块中赋值,再或者放到方法中赋值。
类体中不能给已经声明的变量 ...

(⊙o⊙)恩恩,谢谢!!!
作者: Smart_lll    时间: 2014-11-22 14:10
kerner 发表于 2014-11-22 13:32
这是初始化语句。

哦了,晓得了!
作者: 张凯zk47    时间: 2014-11-22 15:04
正在学习基础的路途中……
作者: zhmwt    时间: 2014-11-22 15:47
在c++中,当声明成员变量时,还没为成员变量分配空间,如果是静态变量,也只能在类外面进行初始化,
作者: 壹贰叁    时间: 2014-11-22 16:06
不只是静态变量,普通变量在类中定义,也不能使用动态赋值
作者: relice    时间: 2014-11-22 21:18
我猜你是学过C语言吧  int a;   a = 5;C语言里面是可以这样的
作者: Smart_lll    时间: 2014-11-22 21:36
relice 发表于 2014-11-22 21:18
我猜你是学过C语言吧  int a;   a = 5;C语言里面是可以这样的

我学的很广泛,从VB,C,C#,C++,到Java,但就是不精通,现在主要学java。:Q
作者: 迷失的小Z    时间: 2014-11-22 21:37
kerner 发表于 2014-11-22 09:36
类中只能定义变量或者方法,还有两种代码块,静态代码块和动态代码块。所以你的赋值语句必须放在代码块中。 ...

受教了……
作者: 斷灬dian    时间: 2014-12-31 11:26
来学习。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2