黑马程序员技术交流社区
标题:
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