日期:2014-05-20  浏览次数:20596 次

新手遇到java的一个小问题,希望大家可以帮帮!

class E
{
int x;   //代码1
long y = x;  //代码2
public void f(int n) 
{
int m;   //代码3
int t = n + m;  // 代码4
  }
}

题目问上面程序哪个代码错误。我认为是代码2和代码3,因为代码2中long型需要有L后缀,所以应该改为
long y = xL;代码3中,在局部变量必须初始化,所以应该改为m = 0之类,但是答案说是代码4错,怎么回事。
新学习java,已经翻书看之前的定义,实在没办法了就发个帖问问,希望大家帮帮。

------解决方案--------------------
代码4错是因为你使用了没有初始化的局部变量,如果局部变量不使用可以不初始化,使用就必须初始化,但变量声明之后不使用就是去意义了。不管怎么样,定义变量初始化是一个好习惯,
------解决方案--------------------
m没有初始化就在那里使用了,m只是一个对象的引用,而这里没有让它指向一个实例对象(如int m=3),所以报错了。
------解决方案--------------------
使用long数据类型后面不加上L  JAVA也是可以的,全局变量可以不用初始化,但是局部变量必须要要
------解决方案--------------------
引用:
m没有初始化就在那里使用了,m只是一个对象的引用,而这里没有让它指向一个实例对象(如int m=3),所以报错了。

就是这样
------解决方案--------------------
没有给m 初始化,n没有接受任务数值
------解决方案--------------------
引用:
代码2中long型需要有L后缀,所以应该改为
long y = xL


怎么会有这种想法???
------解决方案--------------------
局部变量初始化