Article View: cn.bbs.comp.program
Article #2458Java���Թ��˵�� (1)
From: Arrow
Date: Thu, 25 Dec 1997 00:00
Date: Thu, 25 Dec 1997 00:00
395 lines
25216 bytes
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�������Ƕ��䳬��
���Ͷ�������á�
--
[m[1;31m�� ��Դ:���ɰ��ļ�BBSվ bbs.njtu.edu.cn��[IP: 202.112.145.26][m
Technical Details
Message-ID:
<3MGUFG$tP2@bbs.njtu.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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