JAVA基础教程Java程序设计基础_第1页
JAVA基础教程Java程序设计基础_第2页
JAVA基础教程Java程序设计基础_第3页
JAVA基础教程Java程序设计基础_第4页
JAVA基础教程Java程序设计基础_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 Java 程序设计基础3.1 Java 编程概况现在你可以复习一下 Java 语言的背景材料,它的基本结构象 C/C+,但任何用面向过程语言编写过程序的人都可以了解 Java 语言的大部分结构.3.1.1程序结构Java 语言的源程序代码由一个或多个编译单元(compilationunit)组成, 每个编译单元只能包含下列内容(空格和注释除外):*一个程序包语句(packagestatement)*入口语句(importstatements)*类的声明(classdeclarations)*界面声明(interfacedeclarations)每个 Java 的编译单元可包含多个类或界

2、面,但是每个编译单元最多只能有一个类或者界面是公共的。Java 的源程序代码被编译?reg;后,便产生了 Java 字节代码。Java 的字节代码由一?copy;不依赖于机器的指令组成,这?copy;指令能被 Java 的运行系统(runtimesystem)有效地解释。Java 的运行系统工作起来如同一台虚拟机。在当前的 Java 实现中,每个编译单元就是一个以.java 为后缀的文件。每个编译单元有若干个类,编译后,每个类生成一个.class 文件。.class 文件是 Java 虚拟机能够识别的代码。3.1.2 注释三种类型如下:/注释一行/*一行或多行注释*/*文档注释*/文档注释一般

3、放在一个变量或函数定义?reg;前,指示在任何自动生成文档系统中调入。这?copy;注释都是声明条目的描述.o3.1.3 标识符变量,函数,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。在 Java 语言里,标识符以字符或_,$开头,后面可以包含数字,标识符是大小写有区别的,没有长度限制。有效的标识符 mynameict_networkHello_sys_path$bill例子:inta_number;char_onechar;float$bill;关键词abstractcontinuefornewswitchbooleandefaultgotonullsynchroniz

4、edbreakdoifpackagethisbytedoubleimplementsprivatethreadsafebyvalueelseimportprotectedthrowcaseextendsinstanceofpublictransientcatchfalseintreturntruecharfinalinterfaceshorttryclassfinallylongstaticvoidconstfloatnativesuperwhile 其它保留词以下单词被保留使用:castfuturegenericinneroperatorouterrestvar数据类型Java 使用五种基本

5、类型:integer(整数),floating(浮点数),point(指针),Boolean(布尔变量),CharacterorString(字符或字符串)。integer 整数下边给出的数据表示都是整数的例子:4,15,089,0 xAD00 整数长度数据类型表示 8bitsbyte16bitsshort32bitsint64bitslongfloating 浮点数下边给出的数据表示都是浮点数的例子:6.37,3.7E15,3e8浮点数长度数据类型表示 32bitsfloat64bitsdoubleBoolean 布尔变量下边是布尔变量的两种可能取值:truefalseCharacter字符

6、下边给出的都是字符的例子:at(tab)u?(unicode)String 字符串下边给出的都是字符串的例子: Thisisastringliteral中国科学院计算所数组你可以定义任意类型的数组.chars 口;这是字符型数组;int 口 array;这是整型数组;你还可以定义数组的数组.intblock=newint23;数组边界在运行时被检测,避免堆栈溢出和内存崩溃.在 Java 里,数组实际上是一个对象,数组有一个成员变量:length。你可以用这个成员函数来查看任意数组的长度.inta=newint103;a.length;/*10*/a0.length;/*3*/创建数组在 Jav

7、a 里创建数组,你可使用两种基本方法:一。创建一个空数组:intlist二 newint50;或你可以用初始数值填充数组.Stringnames=Chenji,Yuan,Chun,Yang;相当于下面功能:Stringnames 口;names=newString4;names0=newString(Chenji);names1=newString(Yuan);names2=newString(Chun);names3=newString(Yang);在编译时你不能象下例那样创建静态数组。intname50;/将产生一个编译错误你也不能用 new 操作去填充一个没定义大小的数组。intname

8、;for(inti=0;i9;i+)namei=i;表达式Java 语言的表达式和 C 语言非常类似。 运算符运算符(operator)优先级从高到底排列如下:.()+-!instanceof*/%+-=!=&A&|?:=op=,整数运算符在整数运算时,如果操作数是 long 类型,则运算结果是long 类型,否则为 int 类型,绝不会是 byte,short 或 char 型。这样,如果变量 i 被声明为 short 或 byte,i+1 的结果会是 int。如果结果超过该类型的取值范围,则按该类型的最大值取模。单目整数运算符是:运算符操作-单目非位补码+加 1-减 1+运

9、算符用于表示直接加 1 操作。增量操作也可以用加运算符和赋值操作间接完成。+lvalue(左值?copy;表示 lvalue+=1,+lvalue 也表示lvalue=lvalue+1(只要 lvalue 没有副作用)。-运算符用于表示减 1 操作。+和-运算符既可以作为前缀运算符,也可以做为后缀运算符。双目整数运算符是:运算符操作*+力口-减*乘/除项模&位与 1 位或A位异或右移(带符号)添零右移整数除法按零舍入。除法和取模遵守以下等式:(a/b)*b+(a%b)=a 整数算术运算的异常是由于除零或按零取模造成的。它将引发一个算术异常。下溢产生零,上溢导致越界。例如:加 1 超过整

10、数最大值,取模后,变成最小值。一个 op=赋值运算符,和上表中的各双目整数运算符联用,构成一个表达式。整数关系运算符,=,=和!=产生 boolean 类型的数据。布尔运算符布尔(boolean)变量或表达式的组合运算可以产生新的 boolean 值。单目运算符!是布尔非。双目运算符&,|和A是逻辑 ANDORffiXOR1 算符,它们强制两个操作数求布尔值。为避免右侧操作数冗余求值,用户可以使用短路求值运算符&和|。用户可以使用=和!=,赋值运算符也可以用&=.|=、A=。三元条件操作符?:和 C 语言中的一样。浮点运算符浮点运算符可以使用常规运算符的组合:如单目运算

11、符+、-,双目运算符+、-、*和/,以及赋值运算符+=,-=,*=,和/=。止匕外,还有取模运算:%?口也可以作用于浮点数,例如:a%b 和 a-(int)(a/b)*b)的语义相同。这表示 a%b 的结果是除完后剩下的浮点数部分。只有单精度操作数的浮点表达式按照单精度运算求值,产生单精度结果。如果浮点表达式中含有一个或一个以上的双精度操作数,则按双精度运算,结果是双精度浮点数。数组运算符数组运算符形式如下:口可给出数组中某个元素的值。合法的取值范围是从 0 到数组的长度减 1。取值范围的检查只在运行时刻实。运算符以 String 对象实现。运算符+完成并操作,如果必要则自动把操作数转换为 S

12、tring 型。如果操作数是一个对象,它可定义一个方法 toString()返回该对象的 String 方式,例如 floata=1.0print(Thevalueofais+a+n);+运算符用到?reg;上的例子 Strings=a=+a;+=运算符也可以用于 String。注意,左边(下例中的 s1)仅求值一次。s1+=a;/s1=s1+a/若 a 非 String型, 自动转换为 String 型。 对象运算符双目运算符 instanceof 测试某个对象是否是指定类或其子类的实例。例如:if(myObjectinstanceofMyClass)MyClassanothermyObje

13、ct=(MyClass)myObject;是判定 myObject 是否是 MyClass 的实例或是其子类的实例。强制和转换 Java 语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数之间可以来回强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。Java 流控制下面几个控制结构是从C语言借鉴的。分支结构if/else 分支结构 if(Boolean)statemanets;elsestatements;switch 分支结构switch(expr1)caseexpr2:statements;break;caseexpr3:statements;break

14、;default:statements;break;循环结构 for 循环结构 for(initexpr1;testexpr2;incrementexpr3)statements;While 循环结构 While(Boolean)statements;Do 循环结构 dostatements;while(Boolean);一般顺序控制 breaklabelcontinuelabelreutrnexpr;label:statement;for 循环例子下面是一个程序例子,画几条线,分别用红,I蓝颜色,这段程序可能是 Java 函数的一部分:intcount;for(count=1;count=1

15、2;count+)switch(count%3)case0:setColor(Color.red);break;case1:setColor(Color.blue);break;case2:setColor(Color.green);break;g.drawLine(10,count*10,80,count*10);Java 变量和函数的实例Java 的类包含变量和函数。数据变量可以是一些原始的类型,如 int,char等。成员函数是一些可执行的过程。例如,下面程序里:publicclassClassOneinti;publicClassOne()i=10;publicvoidAdd_i(in

16、tj)i=i+j;ClassOne 包含一个变量 i 和两个成员函数,ClassOne(intfirst)和 Add_i(intj)。一成员函数成员函数是一些可被其它类或自己类调用的 处理子程序。一一个特殊的成员函数叫构造函数,这个函 数名称一般与本类名程相同。它没有返回值。构造函数 和成员函数当你在 Java 里定义一个类时,你可定义一个或 多个可选的构造函数,当创建本类的一个对象时用某一个构造函数来初始化本对象。用前面的程序例子来说明,当 ClassOne 类创建一个新实例时,所有成员函数和变量被 创建(创建实例)。构造函数被调用。ClassOnemc:mc=newClassOne();关

17、键词 new 用来创建一个类的实例,一个类用 new 初始化、 乙刖并不占用内存,它只是一个类型定义,当 mc 对象初始化后,mc 对象里的 i 变量等于10。你可以通过对象名来引用变鼻i。(有时称为实例变量)mc.i+;/mc 实例变量加 1 因为 mc 有ClassOne 类的所有:变量和成员函数,我们可以使用同样的语 法来调用成员函数 Add._i:Add_i(10);现在 mc.i 变量等于 21.结束函数 Java并不支1 持析构函数(C+里的定义),因为java 本身提供对象无用时自动消除的功能,同时它也提供了 一个自动拉圾箱的成员函数,在消除对象时被调用:Protectedvoi

18、dfinalize()close();对象有效范围和废物自动回收对象有一定的生命期并在它的生命期间使用资源,当一个对象不再被使用时,它应释放内存,避免内存溢出。在 Java 里,收集和释放内存是一个叫自动废品回收站的线程的责任。这个线程监视对象有效范围并给一个走出有效范围的对象作上标识。例如:Strings;没有分配内存 s=newString(oldstring);/分配内存s=newstring;/重新分配内存(创建新对象)我们将在以后访问 String 类时将更加明白它的工作过程, 但它的快速工作过程是这样的: 1.创建一个新的 String 类对象并填充以oldstring2.创建另一

19、个String 对 象 并填 充 以 60$ 忏 的 9 注 意 我 们 创建了两个对象 。Stirng 对象oldstringStirng 对象newstring在第三条语句里,第一个包括oldstring的叫做 s的对象已走出了有效范围,没有任何方法可以再访问他,我们现在有一个新的对象也叫s,包含60$忏访 9o 在下一个废品回收线程,前一个对象将被标识并消除。子类子类是利用存在的对象创建一个新对象的机制,比如,如果你有一个 Horse 类,你可以创 建 一 个Z e b r a子 类 , Z e b r a是H o r s e的 一 种 。class ZebraextendsHorsei

20、ntnumber_OF_stripes:关键词 extends来 定义对象有的子类.Zebra是 Horse 的子类。Horse 类里的所有特 征都将拷贝到 Zebra 类里,而 Zebra 类里可以定义自己的成员函数 和实例变量。Zebra 称为 Horse 的派生类或继承。另外,你 也许还想覆盖基类的成员函数。用 ClassOne 说明,下面是一个派生类覆盖 Addi 功能的例子.importClassOne;publicclassNewClassextendsClassOnepublicvoidAdd_i(intj)i=i+(j/2);当 NewClass 类的实例创建时,变量 i 初始

21、化值为 10,但调用 Add_i 产生不同的结果。NewClassmnc;mnc=newNewClass();mnc.Add_i(10);访问控制 Java 里当你创建一个新类时,你可以标明变量和成员函数的访问层次。publicpublicvoidAnyOneCanAccess()public 实例变量和成员函数可以任意其它类调用。protectedprotectedvoidOnlySubClasses()protected 实例变量和成员函数只能被其子类调用.privateprivateStringCreditCardNumber;private 实例变量和成员函数只能在本类里调用.frie

22、ndlyvoidMyPackageMethod()缺省的, 如果没有定义任何防火控制, 实例变量或函数缺省定义成 friendly,意味着可以被本包里的任意对象防问,但其它包里的对象不可防问。静态成员函数和变量有?copy;时候,你创建一个类,希望这个类的所有实例都公用一个变量。也就是说,所有这个类的对象都只有实例变量的同一个拷贝。这种万法的关键词是 static,例如:classBlockstaticintnumber=50;所有从 Block 类创建的对象的 number 变量值都是相同的。 无任在哪个对象里改变了 number 的值,所有对象的 number 都跟着改变。同样的,你可以定

23、义 static 成员函数 , 但 这 个 成 员 函 数 不 能 访 问 非static函 数 和 变 量 。classBlockstaticintnumber=50;intlocalvalue;staticvoidadd_local()localvalue+;/没有运行staticvoidadd_static()number+;/运行this 和 super访问一个类的实例变量时,this 关键词是指向这个类本身的指针, 在前面 ClassOne例子中,我们可以增加构造函数如下:publicclassClassOneinti;publicClassOne()i=10;publicClass

24、One(intvalue)this.i=value;publicvoidAdd_i(intj)i=i+j;这里,this 指向 ClassOne 类的指针。如果在一个子类里覆盖了父类的某个成员函数,但又想调用父类的成员函数,你可以用 super 关键词指向父类的成员函数。importClassOne;publicclassNewClassextendsClassOnepublicvoidAdd_i(intj)i=i+(j/2);super.Add_i(j);下面程序里,i 变量被构造函数设成 10,然后 15,最后被父类(ClassOne)设成 25。NewClassmnc;mnc=newNe

25、wClass();mnc.Add_i(10);类的类型至今为止,我用在类前面只用了一个 public 关键词,其实它有下面 4 种选择:abstract一个 abstract类必须至少有一个虚拟函数, 一个 abstract类不能直接创建对象,必须继承子类后才能。final 一个 final 类声明了子类链的结尾,用 final 声明的不能再派生子类。publicpublic 类能被其它的类访问。在它包里,如果想使用这个类必须先 import,则它只能在它义的 package 里使用。synchronicable 这个类标识表示有?copy;类的成员函数都是同步的。抽象类面向对象的一个最大优点

26、就是能够定义怎样使用这个类而不必真正定义好成员函数。如果程序由不同的用户实现时是很有用的,这不需用户使用相同的成员函数名。在 java 里 Graphics 类里一个 abstract 类的例子如下:publicabstractclassGraphicspublicabstractvoiddrawLine(intx1,inty1,intx2,inty2);publicabstractvoiddrawOval(intx,inty,intwidth,intheight);publicabstractvoiddrawRect(intx,inty,intwidth,intheight);.在Graph

27、ics类里声明了几个成员函数, 但成员函数的实际代码是在另外一?copy;地方实现的。publicclassMyClassextendsGraphicspublicvoiddrawLine(intx1,inty1,intx2,inty2)类其定所画线程序代码力一个类包含一个 abstract 成员函数,这个类必须定义为 abstract 类。然而并不是 abstract 类的所有的成员函数都是 abstract 的。Abstract 类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。接口当你确定多个类的操作方式都很相象时,abstract 成员函数是很有用的。但如果你需要使用这?c

28、opy;abstract 成员函数, 必须创建一个新类, 这样有时很繁琐。 接口提?copy;了一种抽象成员函数的有利方法。一个接口包含了在另一个地方实现的成员函数的收集。 成员函数在接口里定义为 public 和 abstract。 接口里的实例变量是 public,static和 finalo 接口和抽象的主要区别是一个接口提?copy;了封装成员函数协议的方法而不必强迫用户继承类。例子:publicinterfaceAudiClip/Startplayingtheclip.voidplay();/Playtheclipinaloop.voidloop();/Stopplayingthec

29、lipvoidstop();想使用AudioClip接口的类使用implenents关键词来提?copy;成员函数的程序代码。classMyClassimplementsAudioClipvoidplay()实现代码voidloop实现代码voidstop优点一个接口类可以被任意多的类实现,每个类可以共享程序接口而不必关心其它类是怎样实现的。classMyOtherClassimplementsAudioClipvoidstop().内部成员函数 Java 还提?copy;了调用 C 和 C+-+S 数的方法。用 native 关键词来定义 C 和 C+勺函数。publicclassDatei

30、ntnow;publicDate()now=time();privatenativeinttime();staticSystem.loadLibrary(time);一?copy;Java 代码写好后,就需要以下步骤执行:1.用 javah 来创建头文件(.h)2.用 javah 来创建 stub 文件 3.用 C 和C+Wnative成员函数的代码 4.编译 stub文件和.C文件成一个动态可加载库5.用 java运行 java 程序或 appletviewer 运行 applet 注意:Native 成员函数超出了类的范围。3.9 包(Packages)包(Package)由一组类(cla

31、ss)和界面(interface)组成。它是管理大型名字空间,避免名字冲突的工具。每一个类和界面的名字都包含在某个包中。按照一般的习惯,它的名字是由.号分隔的单词构成,第一个单词通常是开发这个包的组织的名称。定义一个编译单元的包编译单元的包由 package 语句定义。如果使用 package 语句,编译单元的第一行必须无空格,也无注释。其格式如下:packagepackageName;若编译单元无 package 语句,则该单元被置于一个缺省的无名的包中。使用其它包中的类和界面在 Java 语言里提?copy;一个包用元以Ort以包和im的面界和类中包制机的现实和义龙的中包它其来明标来词键关

32、它到入输面界和类的定指把动译h编包个的一己单在中所的在的包的名字;前缀包名法 ject.FooBarobj=ject.FooBar();*使用 import 语句, 引入一个类或一个界面,或包含它们的包。 引入的类和界面的名字在当前的名字空间可用。引入一个包时,则该包所有的公有类和界面均可用。具形式如下:/从 ject 引入所有类 ject.*;这个语句表示 ject 中所有的公有类被引入当前包。以下语句从 ject 包中进入一个类 Employec_List。/从 acme.pr

33、oject 而弓 I 入 Employee_Lject.Employee_list;Employee_Listobj=newEmployee_List();在使用一个外部类或界面时,必须要声明该类或斗面所在的包,否则会产生编译错误。import(引用)类包(classpackage)用 import 关键词调入, 指定 package 名字如路径和类名, 用*匹配符可以调入多于一个类名。importjava.Date;importjava.awt.*;如果 java 源文件不包含 package,它放在缺省的无名 packageo 这与源文件同目录,类可以这样

34、引入:importMyClass。Java 系统包:Java 语言提?copy;了一个包含窗口工具箱,实用程序,一般 I/O,工具和网络功能的包。java.applet 这个包包含量了一?copy;设计 applet 的类, 用一个类 Applet 和三个接口.AppletContext;AppletStub;和 AudioClip.java.awt 另一个窗口工具箱包.awt,包含了一?copy;产生装饰物和 GUI 成员的类。这个 package 包括:Button,Checkbox,Choice,Component,Graphics,Menu,Pane1,TextArea和TextFie

35、ld。java.ioI/Opackage 包含文件输入/输出类,FileInputStream种白两用有弓以个可每码在代*的面中界方定面来界来面包们它它苴八出和 FileOutputstream.java.lang 这个包包含 Java 语言类,包含:对象,线程,异常出口,系统,整数,原点,数学,字符等。 这个类支持 TCP/IP 网络协议,并包含 Socket 类,URL 和 URL 相联系的类。java.util 这个类包含一?copy;程序的同步类,它包含 Date,Dictionary 类等。3.10 异常当在 Java 程序中发生一个错误时,例如:一个变元的值非法,代码会发现这个错误

36、,并引发一个异常(exception)。在缺省的情况下,异常会输出一个错误消息,然后中止线程的执行。但是,程序自己可以定义异常处理段(exceptionhandler)来截获(catch)异常, 并从错误中恢复。 有一?copy;异常是由 Java 解释器在运行时刻引发的。 实际上,任何类都可以定义属于自己的异常,并使用 throw 语句引发它们。一个 throw(引发?copy;语句是由 throw 关键字和一个对象构成。按常规,该对象应该是 Exception 类的实例或其子类的实例。throw 语句会引起执行转向相应的异常处理段。当一个 throw 语句执行时,它下面的所有代码不再执行了

37、,它所在的方法也不再返回值。下面的例子将演 示 如 何 创 建 一 个Exception 的 子 类 , 然 后 引 发 一 个 异 常 。classMyExceptionextendsExceptionclassMyClassvoidoops()if(/*不出现错误*/)else/*出错*/else/*出错*/thrownewMyException();为了定义一个异常处理段, 程序必须用 try 语句把可能产生异常的代码成组。在 try 语句后面跟上一个或多个 catch(截获?copy;语句,每个异常对应一个catch 语 句 。 每 个catch语 句 中 包 含 着 异 常 处 理

38、段 。 例 如 :tryp.a=10;catch(NullPointerExceptione)println(pwasnull);catch(Exceptione)println(othererrorsoccured);catch(Objectobj)println(Whothrewthatobject?);catch语句和一个方法定义类似,只不过该方法只有一个参数,且无返回类型。参数可以是一个类或一语句会寻找个界面。当一常类个异常发生时,相匹配的参数。嵌如套 的 try/catch出与该异果一个参数和指定异常匹配则:. *该参数和指定的异常是 同 一个类,或*该参数是指定异常的子类,或*如果

39、 参数 是 一个界面,指定异 f者类实现了这个界面。第一个参数 和 异常匹配的 try/catch语句,则与其匹配的 catch 语句执行。在 catch 语旬执行完后,程序的执行被恢复。但已不 可能 恢 复到异常发生处再次执行。例如:print(now);tryprint(is);thrownewMyException();print(a);catch(MyExceptione)print(the);print(timen);打 Bp 为nowisthetime。正如这个例子所示,异常应该主要用于错误处理,若用于其它方面会使代码晦涩难?reg;。异常处理段是可以嵌套的,允许异常处理可以发生在

40、多个地方。 嵌套异常处理通常用于当第一个处理程序无法完全从错误中恢复过来的时候,而不得不执行一?copy;清除代码。为了把异常处理控制传递给更高层的处理段,可以再一次对截获对象实?copy;throw 操作。注要再次实 throw 异常的方法,throw 语句执行完后,会终止执行。tryf.open();catch(Exceptione)f.close();throwe;定局语句 finally(定局?copy;语句是用于保证无论在异常是否发生的情况下,某?copy;代码被执行。下例说明 finally 语句的用法:try/做某?copy;动作;finally此后清除;和以下代码类似try做某

41、?copy;动作catch(Objecte)止匕后清除;throwe;此后清除;即使 try块中包含 return,break,continue,throw 语句,finally 语句也会被执行。例如:下面的代码finally总是被输出,而aftertry仅在 a!=10 时被输出。tryif(a=10)return;finallyprint(finallyn);print(aftertryn);运行时刻异常本节列出的清单是 Java 解释器引发的各种异常。 当运行时刻发现各种错误,由解释器引发异常。ArithmeticException 如果程序试图除 0,或用 0 取模,会产 Arithm

42、eticException(算术异常?copy;,其它算术操作不会产生异常。有关 Java 如何处理其它算术错误的信息,见整数运算符和浮点运算符两节。例如:下面的代码将会弓I发ArithmeticException异常:classArithpublicstaticvoidmain(Stringargs)intj=0;j=j/j;NullPointerException 当程序试图访问一个空对象中的变量或方法,或一个空数组中的元素时则引发NullPointerException(空指针异常?copy;。例如,访问长度为 0 的数组 a0。有以下类声明,运行时会引发 NullPointerExce

43、ption 异常:classNullpublicstaticvoidmain(Stringargs)Stringo=null;inta=null;o.length();a0=0;有趣的是,如果我们引发一个空对象,也会产一 NullPointerException 异常。IncompatibleClassChangeException 当一个类的定义被改变,而引用该类的其它类没有 被 重 新 编 译 时 , 会 产 生 这 一 异 常 。 有 四 种 类 更 改 会 导 致 运 行 时 刻 引 发IncompatibleClassChangException 异常。 *一个类中的变量声明由 st

44、atic 变成非 static,而其它访问该类这一变量的类没有被重新编译。*一个类中的变量声明由非 static 变成static,而其它访问该类这一变量的类没有被重新编译。 *类中声明的某个域被删除, 而其它访问该域的类没有被重新编译。*类中声明的某个方法被删除,而其它访问该方法的类没有被重新编译。ClassCastException如果试图把对象o强制成ClassC,而o既不是ClassC的实例,也 不 是 ClassC 子 类 的 实 例 , 这 时 便 会 产 生 ClassCastException 。classClassCastpublicstaticvoidmain(Stringargs)Objecto=newObject();Strings=(string)o;s.length();NagativeArraySizeException 如 果 一 个 数 组 的 长 度 是 负 数 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论