小弟新人,昨天看到书上写的.在函数内定义变量是不可以的.因为JAVA会保证将变量初始化,所以不能在函数内定义变量.好像是这样
void first()
{
   int i;
   ....
}
到底能不能在函数内定义变量呢.请指点

解决方案 »

  1.   

    在方法内定义变量必须要初始化后才能使用,也就是说JAVA是不负责去初始化局部变量
      

  2.   

    就拿这个例子来说,局部变量是可以这么声明的么? 如果这样声明i的值是null还是别的
      

  3.   

    可以的
    用out.print打印一下 不就看出来了么
      

  4.   

    单独这样声明是错误的,无法编译通过,你可以试试
    int i;
    System.out.println(i);
    在使用i之前,必须有一个初始化的过程,如
    int i = 0;
    或是
    int i;
    i = 0;
    另外要注意一点的是,对变量的初始化是必须保证执行的,除非在执行过程中出现error
    因此,下面的这种写法也不会编译通过:
    int i;
    if(false) {
       i = 0;
    }
      

  5.   

    首先在OOP中应该改口不应该再叫函数了,叫方法,呵呵。对于你的问题,在方法中是完全可以定义变量的,但注意如果在方法中要使用你定义好的变量的话,则必须对它进行初始化,否则会异常:variable $VAR might not have been initialized.说明$VAR这个变量没有初始化。这段测试代码你test一下:
    public class test
    {
      public static void main(String[] s)
      {
        testa();
      }
      
      static void testa()
      {
        int i;
        //int i = 10;
        //System.out.println(i);
      }
    }
      

  6.   

    这主要是由于java的安全机制在发挥作用。
      

  7.   

    java里很多东西有双重特性,主要都是面向对象的特性造成的。
    再比如,equals()方法,你自定义的类并且没有继承已经将equals()方法重写的类的话,那你使用时就是比较是不是同一个对象,而重写的如String,你用这个方法就是比较值是否相同,等等
    多实践 ,有好处
      

  8.   

    在方法内定义变量必须要初始化后才能使用,也就是说JAVA是不负责去初始化局部变量;当变量作为 类成员变量时,Java才会确保这些变量默认值初始化。
      

  9.   

    我补充一下: 不要以为没有初始化的变量就是null, 这是大错特错.赋值为null, 和没有初始化是二回事, 换句话说, 赋值为null就已经初始化了.一个没有初始化的变量不能进行任何操作, 编译器会保证这一点. 编译器还保证成员变量无论何时都会初始化(即使你没有显式地这么做), 但对于本地变量(即方法体内变量), 你必须自己初始化.