黑马程序员技术交流社区
标题:
成员变量有默认初始化值,不给初始值也能参与运算?
[打印本页]
作者:
danielzyj
时间:
2014-3-26 19:28
标题:
成员变量有默认初始化值,不给初始值也能参与运算?
本帖最后由 danielzyj 于 2014-3-27 08:35 编辑
class test
{
public static void main(String[] args)
{
int i, j, k;
i=100;
while (i>0)
{
j=i*2;
System.out.println("The value of j is " + j );
k=k+1;
i--;
}
System.out.println("Hello World!");
}
}
复制代码
毕老师在讲面向对象封装的时候讲到,成员变量有默认初始化值,不给初始值也能参与运算,为什么我这个会报错提示没有初始化值呢?
作者:
tcny
时间:
2014-3-26 19:38
public class Testt {
int j;
public static void main(String[] args) {
int i;
Testt t = new Testt();
System.out.println(t.j); //j封装在类Testt里,有初值0
System.out.println(i);//错误,i在main方法中,没有封装
}
}
复制代码
作者:
chen_x
时间:
2014-3-26 19:41
你程序里的 int i, j, k;是定义在类test的成员函数--main函数里的,所以 i, j, k都不是成员变量,而是局部变量。
将 i, j, k定义在main函数外面就是成员变量了,而且要定义成static的:
class test
{
static int i,j,k;
public static void main(String[] args)
{
i=100;
while (i>0)
{
j=i*2;
System.out.println("The value of j is " + j );
k=k+1;
i--;
}
System.out.println("Hello World!");
}
}
作者:
唐僧踏歌
时间:
2014-3-26 20:20
上面程序 main方法里整形变量 i,j,k属于局部变量,不会自动地以类型的默认值赋值的,需要显示赋值才行。
如果是成员变量的话,系统就会自动以类型的默认值赋值。
j=i*2; j已经显示赋值了,错是在局部变量K上,只要令k=0或者什么整数,就行了。。谢谢
作者:
湛添友
时间:
2014-3-26 20:28
k=k+1错了,k都没赋值!!
作者:
追逐
时间:
2014-3-26 20:39
转函数中定义的变量是局部变量。只有直接定义在类中的变量才是成员变量
如:
class Test {
int i,j,k; //这种形式的变量才是成员变量
public static void main(String[] args) {
int a,b,c; //这种形式的变量是局部变量不是成员变量
}
}
作者:
osully
时间:
2014-3-26 20:43
直接定义在类中的才叫成员,也就是说对象一建立就会有的属性
其他都是局部的.
作者:
Mr.__ㄨīn
时间:
2014-3-26 22:31
i j k 是局部变量,不是成员变量。
public static void main(String[] args)
{
int i, j, k=0;
i=100;//给i赋值
while (i>0)
{
j=i*2;//给j赋值
System.out.println("The value of j is " + j );
k=k+1;//没有赋值,直接参加运算,肯定报错。
i--;
}
System.out.println("Hello World!");
}
复制代码
作者:
橡皮-leo
时间:
2014-3-27 10:57
因为你的i,j,k是属于局部变量而不是成员变量,成员变量是在一个类在外层大括号内定义的。
作者:
trhthyj
时间:
2014-3-27 12:39
成员变量是定义在类里面,函数之外的变量;i,j,k都是在主函数中,是局部变量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2