请教一个问题

painAndhappy 2003-07-09 09:48:29
public class TestPar{
int inP;
void prt(){
System.out.println(inP);
}

void me(){
int inM = 0;
// int inM;
System.out.print(inM);
}

public static void main(String[] args){
TestPar tp = new TestPar();
tp.prt();
tp.me();
}
}

为什么类变量inP不需要初始化,而方法变量inM需要初始化,否则就会出错呢?
...全文
5 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hodex 2003-07-10
局部变量是不会被自动初始化的
回复
wangsheng1028 2003-07-10
java中类变量,也就是属性java会默认初始化,而不是不要初始化
数字类型的 默认为 0
boolean 的 默认为 false
对象类型 默认为 null

而方法变量也就是临时变量,使用时候必须先初始化
java new一个对象时候
1.装入需要的class,初始化static属性
2.初始化非static属性,如果没有初始化就使用默认的
3,调用构造方法对属性赋值
回复
xiaohaiz 2003-07-10
Field Initialization

当声明一个成员的时候,会自动根据其类型进行初始化.(记着,是成员)
可以使用常量,其它的成员.方法调用或者表达式对其初始化.
唯一的要求就是类型能够匹配.如果使用方法调用来进行初始化,无法捕获异常的.
如果成员没有初始化,那么系统会自动根据其类型进行初始化:

Type Initial value
--------------------------------
boolean false
char '\u0000'
byte,short,int,long 0
float +0.0f
double +0.0
object reference null
回复
painAndhappy 2003-07-10
谢谢各位!
回复
painAndhappy 2003-07-10
能给我讲一下java关于初始化方面的机制吗?
回复
yangtaylor 2003-07-10
作用域不同。没办法检查,除非编译的时候编译器就完全的走一遍。
回复
telenths 2003-07-09
不是 类变量inP不需要初始化
而是 Java 会自动给他初始化
数字类型的 默认为 0
boolean 的 默认为 false
对象类型 默认为 null

方法变量 则不会 默认初始化
回复
faqc 2003-07-09
一个在方法里,一个不在,
在方法里的一定要初始化的;
在类里的是PUBLIC,默认的已经初始化了,
这就是区别
回复
wsh_yao 2003-07-09
哦?真的么?
回复
accp 2003-07-09
java的bug
:)
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告