Article View: cn.bbs.comp.lang.java
Article #24198JAVA ���Թ淶
From: �ϵ�
Date: Mon, 20 Apr 1998 00:00
Date: Mon, 20 Apr 1998 00:00
918 lines
57121 bytes
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
--
[m[1;34m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: a507yjh.nju.edu][m
Technical Details
Message-ID:
<3OBKRO$7Ga@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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