🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #24198

JAVA ���Թ淶

#24198
From: �ϵ�
Date: Mon, 20 Apr 1998 00:00
918 lines
57121 bytes
������: xyz (�����), ����: JAVA
��  ��: JAVA ���Թ淶
����վ: '3m�Ͻ�ɺ�m' (Fri Feb 13 17:36:00 1998) , ת��


��ת��ˮľ�廪��

        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�������Ƕ��䳬��
���Ͷ�������á�


4.2.3 ���þֲ�����
������Ҫ�����ϸ�ļ�飬��ȷ�����еľֲ�����(�ڷ�����������
����)�ڱ�����֮ǰ�����������ʼ��֮ǰ��ʹ�þֲ�������һ�������
��

4.3 ���Ƿ���
Ҫ�븲��(overiding)һ��������������������������������������
��һ�����������ͬ���֣���ͬ�������ͣ��Լ���ͬ�����ķ�������
�����ʵ������������ʱ�������õ����¶���ķ��������������
�����������˵ķ�����ͨ��super���������ã����£�
    setThermostat(��)              //ָ���ǵķ���
    super. setThermostat(��)        //ָ�����ǵķ���

4.4 ���ص��϶�
����(overload)�ķ��������е�ij������ͬ���DZ�Ԫ�ĸ���/
�����Ͳ�ͬ�����ص��϶���Ҫ�������õ�����һ�����������϶����ص�
����ʱ�������Ƿ������͡�����������ͬһ����ڲ����أ����ڲ�����
������˳�򲢲���Ҫ��
��ͬʱ�ı��Ԫ�����������ʵ�ַ��������ء� �������϶���ƥ��
�ķ���ʱ����͵�����ת������Ϊ׼��ֻ�о�����ͬ���ּ���ͬ��Ԫ��
��ķ����Ż����ȿ��ǡ����б�Ԫ������ת������ƥ�䷽��ʱ�����
�������ֱ�Ԫ�����DZ��迼�ǵģ��������ͺͻ����͡�
�������ͼ�ת���Ŀ���Ĵ�Сָ������ʵ�ڲ��������ԭ�Ͳ����
��֮�����ߵĸ���ֻ�����ؿ���ת��(��������ת������ϸ��Ϣ�����
�ġ���֮���ǿ������ת����)������������ȫƥ��ı�Ԫ���������ת
�������ǵĿ���Ϊ�㡣

    �����͵�ת�������±���㣬����Ϊ�����ϸ�ƥ�䡣
                                to
                 byte   short   char    int   long   float   double
      byte         0     1              2         3     4      6      7
      short        10     0      10    1     2      4      5
from  char         11    10      0    1      2      4     5
      int          12     11     11    0     1      5      4
      long         12    11     11    10     0     6      5
      float         15    14     13    12    11     0      1
      double       16     15    14    13    12     10      0
    
ע������ >=10 ��������ݶ�ʧ��

һ���϶�ijһƥ�䷽��������ת�������������ѡ��ת��������
С��ƥ�䡣����ж���һ������������С������ͬ����ƥ���ж����ԣ�
Ҫ������ʱ�Ĵ���
    ���磺
    class  A{
         int  method (Object o, Thread t);
         int  method(Thread t,Object o);
         void  g(Object o,Thread t){
                  method(o,t);             //���õ�һ������  
                  method(t,o);             //���õڶ�������
                  method(t,t);             //�ж����ԣ��������
         ��
    ��

4.5  ���캯��
���캯��(constructor)���ṩ��ʼ����ר�÷�����������������ͬ��
��û���κη������͡����캯���ڶ��󴴽�ʱ���Զ��ص��ã����ܱ�
������ʽ���á���������ڰ�(package)֮����ù��캯��ͽ����캯
����Ϊ��public��(�μ����ָ����һ��)��
���캯��Ҳ�����ò�ͬ��������͵IJ������أ���������ķ�����
����һ��
    class Foo  {
        int    x;
        float  y;
        Foo() {
           x=0; 
           y=0.0;
        }
        Foo (int a ) {
           x=a;
           y=0.0;
        }
        Foo (float a ) {
            x=0;
            y=a; 
        }
       Foo (int a��float b ) {
           x=a;
           y=b;
       } 
       static void myFoo( ) {
            Foo obj1=new Foo( );          //����Foo( );
            Foo obj2=new Foo(4 );         //����Foo( int a );
            Foo obj3=new Foo(4.0 );        //����Foo( float a );
            Foo obj4=new Foo(4,4.0 );      //����Foo(int a �� float b );
       }
    }
�����ʵ������ɵ��ó���Ļ�ǰ��Ĺ��캯���ʼ���������
������û��ָ����˭��ʼ��������õ��dz����е��޲���Ĺ��캯��
���һ�����캯���������������ֱ�ӳ������һ�����캯�����
���ñ����ǹ��캯����ĵ�һ����䣬�ڵ��ù��캯��֮ǰʵ�������
���á�

    ����ֱ�ӳ���Ĺ��캯�����£�
    class  MyClass extends OtherClass  {
          MyClass (someParamenters ) {
               /* ���ø��๹�캯�� */
              super(otherParameters);
          }  ��
    }��
    ���õ�ǰ��Ĺ��캯������ʾ��
    class MyClass extends OtherClass  {
        MyClass (someParameters) {
                 ��
        } 
        MyClass(otherParameters) {
             /*���õ�ǰ��Ĺ��캯��ú�����ָ���IJ����*/
             this (someParameters);
             ��
       }
       ��
     }
    �����Foo��FooSub��ķ�����ʹ�ù��캯������ӣ�
     class Foo extends Bar {
          int a;
          Foo(int a) {
              //��������Bar( )
              this.a=a;
          }
          Foo( ) {
              this (42);  //����Foo(42)������Bar( )
          }
      }
      class FooSub extends Foo {
           int b;
           FooSub (int b) {
              super(13);          //����Foo(13); ȥ�����н�����Foo( )
              this.b=b;
           }  
       }

4.6 ��new���������
����������������״̬����Ϊ��ģ�壬���������ʵ�������
��ʵ������ڿ������õ�Ԫ���յĶ��С�����һ���������ò�����Ϊ
�ö������洢������Ա������ʽ��Ϊ�������洢����������ʽɾ��
�洢�����õ�Ԫ���������Զ��������õ��ڴ档
�������洢��new�������˷���洢֮�⣬new����ʼ��ʵ
�����������ʵ��Ĺ��캯���캯���dz�ʼ�������һ�ַ���(��
�캯��)������������Ƿ��䲢��ʼ��ClassA��һ��ʵ��
    a = new ClassA( );
    ���¹��캯���Ǵ��в�������ӣ�
    b = new ClassA(3,2);
����ĵ�������ʽ�����Դ����ʽ��ʽ�ṩ�����֣��ַ�������
ʱ����ֵ��new����һ��Object���͵Ķ�����ת������ϣ������͡�
    b = new ("class"+"A");
    ��������£����ù��캯��ʱ�������

4.6.1 ���õ�Ԫ�ռ�
���õ�Ԫ�ռ���(Garbage Collector)ʹ�洢�������෽���ü�
������ȫ��������Ҫ��ʽ�ͷ��ڴ棬�����Զ�����ġ����õ�Ԫ�ռ�
�������ͷ����ڱ����õ��ڴ棬ֻ�ͷ���Щ���ٱ����õĿռ䡣��ͷ�
ֹ�����ָ��ʹ洢©��(leak)����Ҳʹ�����Ա��ϵͳ�Ĵ洢�����н�
�ѳ�����

4.6.2��ֹ
Java�Ĺ��캯�����һ�������ʼ��������Java����ֹ
(finalization)��������ɺ������������ƵĹ��ܣ�����C++��֮ͬ������
�����ʽ���á���ȻJava�����õ�Ԫ�Ļ��չ��ܿ����Զ����ͷŶ�����
ռ�е���Դ�����Ƕ���ռ�е�ijЩ��Դ�����磺 �ļ��������׽���
(socket)�����õ�Ԫ�������޷�����ġ����Գ���Ա��������ֹ��������
�?���磺�رմ򿪵��ļ�����ֹ�������ӵȳ����ƺ�����
�����������ȡ��Java FileOutpntStream���е���ֹ���������ֹ
������һ��ʵ��ķ�����û�в���Ҳ�޷���ֵ�����ֱ���ȡfinalize()��
��������Ӧע�����C++������������
/**
* closes the stream when garbage is collected
* checks the file descriptor first to make sure it 
* is not already closed.
*/
protected void finalize( ) throws IOException {
    if (fd!=null) close();
}
    �����ǹ�����ֹ����ļ���ע�����
* ���һ����������ֹ������ô�����������ϵͳ�ռ��ö�����ռ
�ڴ�֮ǰ�����á�
* Java������������û��������õ�Ԫ�ռ���������˳�����ôijЩ��
ֹ������ܱ����á�����������£�δ�ͷŵ���Դͨ���ɲ���ϵͳ��
���?
* Java�����õ�Ԫ���ռ������ʱ���Dz�ȷ���ģ���ˣ�Java�޷���֤
�ں�ʱ������ֹ������ֹ����ĵ��ô����Լ�����һ���߳�ִ����
ֹ����
* ����ֹ�������ʱ������᲻���̱����ա���Ϊ��ֹ����Ҫʹ�ö�
���thisָ����ijЩ���?��ζ�Ŷ����ֱ������ˡ�ֻ����finalize()ִ
��֮�����õ�Ԫ�ռ�������п��ܴ���ö���
* ���������У���ֹ���������һ���쳣�������������ֹ�����з�
���������쳣������ϵͳ����

4.6.3   null����
�ؼ���null��һ��Ԥ����ij�������ʾ����ʵ��null��������
ʵ���ܹ����ֵ��κεط������Ա�ת�����κ������͡�

4.7 ��̬�����������ͳ�ʼ��
�����ͷ�������������Ϊ��̬��static���ģ���������ֻ�������౾
�?�������ʵ����⣬�ඨ���е�һ�����Ҳ��������Ϊ��̬�ġ�
����ij���������̬��ʼ���Ρ�
��̬���������г�ֵ������ʵ�����һ���μ�ġ���ʼ��˳�򡱣���
��̬����ֻ�����г���һ�Σ�����������ж��ٸ�ʵ��̬������
��������ͨ�������������ʵġ�Ϊ�������Ҳ��������ʵ�������ʡ�
    class Ahem {
        int i;        //ʵ�����
        static int j;   //��̬����
        static int arr[ ] = new  int[12];
        static {              //��̬��ʼ��Ա����ʼ������
             for (int i =0; i ��arr. length; i++) {
                arr[i] =i;
             }
       }
       void seti(int i) {                       //ʵ��
           this.i =i;
       }
       static void setj (int j) {                  //��̬����
            Ahem.j=j;
       }
      static void clearThroat( ) {
         Ahem a = new Ahem ();
         Ahem.j=2;                //��Ч�� ͨ������ʾ�̬����
         a.j =3;                  //��Ч�� ͨ��ʵ����ʾ�̬����
         Ahem.setj(2);             //��Ч�� ͨ������ʾ�̬����
         a.setj(3);                //��Ч�� ͨ��ʵ����ʾ�̬����
         a.i=4;                  //��Ч�� ͨ��ʵ�����ʵ�����
         Ahem.i=5;               //���� ͨ�������ʵ�����
         a.seti(a);                //��Ч�� ͨ��ʵ�����ʵ��
         Ahem.seti(5);            //���� ͨ�������ʵ��
       }
     }

7.1 ������˳��
�����ķ����Լ�ʵ����������Ĵ��򲢲���Ҫ�����dz�ʼ��ʱѭ
�������Ǵ��ڵġ��йس�ʼ��ʱѭ����������Ϣ�μ��ʼ��˳��һ
�ڡ���������������ǰ��������ķ�����ʵ����������������ǺϷ��ģ�
    class A  {
         void  a () {
               f.set(42);
         }
         B  f;
    }
    class B {
         void set (long n) {
             this .n=n; 
         }
         long n;
    }

4.7.2 ��ʼ��˳��
����һ����ʱ����ľ�̬��ʼ�����뱻ִ�С���̬��ʼ���������
��̬������ʼ��ͬʱ���� �����ǰ��ʷ�˳��ִ�С����磬һ����C��
�����£�
    class C {
         static int a=1;
         static {
             a++;
             b=7;
         }
         static int b=2;
    }
    ��C������ʱ��������˳��ִ�У�
    * a��Ϊ1��
    * ��̬��ʼ����ִ�У�a��Ϊ2��b��Ϊ7��
    * b��Ϊ2��
���̬��ʼ�����������������δ���ص��࣬����ཫ�����أ�
��ľ�̬��ʼ�����뽫��ִ�С��ھ�̬��ʼ���ڼ�����δ���ص��࣬��
���ȼ��ز���ʼ�����ڳ�ʼ�������У������õ�����֮ǰ��һ��δ��ʼ
������ʱ���ͻᷢ��ѭ�����⽫����һ��NoClassDefFoundException��
��
���磬����A����ʱ����ľ�̬��ʼ�����뱻ִ�С���A�ľ�̬��
ʼ��������������һ��δ���ص���B������B�������أ���ľ�̬��ʼ
������Ҫ��A֮ǰִ�С�A�ľ�̬��ʼ�������ִ�С������B�еľ�
̬��ʼ����������A���͵�����ѭ�����á�
��ʵ���̬������ʼ��ʱ������ǰ���������������ʱ�̴���
���磺
    int i = j+2;
    int j = 4;
    ���������ʱ�̴���
    ʵ�������ʼ��ʱ�����жԾ�̬������ǰ���������������´���Σ�
    int i = j+2;                 //ʵ�����
    static int j = 4;              //��̬����
iǰ��������j��i������ʼ��Ϊ6��jΪ4����Ϊj�Ǿ�̬��������
�ij�ʼ������ʵ�������
    ��̬�ķ�����������ʵ�����; ֻ�����þ�̬�����ͷ�����

4.8 ����ָ����
����ָ����(access specifier)���dz���Ա���ƶԷ����ͱ������ʵ���
�η����ڿ��Ʒ��ʵĹؼ�����public��private����protected��public
�������Ա��κ��˷��ʡ�private����ֻ�����ඨ��ʱ������ڲ����ʡ�
��Ϊprivate��������֮���Dz��ɼ�ģ�������final����ֹ���ģ����Ҳ�
�ܱ�����(�μ��2.4.10.3�ڡ���ֹ�࣬������������)�����ⲻ�ܽ�һ��
��˽�з������dz�˽�з�����protected����ָ����ʹ�����ͱ���ֻ����
������ʣ������඼���С�
public�������࣬�����ͱ���������public ���ࡢ�����ͱ�������
Ϊ�κεط����κ������ࡢ�������ʡ����Dz��ܸı�public����Ȩ�ޡ�
û�б�ָ��public��private���࣬�����ͱ�����ֻ�����������ǵ�
��(package)�з���(�μ��2.6�� ����)��

4.9 �������������
��һ�����ڣ���һ���౻�������һ���������ʱ��������������
�����������ɼ��������������ñ���ʱ�����õ�������������
��
    1. ����������ǰ�飬Ȼ�����������׵Ŀ飬ֱ�����ݸÿ�ĵ�ǰ��
�����ⱻ��Ϊ�Ǿֲ��������ھֲ�������󣬻������������������
������
    2. ������ǰ���еı�����
    3. ���û���ҵ����������������еij����еı��������ȴ�ֱ�ӳ�
�࿪ʼ��ֱ��Object�ࡣ���û���ҵ������������������Ͱ�����
��û���ҵ����ͳ�Ϊ����ʱ�̴���
    ��һ�����ж������������ͬ�����֣�Ҳ�DZ������

4.10  ���η�
Java�����¹ؼ����������η�(Modifier)��

4.10.1 �̰߳�ȫ����
�����Threadsafe���̰߳�ȫ����ʵ���̬������ָ��һ���߳�
ʹ����ʱ���ܱ������̸߳�ģ����������ܱ��첽�ı䡣���������Ϊ
Threadsafe��Ŀ������������������Ż����������첽��ĵķ���ʹ��
Threadsafe���Ż���ʩ�ǽ��Ĵ����е�ʵ�����������ٻ��档

4.10.2˲̬����
transient��˲̬����־�����������ڳ־��Զ��󡣵�һ�����ʵ����
�־ö���д��ʱ�����������Ϊtransient���������⴦�?

4.10.3 ��ֹ�࣬�����ͱ���
final����ֹ���ؼ�����һ�����η���һ���಻�������࣬һ��
�������ܱ����ǣ�����һ������Ϊһ����ֵ���ɶ�ֹ���������࣬����
��ֹ��������Ķ�ֹ������ֵ����������������final������������
��������ͬ��
ʹ��finalʹ�������ܹ����ܶ��Ż������е�һ���Ż��Ƿ��������
����չ(inline expansion)����������������С��final����С��ʲô��
�������ڱ�������ʵ�֡�
    final�������������£�
    class Foo {
        final int value =3;                  //��ֹ����
        final int foo (int a��int b) {         //��ֹ����
        }
    }

4.10.4 ���ط���
����native�����أ��ķ�������ƽ̨��ص�����(��C����)ʵ�ֵģ�
����Java�ı��?����û�з����壬�����ԷֺŽ����캯����Ϊ
native����Ȼ���ط�������ƽ̨��ص�����ʵ�ֵģ������ǵ�ʹ���벻��
native�ķ���һ�����磺���Ը��ǡ����ط����������������£�
    native long timeofDay();

4.10.5 ���󷽷�
���󷽷�(abstract method)Ϊ���������ṩ��һ���ֶΣ���ʵ����
�DZ���������ʵ�ֵ�һ��Э�顣���Ϊabstract�ķ����������������ж�
�塣���󷽷�û�з����壬 �������ɷֺŽ���
    ʹ��abstract�ؼ��ֵĹ������£�
    * ���캯����Ϊabstract��
    * ��̬��������Ϊabstract��
    * private ��������Ϊabstract��
    * abstract�������������������������ж��塣
    * ���ܸ��dz����е�abstract������
    * ��abstract��������ͼ̳�abstract�������౻��Ϊ�dz����ࡣ
    * ��ʼ���������ֱ�ӵ���abstract�����������±���ʱ�̴���

4.10.6 �����Ϳ��ͬ��
synchronized��ͬ�����ؼ�����һ�����η���һ������������
��Ҫȡ����(lock)��Ϊ�˱�֤��һ�������ijһ��Դʱ����һҪ����ʸ�
��Դ�Ĵ��뽫����ִ�У����DZ�Ҫ�ġ�ÿ��������һ������֮��ϵ�� ÿ
����Ҳͬ����һ����ͬ�������ǿ�����ġ�
ÿ������һ����ͬ���ķ���ʱ����ȴ�ֱ����õ���ǰʵ����
���Ǿ�̬������Ϊ�ࣩ����Ȼ��ִ�д��룬�ͷ���
ͬ�������Ϊ��ͬ���������ơ�������������õ����ǿ�����
synchronized�ؼ����������ָ���Ķ�����������ǵ�ǰ�����
    ͬ������������£�
    /* ������ǰ�Ĵ���*/
    synchronized (<object or className>)  {//  ͬ��ģ��
         /*  ͬ�����ʴ���  */
    }
    /*�������������*/
    ����ͬ���������������£�
    class Point {
        float x��y;
        synchronized void scale (float f ) {
            x*=f;
            y*=f;
        }
    }
    ͬ��ģ����������£�
    class Rectangle {
         Point topLeft;
         ��
         void print ( ) {
              synchronied    (topLeft)  {
                  println (��topLeft.x=��+ topLeft.x);
                  println (��topLeft.y=��+ topLeft.y);
              }
              ��
         }
    }

5. ����
����(interface)������һ�鷽������û��ʵ�����塣����ֻ�ṩ����
Э��ķ�װ��������ʵ�ֱ�����ʲô�̳����ϡ���һ����ʵ�ֽ���ʱ��
һ�����ʵ�ֽ������������з������塣(���ʵ�ֽ�������dz����࣬
����԰�ʵ�ֽ��淽�������񽻸�������ࡣ)
�����������̳�����ʱ������������⡣ �����ڽ�����ö�
̬������ʹ�����ǵ�ʱ���������ϻ��ܵ�һ��Ӱ�졣
�������?����ͬʱ����һ��������ƽ��棬��˴˲���ȫ֪����
�������ʵ�֡������������һ�������������������interface �ؼ��֣���
����һ����ʵ�֡�
    public interface   Storing {
         void freezeDry (Stream s);
         void reconstitute (Stream s);
    }
    public class Image implement Storing��Painting {
          ��
          void freezeDry (Stream s) {
              //����ǰ��JPEG ѹ��ͼ��
          }
          void reconstitute (Stream s ) {
              // ����ǰ��JPEG ��ѹ��ͼ��
               ��
          }
    }
����һ�����Ҳ��˽�У�ȱʡ���͹��С�������������ͬ������
�ڵķ���ͨ����public��������public��static ��final�ġ�

5.1����������
���������﷨��������interfaceName���ͱ����� variableName��
��������ʵ�ָý������ij�����ʵ���������������Ϊ����ʱ��
����Ϊ������Ϊ������ȫһ����ʹ����Ա��ָ��ʵ�ָ����Ķ���
���֪���ö���ľ������ͻ�̳й�ϵ��ʹ�ý�����Բ��ع��Ĺ���
����������������࣬�������Object�����ӷ�����
    ������˵�������������﷨�����ӡ�
    class StorageManager ��
        Stream stream;
        �� 
        //  Storing �ǽ�����
        void pickle (Storing obj)  {
            obj. freezeDry (stream);
        }
    }

5.2 �����еķ���
    �����еķ����������£�
    returnType   methodName (parameterList);
������û�����η�(modifier)�����������еķ������ǹ��е�(public��
�ͳ���ģ�abstract�������������η�μ���󷽷���һ�ڡ�

5.3 �����еı���
�����еı�����final��public��static�ģ������η���������
ʼ����

5.4 ��Ͻ���
    ����extends�ؼ��֡����԰Ѷ���������Ϊһ�����棬�磺
    interface  DoesItAll  extends String��Painting {
             void doessomethingElse ( );
    }

6. ��
��(Package)��һ����(class)�ͽ���(interface)��ɡ����ǹ��������
�ֿռ䣬�����ͻ�Ĺ��ߡ�ÿһ����ͽ�������ֶ�����ij�����С�
����һ���ϰ�ߣ�����������ɡ�.���ŷָ��ĵ��ʹ��ɣ���һ������ͨ
���ǿ�����������֯����ơ�

6.1 ����һ�����뵥Ԫ�İ�
���뵥Ԫ�İ���package��䶨�塣���ʹ��package��䣬���뵥
Ԫ�ĵ�һ�б����޿ո�Ҳ��ע�͡����ʽ���£�
package  packageName;
�����뵥Ԫ��package��䣬��õ�Ԫ������һ��ȱʡ������İ�
�С�

6.2 ʹ��������е���ͽ���
��Java�����ṩһ�������ʹ����һ��������ͽ���Ķ����ʵ��
�Ļ��ơ���import�ؼ������������������е��ࡣһ�����뵥Ԫ����
�Զ���ָ������ͽ������뵽���Լ��İ��С�
��һ�����еĴ�����������ַ�ʽ����������������е���ͽ�
�棺
    * ��ÿ�����õ���ͽ���ǰ�����������ڵİ������;
      //ǰ׺����
       acme. project. FooBar obj=new acme. project. FooBar( );
    * ʹ��import��䣬����һ�����һ�����棬������ǵİ���
�����ͽ���������ڵ�ǰ�����ֿռ���á�����һ����ʱ����ð���
�еĹ�����ͽ������á�����ʽ���£�
    // �� acme.project ����������
      import  acme.project.*;
    �������ʾacme.project�����еĹ����౻���뵱ǰ��
    ��������acme. project���н���һ����Employec_List��
    //�� acme. project������ Employee_List
    import  acme.project.Employee_list;
    Employee_List obj = new Employee_List( );
��ʹ��һ���ⲿ������ʱ������Ҫ���������������ڵİ��
������������

7. ���ʽ
    Java���Եı��ʽ��C���Էdz����ơ�

7.1 �����
     �����(operator)���ȼ��Ӹߵ����������£�
.   [ ]   ()
++   --    !   ��  instanceof
*   /    %
+  -
<<  >>  >>>
<  >  <=   >\  
==  ! =
&
^
&&
||
? :
=  op =
,

7.1.1  �����ϵ������
����������ʱ������������long���ͣ�����������long���ͣ�
����Ϊint���ͣ������byte��short��char�͡�����������i��
����Ϊshort?


--
      
         --------------------------------
           ���������֣�ֻ͵��Ϣ�����ơ�
         --------------------------------

m;34m�� ��Դ:���Ͻ�ɺ� bbs.njupt.edu.cn��[FROM: pc02.comp.njupt]m

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: a507yjh.nju.edu]
Technical Details
Message-ID: <3OBKRO$7Ga@bbs.nju.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: f6cb0,6a2f6abac205b19a,start
X-Google-Attributes: gidf6cb0,public
From: mendy.bbs@bbs.nju.edu.cn (�ϵ�)
Subject: JAVA ���Թ淶
Date: 1998/04/20
Message-ID: <3OBKRO$7Ga@bbs.nju.edu.cn>
X-Deja-AN: 346138162
X-Filename: Java/M.893077800.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.lang.java