A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为啥全局变量
class a{
int x;
x = 5;
public void test()
{
     int y ;
     y =5 ;
}
}
会出现错误

局部变量可以了

各姿势百度依然找不到高深解说········

幻想·····是不是函数体外赋值这操作不能进行
函数体外进行操作都有哪些约束

12 个回复

倒序浏览
啥意思啊
回复 使用道具 举报
x = 5; 是一条语句,在一个类中要么是 成员,要么是函数,你弄出来一条语句当然错了

点评

哦哦!!!!!!!!!!!瞬间 明白~~~~谢谢 ······就是想知道,对于函数外能用的东西是啥!!! 原来 x = 5 这叫语句哦!!  发表于 2014-11-27 21:23
回复 使用道具 举报
你的意思是不是在函数外定义一个全局变量int x=5; 在函数内定义一个局部变量 int y=5;然后外面的是错的。里面的没出错?
回复 使用道具 举报
是不是在类中赋值语句执行不了
回复 使用道具 举报
不需要高深的回答,。出现错误的原因是因为,
局部变量在被建立的时候必须被初始化、
成员变量会默认初始化。

点评

这个明白, 只是想知道为什么函数外不能进行赋值操作····· 现在看来应该是java里面的规定 按楼上说的 ~类里面只能有成员变量和函数体 然后 a=5是语句   发表于 2014-11-27 21:35
回复 使用道具 举报
是不是类名和主函数名的问题
回复 使用道具 举报
main函数之前是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,不能设计可执行代码。

编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。
  
这是网上觉得比较靠谱的解释。
回复 使用道具 举报
类中的成员只能有方法和字段吧,特殊情形可以加个块语句,你将赋值语句放到这里(只能放在方法或者块语句中)是不符合语法规则的。
回复 使用道具 举报
x = 5;这个不能出现在class中,要出现在方法体重
回复 使用道具 举报
方法外的是成员变量,方法内的是局部变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马