当前位置: 代码迷 >> Java相关 >> 请教大家几个问题
  详细解决方案

请教大家几个问题

热度:235   发布时间:2005-02-20 15:02:00.0
请教大家几个问题
1.C++中,定义一个类时,不能对成员变量赋初值;而JAVA中好象可以.
      class MyClass
{
int x=10;   //这里为什么可以为成员变量赋初值?
public MyClass()
{
}
public MyClass(int intx)
{
  x=intx;
}
public static void main(String args[])
{
  MyClass obj1=new MyClass();
  System.out.println(obj1.x);
  MyClass obj2=new MyClass(20);
  System.out.println(obj2.x);
}
}
2.上面的成员变量x这样赋初值后,在类装载进内存时会为它分配内存空间吗?(好象只有静态的才会分配).这样定义合法(能通过编译和顺利运行),好象构造函数的功能因此削减了不少.不过是不是这样定义没意义?或者说不提倡?
3.C++中定义常量用CONST,在JAVA中是不是用final?而在方法里可以定义常量吗?比如在某方法中final int y=30;  这样可以没吗?

谢谢大家!
----------------解决方案--------------------------------------------------------
1:很多东西没有这么多为什么的,OK?这就是规定,你要去适应,同样的我也可以反问:C++里为什么不可以赋值呢?
2:一般都是提倡在构造器里进行赋值的,这样的写法只能算是一个trick吧,可能会有需要的时候,增加灵活性,可以这么理解
3:是用final。可不可以你试一下就知道了,这样你会记得更牢,嘿嘿
----------------解决方案--------------------------------------------------------
谢谢tempnetbar!
其实我也觉得研究这样的问题好象没什么意义,有点钻牛角.看来应该想的多想,不应该想的不能浪费时间.

再请教tempnetbar一个问题:我学Java没多少时间,你觉得作为初学者的我刚刚开始有没有必要花太多时间在诸如上面我问的问题?
----------------解决方案--------------------------------------------------------
嗯……这个嘛~ 第一:关于Java的语法是一定要熟悉的,这点是肯定的。 第二:如果你要熟悉Java的语法以及他的一些trick(技巧)或者是trap(陷阱)及pitfall(缺点)的话可以看SL-275官方教程(熟悉语法,trick,trap等),JavaRule(回答诸如为什么的问题以及一些trap和pitfall),PraticalJava(基本上都很有用) 第三:由于你是初学我建议你看看http://bbs.bc-cn.net/bbs/dispbbs.asp?BoardID=8&ID=4267这个帖,并且推荐你看SL-275的教材,然后再作决定,要不要看我推荐的那些书(不包括那本官方教材)
----------------解决方案--------------------------------------------------------