为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的成员变量为什么不能先声明,再赋值?

Java中的成员变量为什么不能先声明,再赋值?

未卜先知 2016-09-30 14:13:15
public class demo{     int x ;     x = 1;  //这样不行 }public class demo{     int x = 10;  //这样就可以 }但是在方法中,先声明,再赋值就没问题:public class demo{     public static void main(String[] args) {         int x;         x = 1;     } }这是为什么?我用一个可能对java来说更直观的表述public class demo{     int[] array;     array = new int[10];  //同样在类中这么写是不可以的     // int[] array = new int[10] 这样就可以 }
查看完整描述

9 回答

已采纳
?
_仰望星空

TA贡献2条经验 获得超0个赞

成员变量在类的范围内,存在于堆内存中,会有默认的初始值,在声明的同时已经给变量赋值了。再次”赋值“实际是使用了语句,而类体里面只能出现变量和方法,不能出现语句。

查看完整回答
反对 回复 2016-09-30
?
丸子君3899929

TA贡献2条经验 获得超4个赞

因为在类中只能有定义,不能单独出现语句,像先声明在赋值,第二个就是赋值语句,这是规定!没有为什么一说,如果你一定要先声明在赋值你可以{x=10};括起来

查看完整回答
2 反对 回复 2016-10-01
?
杜发明

TA贡献202条经验 获得超301个赞

说一个更加直观的,记住定义全局变量不论是0,""还是null,要先赋值。

查看完整回答
1 反对 回复 2016-10-01
?
qq_小白杨_4

TA贡献1条经验 获得超0个赞

public class demo{

    int x ;

    x = 1; 

}

上边是2个操作,第一个,声明一个类的成员变量,第二个,对成员变量赋值,而成员变量属于对象,对它的赋值只能由对象来操作,在类中单独对其赋值,当然要报错了。成员变量可以不用赋初值,在new对象的时候,系统会默认分配一个初值,基本数据类型赋为0,引用类型的成员变量赋值为null

public class demo{

    int x = 1;   //这条语句是声明成员变量的同时并为其指定初始值,

}

public class demo{

    public static void main(String[] args) {

        int x;

        x = 1;

    }

}

这段代码在main方法中声明了一个局部变量,并且在main方法中为变量赋值,所以没有错误(这个变量的作用域只能是main方法,出了main方法再赋值就会报错了)

上边需要搞清楚的是,成员变量可以不赋初值,创建对象后直接使用,单局部变量必须要声明并赋值后,才能使用

查看完整回答
反对 回复 2017-09-22
?
慕粉13546656149

TA贡献5条经验 获得超3个赞

可以先声明,再在构造函数里面赋值。
查看完整回答
反对 回复 2016-09-30
?
LiUyInGkAi3391597

TA贡献7条经验 获得超1个赞

其实你没弄清楚成员变量,也就是实例变量和局部变量的区别。这个原因就是这两者的区别。实例变量是类的属性,而局部变量是方法的属性。作用域不同。

查看完整回答
反对 回复 2016-09-30
?
一条小咸鱼

TA贡献457条经验 获得超255个赞

类里面只能放成员变量和方法吧,赋值是个操作了。

查看完整回答
反对 回复 2016-09-30
?
Caballarii

TA贡献1123条经验 获得超629个赞

方法外部不能执行表达式,所以单独的x=1是非法的

查看完整回答
反对 回复 2016-09-30
?
安浪创想

TA贡献81条经验 获得超23个赞

可以的嘛,再赋值的时候要指名在本类。

public class demo1{
    int a;
    this.a =10;
}

当然,你使用的时候,还是去学习一下get和set这个东东吧,哈哈

查看完整回答
反对 回复 2016-10-01
  • 乙一
    乙一
    ????????啥????
  • 9 回答
  • 2 关注
  • 8131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信