(1)java局部变量在使用前“必须声明并赋初值”,还是“必须声明并赋过值”?,(2)“使用”是什么意思?

classTest{inta=3;voidf(){}publicstaticvoidmain(String[]args){Testt=newTest();t.f():Sy... class Test
{
int a=3;
void f(){ }
public static void main(String []args)
{
Test t=new Test();
t.f():
System.out.println(t.a);}
}

我想知道为什么静态的main函数能调用非静态方法f(),虽然f()是t的成员函数,但是他仍然是非静态函数呀!
展开
 我来答
鸿渺shadow
2013-07-19 · TA获得超过196个赞
知道小有建树答主
回答量:108
采纳率:100%
帮助的人:79.1万
展开全部
java局部变量在使用前必须声明并赋过值,使用就是对这个变量进行除了赋值之外的操作,如将其赋给别的变量,调用其成员方法等。
void f()
{
Integer a;
a=13;//这是对a进行赋值操作,不叫使用,使用是对这个变量进行除了赋值之外的操作,如将其赋给别的变量,调用其成员方法等。
比如 :
int b=a;
a.getInt();
等属于使用。
}

静态方法只能调用静态方法或访问静态成员,把那个被去掉。
更多追问追答
追问
a.getInt();//a只不过是个基本类型的变量,又不是对象类型,怎能调用方法getInt()呢?
追答
a我改成Integer类型了...只是为了给你举个使用的例子。
lkstarsea
2013-07-19 · TA获得超过315个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:187万
展开全部
(1)必须声明并赋过值。
(2)调用变量名用其值做任何操作包括打印输出,变量赋值计算等操作。
更多追问追答
追问
void f()
{
int a;
a=13;//这是对a进行赋值操作,那这叫不叫使用呢?
}
追答
这叫赋值,使用是a在等号右边。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Top7STYLE
2013-07-19
知道答主
回答量:86
采纳率:0%
帮助的人:19.6万
展开全部
(1)其实他们都是正确的,只是后者更为直观更易理解,而前者的说法更为标准、规范他们都是说明java中局部变量在被使用之前需要赋给它一个值,它才能被使用。不然编译的时候会出错的。
(2)使用就是将变量在某种方法里面的运用。
a=13不是使用,java中局部变量要声明并赋初始值,所以a=13只是给变量赋值还没被使用。
追问
class Test
{
int a=3;
void f(){ }
public static void main(String []args)
{
Test t=new Test();

System.out.println(a);//对吗?
System.out.println(t.a);//对吗?那个能正确输出?
t.f();
}
}
上面两个输出,哪个能正确输出?
还有t.f();改为f();可以吗?
追答
(1)第二个可以正确输出
(2)不可以
你看啊,它是通过Test类创建的一个对象t(也就是一个实例)再用这个对象t调用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhengmin200809
2013-07-19 · TA获得超过181个赞
知道答主
回答量:68
采纳率:0%
帮助的人:87.9万
展开全部
在JDK1.5之后可以不用给数据赋值,它有默认值,但为了开发方便,建议给出。

System.out.println(t.a);输出是正确的,结果为3

System.out.println(a)犯了一个错误,静态方法中只能用静态变量,而a不是静态的
更多追问追答
追问
t.f();也不是静态方法呀,为甚麽能在静态的main函数中调用?
追答
如果不是静态方法的话,必须要指定方法的对象,如t。你在 静态方法中调用的都是静态的变量或静态的方法,如果不是,就要指定对象。这个地方对java初学者来说,容易出错。

还有一点需要申明的是,静态方法不能调用非静态的方法这句话有问题。是静态方法中不能直接调用非静态的方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李晓健
2013-07-19 · TA获得超过183个赞
知道小有建树答主
回答量:293
采纳率:0%
帮助的人:191万
展开全部
1 必须声明并赋过值
2 使用就是你代码中除了声明的地方 还有其他的地方出现过它
更多追问追答
追问
可是有的书上却说是使用前要赋初值,为什么?
追答
意思就是在使用前必须是有值的     赋初值是第一次赋值。就是默认的值    这个值在程序后面是可以改的  就是赋值

这是赋值 不是使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式