黑马程序员技术交流社区

标题: java中关于成员变量与局部变量的小问题 [打印本页]

作者: 虎牛龙马    时间: 2014-3-26 20:43
标题: java中关于成员变量与局部变量的小问题
我们都知道JVM能赋给类中的成员变量一个默认的初始值,但是局部变量就必须自己初始化。
哪位大侠知道这是基于什么考虑的啊?

作者: 年轻的老头    时间: 2014-3-26 21:11
成员变量有可能通过cheng成员函数来初始化,所以让成员变量一个默认的初始值,但是局部变量只能在函数体里初始化,所以要求显性初始化。
作者: papercup    时间: 2014-3-26 23:15
局部变量和成员变量主要是他们作用域的区别,
成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。
另外,成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。
还有,在内存中的位置也不一样。成员变量在所在类被实例化后,存在堆内存中;局部变量在所在方法调用时,存在栈内存空间中。
作者: 虎牛龙马    时间: 2014-4-9 11:34
年轻的老头 发表于 2014-3-26 21:11
成员变量有可能通过cheng成员函数来初始化,所以让成员变量一个默认的初始值,但是局部变量只能在函数体里 ...

package base.day8;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileInputStreamDemo {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
               
                //第一步:创建源
                String filename = "G:\\java\\workspace1\\" +
                                                  "javaenhance\\src\\base\\" +
                                                  "day8\\FileInputStreamDemo.java";
               
                //第二步:创建管道
                InputStream in = new FileInputStream(filename);
               
                //第三步:读写操作
                byte[] buff = new byte[1024];//定义缓冲区
                int len;//读到文件末尾,结束标记!!!!
                while((len = in.read(buff)) !=-1 ) {//当len等于-1,文件结束。
                        System.out.println(new String(buff,0,buff.length));
                }
                System.out.println("------------------");
               
                in.close();
        }

}
那上面标红的在myeclipse中编译怎么不报错???
作者: 执笔梦    时间: 2014-4-9 22:22
本帖最后由 执笔梦 于 2014-4-9 22:32 编辑

    个人见解:   
   局部变量不是说一定要在定义的时候就赋值...在你对于他进行运算操作或其它操作时,要对它进行赋值操作,因为它是没用默认数值的


            int len;你在这定义一个局部变量,没有赋值,不会报错,
                while((len = in.read(buff)) !=-1 ) {//你在这其实就是赋值操作,read()方法返回的是一个int型 的值..看下read()方法的api,
我也不知道对不对...




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