Java 中变量不赋值使用就会出错,但是如果把一个变量封装到一个类中,在实例化对象时却没这问题。为什么?

classnumber{inti;}publicclasstext{publicstaticvoidmain(Stringargs[]){numberi=newnumbe... class number{
int i;
}
public class text {
public static void main(String args[])
{
number i =new number();
number j =new number();
i.i=1;
j.i=3;
System.out.println(i.i);
System.out.println(j.i);
}
};
展开
 我来答
15985360911
2012-08-14 · 超过25用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:61.8万
展开全部

Java中的变量分为局部变量和全局变量,局部变量就是在方法中声明的变量,而全局变量就是在类中声明的变量,在java中有这么一条规则,声明在方法中的变量在使用时必须要初始化(注意这里是使用时,如果不使用的话,你也可以不赋值,但是一般变量声明了之后都是要使用的,所以你最好初始化),否则不能通过编译。

   就拿你的程序来举例吧: 

 

class number {

 int i;//声明全局变量,因为在类中,所以是全局变量,不用赋初值,默认的值是0.注意全局变量如果没有赋初值,都有默认值,例如String类型的默认值是null.

 public int get(){//定义一个方法。

  int num1;//声明局部变量,在方法内部所以是局部变量,没有使用,所以可以不用赋初值,如果使用的话必须赋初值。

  int num2;

  int num3=3;//声明局部变量,用来作为返回值,使用了,所以要初始化,否则不能通过编译。

  //System.out.println(num2);错误因为num2没有初始化就使用。

  return num3;

 }

}

public class text{

 public static void main(String args[]) {

  number i = new number();

  number j = new number();

  System.out.println(i.i);//直接打印出默认值。
  System.out.println(j.i);//直接打印出默认值。

  i.i = 1;

  j.i = 3;

  System.out.println(i.i);

  System.out.println(j.i);

 }

输出结果:

帐号已注销
2012-08-14 · TA获得超过120个赞
知道答主
回答量:166
采纳率:0%
帮助的人:64.7万
展开全部
实例化对象,会默认赋初始值,数字类型的就是0,其他类型的就是null。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a609122285
2012-08-14 · 超过28用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:66.9万
展开全部
实例化对象的时候 会设置默认值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式