您的位置:首页 > 编程语言 > Java开发

java基础:为什么有的对象只声明不初始化不会报错?

2015-07-24 11:09 447 查看
最近在学习多线程,在学习过程中遇到一个与Java基础相关的问题,如下有注释的那行,为什么对象只声明不初始化不会报错?

public class PrintNumber {

public int i;

public static void main(String[] args) {

PrintNumber printNumber = new PrintNumber();

Thread thread1 = new NumberThread("thread-1",printNumber);

Thread thread2 = new NumberThread("thread-2",printNumber);

thread1.start();

thread2.start();

}

}

class NumberThread extends Thread{

PrintNumber printNumber; //不用初始化???

public NumberThread(String name,PrintNumber printNumber){

super(name);

this.printNumber = printNumber;

}

@Override

public void run() {

for(;printNumber.i<1000;printNumber.i++)

System.out.println(this.getName()+":"+printNumber.i);

}

}

问题解决:

如果一个变量在类中定义,那么这个变量就是全局变量;而在类中的方法、函数中定义的变量就是局部变量。在Java中,全局变量就是在类的整个范围之内,都有效的变量。而局部变量就是在类中某个方法函数内或某个子类内,有效的变量。全局变量可以不用进行初始化赋值工作,而局部变量必须要进行初始化赋值工作。

参考资料:http://www.douban.com/note/281043578/

这是自己的第一篇博文,希望自己能养成总结知识,记录知识的好习惯,也希望自己能原创更有深度的文章!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: