例1.2import java.awr.*;import java.applet.*;public class HelloWorldApplet extends Applet{//an appletpublic void paint(Graphicsg){g.drawString("HelloWorld!",20,20);}} 这是一个简单的Applet(小应用程序)。程序中,首先用 import语句输入java.awr和java.applet下所有的包,使得该程序可能 使用这些包中所定义的类,它类似于C中的#include语句。然后 声明一个公共类HelloWorldApplet,用extends指明它是Applet的子类。 在类中,我们重写父类Ap-plet的paint()方法,其中参数g为Graphics 类,它表明当前作画的上下文。在paint()方法中,调用g的方法 drawString(),在坐标(20,20)处输出字符串""HelloWorld!",其中坐标 是用象素点来表示的。这个程序中没有实现main()方法,这是Applet与应用程序 Application(如例1)的区别之一。为了运行该程序,首先我们也 要把它放在文件HelloWorldApplet.java中,然后对它进行编译: C:\>javac HelloWorldApplet.java得到字节码文件HelloWorldApplet.class。由于Applet中没有 main()方法作为Java解释器的入口,我们必须编写HTML文件,把该 Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器 上运行。它的<HTML>文件如下:<HTML><HEAD><TITLE>AnApplet</TITLE></HEAD><BODY><appletcode="HelloWorldApplet.class"width=200height=40></applet></BODY></HTML>其中用<applet>标记来启动HelloWorldApplet,code指明字节码 所在的文件,width和height指明applet所占的大小,我们把这个HTML 文件存入Example.html,然后运行:C:\>appleviewer Example.html这时屏幕上弹出一个窗口,其中显示HelloWorld!,显示结果 如图:从上述例子中可以看出,Java程序是由类构成的,对于一个 应用程序来说,必须有一个类中定义main()方法,而对applet来说, 它必须作为Applet的一个子类。在类的定义中,应包含类变量的 声明和类中方法的实现。Java在基本数据类型、运算符、表 达式、控制语句等方面与C、C++基本上是相同的,但它同时也 增加了一些新的内容,在以后的各章中,我们会详细介绍。本 节中,只是使大家对Java程序有一个初步的了解。
为什么我根据这个方法做不出来,请问是什么原因,请高手指教,谢谢

解决方案 »

  1.   

    自己写个代码测试一下就知道了。用 A == B 测试,==就是看是否是同一内存,equals是测试内容(看具体实现,设计本意是用来比较内容)在你给的两个常量字符串,一般来说,编译器会进行优化,数据放在常量池里,一般来说是相等的。(但是,不要这样用,因为规范里变没有要求)
      

  2.   

    System.out.println(a.equals(b));//true 请问这里a和b 是否指向同一块内存呢?
    a和b都指向同一对象,因为内容相同。
    不想让他们指向同一内存的话,就用:String b=new String("JAVA");System.out.println(" "+ if( a==b) ) 我知道对象不能用“==”来判断,但是为什么会报错呢?
    同类对象可以用==比较,你的语法错了
      

  3.   

    System.out.println(" "+ ( a==b) )去掉 if就可以了。
    if是对判断进行分析了,a==b就是比较,直接用+连接就OK了。
      

  4.   

    public class Test
    {
    public static void main(String[] args)
    {
    String A="classjava";
            String B="classjava";
    if(A==B)
        System.out.println("A和B同内存");
    }
    }
    ^_^,他们的确是同内存,结帐啦
      

  5.   

    会把一些字符相同的给与同个内存,就是那些没有分配内存空间的
    如a=new String("classjava");
    跟b="classjava";就不同空间了
    但然c="notclassjava";明显跟b不同空间啦
      

  6.   

    当String A ="abc"; String B="abc" A 和 B是指向同一块内存吗?   它们指向的是同一个地址.
      

  7.   

    这样的定义是的。但是如果分别都用了 new String(“abc”);则不是。
    这本是基础,但是越是基础,大家一般都不注意,这个问题好,提醒了我,要不然我自己也要忘了。
      

  8.   

    o,是这样的吗??我还没注意到了,真应该看一看。
    a ,b都是对象引用,为什么new出来的就不是,而直接写的就是了?
    我记得书上说:
    String A = "abc";

    String A = new String("abc");
    是一样的吗?
      

  9.   

    另:practical Java上面专门有一章是讲这个的,就是对象引用,和==以及equals()的区别。
      

  10.   

    String a = "JAVA"; 
      String b = "JAVA"; 
      String c = new String("JAVA");    if(a==b) 
      System.out.println("They are equal");
       if(a==c) 
      System.out.println("They are equal");
      else 
      System.out.println("They are not equal");They are equalThey are not equal
      

  11.   

    程序在运行的时候会创建一个字符串缓冲池当使用 a = "JAVA" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,a先被放到了池中,所以在b被创建的时候,程序找到了具有相同值的 a将 b 引用 a 所引用的对象"JAVA"
    第二段程序中,使用了 new 操作符,他明白的告诉程序:“我要一个新的!不要旧的!”与是一个新的"JAVA"Sting对象被创建在内存中。
      

  12.   

    String a = "JAVA"; 
      String b = "JAVA"; 
      String c = new String("JAVA"); 
    // 请注意这句
      c = c.intern();   if(a==b) 
      System.out.println("They are equal");
       if(a==c) 
      System.out.println("They are equal");
      else 
      System.out.println("They are not equal");They are equalThey are equal
      

  13.   

    String 是惟读类,所以不是相同的地址。关于惟读类见《Thinking in java》
      

  14.   

    这样声明指向不同的地址
    String a = new String("b");
    String b = new String("b"); 这样声明指向相同的地址:
    String a = "b";
    String b = "b";
      

  15.   

    wavewoo(飞天红猪侠)  解释的好我发同了,不好意思
      

  16.   

    如果要使字符串A的值等于字符串B的值(但是地址不同),只能用 A = new String(B)? 有没有类似C++的strcpy这样的函数?
      

  17.   

    补充:
      是String a="JAVA",
           b="JAVA";
    a,b是异名同址;
       String c="JAVA";
       String d=new String("JAVA");
       c和d
    则不是。
      

  18.   

    System.out.println(a.equals(b));//true 请问这里a和b 是否指向同一块内存呢?
    a和b是指向同一个内存,如果用new则不是了