A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 老徐 中级黑马   /  2015-6-4 20:02  /  287 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这一段放在main方法中,结果如何?
        int x,y,z;
        z=(x+y)/2;
        x=0;y=0;
        System.out.print(z);

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

6 个回复

倒序浏览
编译都通不过,怎么可能有结果
回复 使用道具 举报
int类型,默认值0
回复 使用道具 举报
本帖最后由 老徐 于 2015-6-4 20:59 编辑

不是的你要编译下看看,二楼已透露了。我再给个详细的,下面写出了哪些自动初始化,哪些需要自己初始化
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
}
}
回复 使用道具 举报
老徐 发表于 2015-6-4 20:53
不是的你要编译下看看,二楼已透露了。我再给个详细的,下面写出了哪些自动初始化,哪些需要自己初始化
pu ...

领教了,我一直以为都会自动初始化,
回复 使用道具 举报
编译不通过。x,y没有赋初值
回复 使用道具 举报
搞不懂楼主要说真么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马