猿问

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

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] 这样就可以
}


未卜先知
浏览 8277回答 9
9回答

_仰望星空

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

丸子君3899929

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

杜发明

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

qq_小白杨_4

public class demo{    int x ;    x = 1; }上边是2个操作,第一个,声明一个类的成员变量,第二个,对成员变量赋值,而成员变量属于对象,对它的赋值只能由对象来操作,在类中单独对其赋值,当然要报错了。成员变量可以不用赋初值,在new对象的时候,系统会默认分配一个初值,基本数据类型赋为0,引用类型的成员变量赋值为nullpublic class demo{    int x = 1;   //这条语句是声明成员变量的同时并为其指定初始值,}public class demo{    public static void main(String[] args) {        int x;        x = 1;    }}这段代码在main方法中声明了一个局部变量,并且在main方法中为变量赋值,所以没有错误(这个变量的作用域只能是main方法,出了main方法再赋值就会报错了)上边需要搞清楚的是,成员变量可以不赋初值,创建对象后直接使用,单局部变量必须要声明并赋值后,才能使用

慕粉13546656149

可以先声明,再在构造函数里面赋值。

LiUyInGkAi3391597

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

一条小咸鱼

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

Caballarii

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

安浪创想

可以的嘛,再赋值的时候要指名在本类。public class demo1{     int a;     this.a =10; }当然,你使用的时候,还是去学习一下get和set这个东东吧,哈哈
随时随地看视频慕课网APP

相关分类

Java
我要回答