当前位置: 代码迷 >> J2SE >> 小弟刚学java,有个变量的有关问题需要请问下各位大神
  详细解决方案

小弟刚学java,有个变量的有关问题需要请问下各位大神

热度:39   发布时间:2016-04-23 19:40:00.0
小弟刚学java,有个变量的问题需要请教下各位大神
前面这个方法是ok的,但是被注释的那一段,它提示我 Gift这个类声明的变量g没有进行初始化,这个我也好理解,但是不明白的是,第一个方法,Gift 也只是声明了一个变量g,也并没有给g初始化,为何不报错?Gift g写在方法的参数中和写在外面,有啥区别.............
public void pursue(Gift g,MM mm){
give(g,mm);
 
}

// public void pursue(MM mm){
// Gift g;
// give(g,mm);
//  
// }
------解决思路----------------------
第一种写法,你在调用pursue时,必须要传递一个Gift 对象作为参数,也就是g 在执行时是指向一个实例的。
而第二中写法,你调用pursue时,不会传递一个Gift 对象进来,Gift g 当然就没有实例化了。
------解决思路----------------------
第一:方法的参数定义是不需要手动初始化的,你想一下,方法是被调用的,调用该方法的时候自然会有值传递过来,所以根本不需要手动初始化参数值。第二:而方法内部的变量定义就不一样了,因为你在方法内部定义一个变量,调用该方法的时候并不要求一定要传递值过来,所以在执行的时候可能会出错,但是编译的时候已经不能通过了,这也是合理的,局部变量应该在方法内部手动初始化再使用,你定义一个局部变量,而你又不初始化就使用了这个变量,很明显是不合理的操作。
------解决思路----------------------
方法参数需要初始化吗= =
你调用的时候必须给他一个值,这不就是初始化吗
你那个局部变量,你不初始化怎么用
Java规定所有变量都要初始化
只是类成员变量编译器会给默认值(基本类型(0,0.0,false什么的)和引用类型=null),其他的都要你自己初始化
  相关解决方案