1.String类的定义问题:在类中直接这样写String s=null; s="sdfa";是报错的,因为String类被重复赋值了,但是我不明白为什么在方法中,这样写是可以的,这是为什么。
例如:
public void init()
{
 String s=null;
 s="dsfaf"; 
}
这样写是没问题的,为什么?
2.例如在applet中,可以用到这样一种定义方式:Image img=createImage(width,height);,
我不是很明白createImage的对象在哪里?怎样确定它是来自哪个对象的方法??

解决方案 »

  1.   

    java.lang.Object
      |
      +--java.awt.Component
            |
            +--java.awt.Container
                  |
                  +--java.awt.Panel
                        |
                        +--java.applet.Appletjava.awt.Component中定义了createImage方法
      

  2.   

    1,这个跟java的思想有关,程序里声明变量是不受限制的,但是一般的执行语句只只能够放在方法体内,这个可能讲得不是很好
    2,createImage的方法自然就是这个applet了,楼主用ide的话用this.看后面有没有这个方法就知道了
      

  3.   

    String s=null; 是定义一个成员;不在某个方法中,如果在某个方法中,则是定义一个局部变量。s="asdfg"; 是一个可执行的语句,必须在某个方法中。
      

  4.   

    给你一个例子吧,有的类不喜欢你直接生成对象, 构造函数private了,但你可以通过其它方法生成。这样的例子很多,你学到后面的知识,自然就明白了。
    class A
    {
    private A(){}
    public static A creatA()
    {
    return new A();
    }
     void ptn()
    {
    System.out.println("That is OK");
    }
    }public class B{
    public static void main(String[] args)
    {
    A a = A.creatA();
    a.ptn();
    }
    }
      

  5.   

    我知道在Component中定义了createImage方法,我不明白的是哪里有实例化对象?
      

  6.   

    照lgh2008(ar_guang)说的,那Image img=createImage(width,height);可以写成Image img=img.createImage(width,height);,对吗?
    如果是这样又好像明白了一点
      

  7.   

    不是啊!Image img=img.createImage(width,height);
               ^ img还没被创建,createImage也不是Image类的方法。其实可以这样写:Image img= this.createImage(width,height);
               ^^^^
      

  8.   

    噢,Image img= this.createImage(width,height);这样写就清楚明白多了,但是为什么能省略this?
      

  9.   

    好好学学this的作用,就明白了。