🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #2458

Java���Թ��˵�� (1)

#2458
From: Arrow
Date: Thu, 25 Dec 1997 00:00
395 lines
25216 bytes
������: java96@SMTH (����Ϧʰ���о�), ����: Java
��  ��: Java���Թ��˵��
����վ: ˮľ�廪  (Mon Aug 12 13:50:54 1996)
ת��վ: SMTH

        Java���Թ��˵��(����Java language specification, �Լ�����)

1.����ṹ
Java���Ե�Դ���������һ���������뵥Ԫ(compilation unit)��
�ɣ�ÿ�����뵥Ԫֻ�ܰ���������(�ո��ע�ͳ���)��
    * һ����������(package statement )
    * �������(import statements)
    * �������(class declarations)
    * ��������(interface declarations)
ÿ��Java�ı��뵥Ԫ�ɰ��������棬����ÿ�����뵥Ԫȴ��
����һ������߽����ǹ����ġ�
Java ��Դ������뱻����֮�󣬱������Java�ֽڴ���(bytecode)��
Java���ֽڴ�����һЩ�������ڻ�����ָ����ɣ���Щָ���ܱ�Java��
����ϵͳ(runtime system)��Ч�ؽ��͡�Java������ϵͳ����������ͬһ
̨�����
�ڵ�ǰ��Javaʵ���У�ÿ�����뵥Ԫ����һ����.javaΪ��׺���ļ���
ÿ�����뵥Ԫ�����ɸ��࣬�����ÿ�������һ��.class�ļ���.class
���Java�������
2. �ʷ�����
�ڱ���Ĺ���У�JavaԴ��������е��ַ���Ϊһϵ�еı��
(token)��Java����������ʶ�����ֱ��: ��ʶ��ؼ��֡�����������
����Լ�����ָ���ע���Լ�����ո��Ʊ���з���ַ� ����
�����ڱ�ʶ֮�У�������ȴ���������ָ���ǡ�
Java����ı�д���÷�����Unicode�ַ�������������ַ�
�����ڱ���ǰת����Unicode��

2.1 ע��
    Java�����ṩ��3����ʽ��ע�ͣ�
    //text      ��//�����н���������ַ����Ϊע�Ͷ���������ԡ�
    /* text */   ��/*��*/ ��������ַ�ᱻ���������ԡ�
/** text */
������ע�ͳ������κ�����֮ǰʱ���������⴦�?���Dz�������
�ڴ�����κεط�������ע����ζ�ű������������IJ��֣�Ӧ����Ϊ��
����Ŀ��������������Զ�������ĵ��С�

2.2  ��ʶ��
��ʶ������ַ������һ����ĸ���»���("_")����Ԫ���("$")�� ��
����ַ�Ҳ��������0-9�� Javaʹ�÷������ַ�Ϊ�˱���ʶ���һ
�Ϸ���ʶ�������г���ġ���ĸ����
   * ��д��ĸ��A������Z��
    * Сд��ĸ��a������z��
    * �����루Unicode���������ַ������ʮ�������00C0֮ǰ����
���ʶ���У�����ĸ����ַ����������ġ���Ȼ��Unicode�����
��Щ�������������ַ�ij��⡣
�ɴˣ���garton������Mj��lner�����ǺϷ���ʶ���ǣ�����
���硰�С����ַ�ȴ���ǺϷ��ġ�
Ϊ��ȡ�ø����йط������׼����Ϣ������ġ�The Unicode
Standard������World Wide Character Encoding version 1.0��volumes 1 ��
2����Unicode��˾��FTP��ַ��unicode.org��

2.3 �ؼ���
     ����ı�ʶ���������ؼ��֣����Dz������κ��������;��
abstract     default     goto*       null         synchronized
boolean     do         if          package     this
break       double     implements   private      threadsafe
byte        else       import       protected    throw
byvalve *    extends    instanceof    public       transient
case        false       int          return       true
catch       final       interface     short        try
char        finally     long         static        void
class        float      native        super        while
const *      for        new         switch
continue
    ���У���*��Ǻ��DZ���������ǰȴδʹ�õġ�

2.4 ������
������(literal)��ijЩ����ֵ�Ļ��������Щ���Ͱ������ͣ�����
�ͣ����������ַ��ַ�

2.4.1 ����������
����������ֱ�ʾ��ʽ�� ʮ���ƣ��˽��ƺ�ʮ����ơ�һ��ʮ����
������������һϵ�е�������ɣ�����ĵ�һ�����ֲ�����0(��ʱʮ��
������Ҳ�������潲������Ӻ�׺)������Ҳ�ɱ��ɰ˽��ƻ�ʮ�����
��ʽ����0��ͷ����������������ζ������һ��ʮ����Ƶġ�ʮ�����
������԰�������0-9�Լ���ĸa-f��A-F���˽�����������ֻ���dz���
����0-7���ڳ���32λ���ܱ�ʾ�ķ�Χ֮ǰ�����������������ͼ�Ϊint��
����Ϊlong�͡�һ��������������ͨ��Ӻ�׺L��l��ǿ�ȳ�long�͡�
    ����ľ�Ϊ�Ϸ���������������
    2   2L   0777

2.4.2 ����������
һ�������������ɰ������²���: һ��ʮ��������һ��С��㡰.����
С���(����һ��ʮ��������)��ָ��֣�һ�����ͺ�׺��ָ���
��һ��e��E���һ����������������ٰ���һ�����֣���ӻ�
��һ��С������һ��e(��E)�������һЩ���������������ӣ�
    3.1415    3.1E12    .1e12   2E12
�����ں�������������Java���������ָ������ͣ� float ��
double���û��ɰ�����д����֣�
    2.0d��2.0D        double ��
    2.0f��2.0F��2.0   float��

2.4.3 ����������
   ����(boolean)������������ֵ�� true��false��

2.4.4 �ַ�������
�ַ���������һ���ɵ����������ַ�(��������һ���ַ�������
һ���ַ�)���ַ�����char���ͣ����Ҿ�ӷ������ַ��е�����������
�г���ת����������������һЩ��ͼ���ַ������Է�б�ܡ�\����ʼ��
��ת���á�

���з�ͷ       <newline>         \
����           NL(LF)           \n
��ֱ�Ʊ��     HT               \t
�˸�           BS               \b
�س�           CR               \r
��ֽ��ҳ       FF               \f
���         \                 \\
�����         '                  \'
˫���         "                  \"
�˽�����      0ddd              \ddd
ʮ�������    0xdd              \xdd
�������ַ�    0xdddd           \udddd

2.4.5 ��������
����������˫����������������ַ�����С�ÿ������������
������һ�������󣬶����һ���ַ�����飬���硰abc��������һ
���µĴ����ʵ������Ķ��ǺϷ��Ĵ���������
    " "       \\�մ�
    "\" "     \\ֻ��һ��˫��ŵĴ�
    "This is a string"
    "This is a \
         two-line string"

2.5  ���������ָ���
   ������Щ�ַ���JavaԴ��������������ָ����ã�
   +  ��  !  %   ^   &   *   ��   ��   /  >   <
   (   )  {  }  [  ]  ; ?  :  ���� =
   ���⣬������Щ�����ַ����������
   ++    --   ==  <=   >=  !=  <<  >>
   >>>  +=   -=   *=  /=   &=  /=
   ^=  %=  <<=  >>=  >>>=  ��   &&
   ���滹Ҫ�������һ��������ϸ���ܡ�

3. ����
�κ�һ����������ʽ����һ�����ͣ����;����������ܵ�ȡֵ��
Χ����������Щֵ����IJ������Լ���Щ������������ʲô��Java����
���ṩ�����ö������ͣ�����ԱҲ���������༰����(interface)���ƹ���
�����͡�
Java�������������ͣ� �����ͺ͸������͡�������ָ��Щ����
�ٷָ��ԭ�����͡��磺���͡������͡������͡��ַ��;�Ϊ�����͡�
�������ͽ����ڼ����͵Ļ��ϡ�Java���������ָ������ͣ����顢
�༰���档�ڱ����У�������Ҫ���ۼ����ͼ����顣

3.1 ��ֵ����
3.1.1 ��������
������C��C++�����ƣ������������ ��һ�����е���������
���Ƕ����ڻ����ģ��������ijЩ��ͳ�Ķ��������ı䣬�Է�ӳ��C��
������������ı仯�������������ͷֱ����8λ��16λ��32λ��64
λ�Ŀ�ȣ����Ҿ����з�ŵ�(signed)��������ʾ��
���
������
8
byte
16
short
32
int
64
long

һ�����������Ͳ���ֱ��Ӱ����Ĵ洢�ķ��䣬���ͽ�����������
�����������Լ��Ϸ���ȡֵ��Χ������һ�������Ϸ���Χ��ֵ����һ
��������ô���ֵ���ǶԺϷ�ֵ��ȡģ���ֵ��

3.1.2 ��������
�ؼ���float��ʾ������(32λ)����double���ʾ˫����(64λ)����
��float��������Ľ������float�ͣ���������֮һΪdouble�ͣ����
��Ϊdouble�͡��������㼰��ݸ�ʽ��IEEE754�еĶ��壬ϸ��������
���� ����¼A�� ���㡱���йظ���ʵ�ֵ�ϸ�ڡ�
3.1.3 �ַ�����
Javaȫ��ʹ�÷������ַ����char������ݱ������һ��16
λ���޷������

3.2 ��������
��һ��������ȡֵ��Ϊture��Ϊfalse�������ǵ�һ�������ķ���ֵΪture��falseʱ�����
Ƕ��Dz������͵ġ����⣬��ϵ����Ľ�����Dz�
���͵ġ�
    ����ֵ������ֵ�ͣ���˲�����ǿ������ת��������ת������ֵ��

3.3 ����
������Java����������һ����������Ǵ�����ָ�����㣬���е�
����(��������)����ͨ���ʶ�����á���ʹ�����������㣬��ʶ��ֵҲ
��Ӧ���ƻ���ͨ��new�����ɴ���һ�����顣
    char s[]=new char[30];
�����һԪ�ص��±�Ϊ0����������ָ��ά���Dz�����ġ�ÿ�ζ�
������ʽ����new�������飺
    int i [] =new int [3];
    Java���Բ�֧�ֶ�ά���飬���ǣ�����Աȴ���Դ�����������顣
    int i [ ]  [ ]=new int [3][4];
    ������һάҪ��ȷ��������ά������Ժ���ȷ�������磺
    int i[] []=new int [3] [ ]
    ��һ���Ϸ���������
�����ڱ�������������������C��������֮�⣬Java��
�����?���Ÿ�����������֮�����������ǵȼ۵ģ�
    int iarray[ ];
    int [ ] iarray;
    ͬ��أ���������Ҳһ��
    byte f(int n)[ ];
    byte [ ] f(int n);
    ����ʱ����±걣֤�����ǺϷ��ģ�
    int a[ ]=new int [10];
    a[5]=1;
    a[1]=a[0]+a[2];
a[-1]=4; // ����ʱ��һ��ArrayIndexOutOfBoundsException(������
��Խ��)�쳣
a[10]=2; //����ʱ��һ��ArrayIndexOutOfBoundsException(������
��Խ��)�쳣

    ����Ĵ�С����ʹ��������ʽ��
    int n;
    float arr[ ]=new float[n+1]
    ����ij��ȿ�ͨ��.length ���ң�
    int a[] []=new int [10][3];
    println (a.length)     //��ӡ��10
    println (a[0].length)  //��ӡ��3��

3.3.1  ����ϸ��
������������鶼��Object���һ�������ʵ������IJ�ν�
������һ������ΪArray�����࣬����һ��ʵ�������length������ÿ
һ�������ͣ�����һ����Ӧ��Array�����ࡣͬ�?ÿһ����Ҳ����
һ����Ӧ��Array������ڡ����磺   new Thread[n]  ����һ��Thread[ ]
��ʵ�������A����B�ij��࣬��ô��A[]��B[]�ij��࣬����ͼ��

            Object

   Array                  A

int[]  float[]  A[]            B

             B[]

    ��ˣ����԰����鸳��һ��Object������
    Object  o;
    int a[]=new int [10];
    o=a;
    ���ҿ�ͨ��ǿ������ת����object��������һ���������
    a=(int [])o;
    Array�౾�?����ʽ�ز������ࡣ

4. ��
��(class)�Ǵ�ͳ���������ģ�͵�����������֧����ݳ����Լ�ʵ
�ֶ���ݵ�Լ����Java�У�ÿһ���µ��ഴ��һ�������͡�
Ҫ��õ�һ���µ��࣬����Ա���������ҵ�һ�����е��࣬���༴
�����������Ļ��Ϲ��죬���dz�֮Ϊ����(derived)��������������
Ϊԭ��������࣬����������dz�Ϊ����(super class)��
���������д����ԣ� ���B��A�����࣬C��B�����࣬��C
��A�����ࡣ
һ�����ֱ�ӳ����Լ�ָʾ��������ʵ�ֵĽ���(interface)������
�������У��ɹؼ���extends��implements���������ʾ(�����ʾ�ؼ���)����
    [doc_ comment]  [modifer]  class ClassName
    extends  Superclassname
    implements  interface {��interface } ] {
          class body
    }
    ����
    /** 2 dimension point */
    public class Points {
        float x��y;
         ......
    }
    /** printable point */
   class PinttablePoint extends Points implements Printable {
        ......
        public void Print ( ) {
        }
    }
���е�����һ������ Object�������������Object֮����κ���
����һ��ֱ�ӳ��ࡣ���һ����������ʱδָ����ֱ�ӳ��࣬��ôȱʡ
��ΪObject����������
    class Point {
        float x��y
    }
    ������д���ȼ�
    class Point extends Object {
         float  x��  y��
    }
Java���Խ�֧�ֵ��̳У�ͨ��һ�������������桱�Ļ��ƣ���֧��
ijЩ�������������ö�̳�ʵ�ֵĻ���(�����桱һ��)��Java֮��
��û�в���C++�Ķ�̳л��ƣ���Ϊ�˱����̳д�������಻�㣬��
�磺���ܲ���Ķ����ԣ���������Ӹ��ӣ����������Ż������⡣

4.1 ������֮���ǿ��ת��
Java����֧������������֮���ǿ��ת������Ϊÿ���༴��һ����
�����͡�Java֧��������֮���ǿ��ת�������B��A�����࣬��ôB
��һ��ʵ�������ΪA��ʵ����ʹ�ã���Ȼ����Ҫ��ʽ��ת��������ʽ
ת�����ǺϷ��ģ��ⱻ�����ؿ�(widening)�����A��һ��ʵ���뵱��
B��ʵ��ʹ�ã�����Ա��Ӧдһ������ת��������խ��narrowing����ǿ
�ơ���һ���ൽ�������ǿ��ת
��������ʱҪ�����еļ����ȷ�������������������һ��ʵ��
(��������֮һ)���ֵ���֮���ǿ������ת����һ������������ǿ��ת�����﷨���£
�
    (classname) ref
    ���У�(classname)��Ҫת����Ŀ���࣬��ref�DZ�ת���Ķ���
ǿ��ת������Ӱ�쵽��������ã����Ӱ������?Ȼ���ʵ��
�����ķ���ȴ�ܵ�����
���õ����͵�Ӱ�졣һ�������һ�����͵���һ���͵�ǿ��ת����
����ʹͬһ������Բ�ͬ��ʵ��������ʡ�
    class   ClassA{
           String  name = "ClassA"
    }
    class ClassB  extends  ClassA {           //ClassB��ClassA������
         String name="ClassB";
    }
    class AccessTest {
        void test( ) {
            ClassB  b=new ClassB( );
            println (b.name);                //��ӡ�� ClassB
            ClassA  a
            a=(ClassA)b;
            println (a.name);               //��ӡ�� ClassA
        }
    }

4.2 ����
����(method)�ǿ�ʩ�ڶ�������ϵIJ��������Ǽȿ������У�Ҳ����
��������������������ȴֻ��������ʵ��(Java�������û�����IJ�����
�÷�����ʵ��)��
    ���еķ������������·�ʽ��
    [Doc_ comment]  [Access Specifiers]  ReturnType  methodName(parameterList)
{
                method body(���ص�native������ķ���û���岿��)
    }

���캯������޷��������⣬����ķ�������һ���������͡���
��һ�����ǹ��캯��ķ����������κ�ֵ����ô�������һ��void�ķ�
�����͡�
������ɶ��ŷָ��ijɶԵ����ͼ���������ɣ�����޲���
������Ϊ�ա������ڲ�����ı���(�ֲ�����)��������ͬһ��������
�������������磺 ���һ������������Ϊi�IJ���ʵ�֣��ҷ�����
�ֶ���һ����Ϊi�ľֲ����������������������磺
    class Rectangle {
         void vertex (int i��int j)  {
             for (int i=0; i<=100; i++)  {         //����
             ��
             }
         }
    }
    ��������ѭ�������������i��һ���������

Java���������̬����������һ�������������������������
���������䳬����ʹ�ù�Ӷ�ʵ�ַ����ĸ���(overriding)������
(overloadding)����ν�����ǶԼ̳����ķ����ṩ��һ�ֲ�ͬ��ʵ�֡���
������ָ����һ����������������һ����������ͬ�����֣�������?ͬ��
ע�� �������Ͳ���������𷽷�������һ����ķ�Χ�ڣ�������ͬ
�����֣���ͬ�IJ����(��������λ�ü�����)�ķ��������뷵����ͬ
�����͡�����������������в�ͬ�ķ������ͣ��������һ���������


4.2.1 ʵ�����
ʵ�����(instance variables)��ָ��Щ���������������ڷ���������
��֮����δ��static��ǵı�( ���� ����̬��������������ʼ������)��
����һ��������������֮�������ı����Ǿֲ�������ʵ�������������
�η�(�����η�)��
ʵ������������κε����ͣ����ҿ����г�ʼֵ�����һ��ʵ���
���޳�ʼֵ�����ʼ����0�������ͱ�������ʼ����flase������
��ʼ����null��������һ��ʵ�����j���г�ʼ��ֵ�����ӣ�
    class A{
      int j =23;
       ����
    }

4.2.2  this ��super����
��һ���Ǿ�̬�������������ڣ�this������ִ���˵�ǰ������
�磺 һ�����������Ҫ���Լ���Ϊ�������һ������ķ�����
    class MyClass {
         void Method (OtherClass obj) {
             ��
            obj.Method (this)
              ��
         }
    }
     ���ۺ�ʱ��һ�������������Լ���ʵ�����������ʱ����ÿ������
��ǰ�涼�����š�this����
�磺
    class Foo {
        int a��b��c;
        ......
        void myPrint ( ) {
            print (a+ "\n");           //  a=="this.a"
        }
        ......
     }
     super����������this������this����ʵ�����ǶԵ�ǰ��������ã�
������;��ǰ�ǰ���ڴ���ķ������ࡣ��super�������Ƕ��䳬��
���Ͷ�������á�

--

�� ��Դ:���ɰ��ļ�BBSվ bbs.njtu.edu.cn��[IP: 202.112.145.26]
Technical Details
Message-ID: <3MGUFG$tP2@bbs.njtu.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,4f73d9175f08ce1d,start
X-Google-Attributes: gidfc86e,public
From: Uni.bbs@bbs.njtu.edu.cn (Arrow)
Subject: Java���Թ��˵�� (1)
Date: 1997/12/25
Message-ID: <3MGUFG$tP2@bbs.njtu.edu.cn>
X-Deja-AN: 310062371
X-Filename: Programming/M.883036384.A
Organization: ��������ɰ��ļ�
Newsgroups: cn.bbs.comp.program