Java类成员变量 的初始化问题

day_learn 2010-09-07 12:13:23
class A
{
int a=1;
}
class B
{
int a;
a=1;
}
在上面的两种类中,类A是合法的,类B编译不能通过,望高手说明下原因
...全文
296 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
avalon 2010-09-07
  • 打赏
  • 举报
回复
首先类A中的"int a=1",这是一条变量初始化语句,JVM在加载类时候会执行初始化语句.然后类B中"int a;a=1"中,其中"a=1;"这是一条赋值语句,在编写类时不能够在类中对变量进行赋值,只能够初始化.
day_learn 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 humanity 的回复:]
引用 1 楼 mojunbin 的回复:

首先类A中的"int a=1",这是一条变量初始化语句,JVM在加载类时候会执行初始化语句.然后类B中"int a;a=1"中,其中"a=1;"这是一条赋值语句,在编写类时不能够在类中对变量进行赋值,只能够初始化.


除了变量初始化的赋值语句之外,其它的能称”用于执行“的语句都应该出现在方法/构造器/初始化块中,不是什么地方都可以写“用于执行……
[/Quote]
还是有些不明白,希望说明下为什么不能在哪里赋值。初始化和先定义后赋值在内存的分配上到底有什么区别?拜望答案!
lenooooo 2010-09-07
  • 打赏
  • 举报
回复
学习了
2244079 2010-09-07
  • 打赏
  • 举报
回复
.......引用错了..!~
2244079 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 day_learn 的回复:]
class A
{
int a=1;
}
class B
{
int a;
a=1;
}
在上面的两种类中,类A是合法的,类B编译不能通过,望高手说明下原因
[/Quote]
coolbamboo2008 2010-09-07
  • 打赏
  • 举报
回复
楼上都说的很对,说到底楼主还是面向过程的思想,如果说int a是一个属性,那么后面的给属性赋值应该放到方法里面,面向对象的语言都是这么设计的
冰山6 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 humanity 的回复:]
引用 1 楼 mojunbin 的回复:

首先类A中的"int a=1",这是一条变量初始化语句,JVM在加载类时候会执行初始化语句.然后类B中"int a;a=1"中,其中"a=1;"这是一条赋值语句,在编写类时不能够在类中对变量进行赋值,只能够初始化.


除了变量初始化的赋值语句之外,其它的能称”用于执行“的语句都应该出现在方法/构造器/初始化块中,不是什么地方都可以写“用于执行……
[/Quote]
说的好,我UP
humanity 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mojunbin 的回复:]

首先类A中的"int a=1",这是一条变量初始化语句,JVM在加载类时候会执行初始化语句.然后类B中"int a;a=1"中,其中"a=1;"这是一条赋值语句,在编写类时不能够在类中对变量进行赋值,只能够初始化.
[/Quote]

除了变量初始化的赋值语句之外,其它的能称”用于执行“的语句都应该出现在方法/构造器/初始化块中,不是什么地方都可以写“用于执行”的一条语句。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧