黑马程序员技术交流社区

标题: 变量的初始化问题 [打印本页]

作者: 老徐    时间: 2015-6-4 20:02
标题: 变量的初始化问题
这一段放在main方法中,结果如何?
        int x,y,z;
        z=(x+y)/2;
        x=0;y=0;
        System.out.print(z);

总结: 类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则JAVA会按上表为其添加默认值;方法里定义的数据成员称为变量,变量在参与运算之前必须赋初值。


作者: l598790586    时间: 2015-6-4 20:19
编译都通不过,怎么可能有结果
作者: wenweishan2015    时间: 2015-6-4 20:45
int类型,默认值0
作者: 老徐    时间: 2015-6-4 20:53
本帖最后由 老徐 于 2015-6-4 20:59 编辑
wenweishan2015 发表于 2015-6-4 20:45
int类型,默认值0

不是的你要编译下看看,二楼已透露了。我再给个详细的,下面写出了哪些自动初始化,哪些需要自己初始化
public class TestStatic {
static int x; //类的成员变量,JVM负责初始化
static int method()
{
    int y=0;  //此处必须自己初始化,它不属于类成员变量,是个method的局部变量,JVM不负责初始化

    return y;
}
public static void main(String[] args) {
     TestStatic as=new TestStatic();
     int z=0;  //此处必须自己初始化,它不属于类成员变量,是个主函数里的局部变量,JVM不负责初始化
     int aa=3; //此处aa参与了运算,所以必须初始化
     aa=aa+2;
     int a=1,b=2,max; //max只是负责接收表达式的值,不需要初始化
     max=a>b?2:1;
     System.out.println(max); //1
     System.out.println(aa); //5
     System.out.println("z="+z); //z=0
     System.out.println("x="+as.x); //x=0  

    System.out.println("y="+as.method()); //y=0
}
}
作者: wenweishan2015    时间: 2015-6-4 21:09
老徐 发表于 2015-6-4 20:53
不是的你要编译下看看,二楼已透露了。我再给个详细的,下面写出了哪些自动初始化,哪些需要自己初始化
pu ...

领教了,我一直以为都会自动初始化,
作者: 黯然残影    时间: 2015-6-4 21:43
编译不通过。x,y没有赋初值
作者: TOBESKY    时间: 2015-6-4 21:45
搞不懂楼主要说真么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2