java期末考试复习知识点_第1页
java期末考试复习知识点_第2页
java期末考试复习知识点_第3页
java期末考试复习知识点_第4页
java期末考试复习知识点_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

java期末考试复习知识点java期末考试复习知识点java期末考试复习知识点xxx公司java期末考试复习知识点文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度6.1.2字符串类几个常用方法String类定义了许多方法,下面是几个最常用方法。publicintlength():返回字符串的长度,即字符串包含的字符个数。注意,对含有中文或其他语言符号的字符串,计算长度时,一个符号作为一个字符计数。publiccharcharAt(intindex):返回字符串中指定位置的字符,index表示位置,范围为0~s.length()-1。publicStringconcat(Stringstr):将调用字符串与参数字符串连接起来,产生一个新的字符串。– publicStringsubstring(intbeginIndex,intendIndex):从字符串的下标beginIndex开始到endIndex结束产生一个子字符串。– publicStringsubstring(intbeginIndex):(子链\子串);从字符串的下标beginIndex开始到结束产生一个子字符串。– publicStringreplace(charoldChar,charnewChar):将字符串中的所有oldChar字符改变为newChar字符,返回一个新的字符串。– publicStringtoUpperCase():将字符串转换成大写字母。– publicStringtoLowerCase():将字符串转换成小写字母。publicStringtrim():返回去掉了前后空白字符的字符串对象。(vt.装饰;修剪;整理;adj.整齐的,整洁的;修长的;苗条的;修剪;整齐;健康状态;装束;)publicbooleanisEmpty():返回该字符串是否为空(""),如果length()的结果为0,方法返回true,否则返回false。下面程序要求从键盘输入一个字符串,判断该字符串是否是回文串。一个字符串,如果从前向后读和从后向前读都一样,则称该串为回文串。例如,“mom”和“上海海上”都是回文串。算法思想:对于一个字符串,先判断该字符串的第一个字符和最后一个字符是否相等,如果相等,检查第二个字符和倒数第二个字符是否相等。这个过程一直进行,直到出现不相等的情况或者串中所有字符都检测完毕,当字符串有奇数个字符时,中间的字符不用检查。6.1.7String对象的不变性在Java程序中一旦创建一个String对象,就不能对其内容进行改变,因此说Java的String对象是不可变的字符串。有些方法看起来是修改字符串,但字符串修改后产生了另一个字符串,这些方法对原字符串没有任何影响,原字符串永远不会改变。请看下面的例子。程序6.6ChangeString.javapublicclassChangeString{publicstaticvoidmain(String[]args){Strings=newString("Hello,world");s.replace('o','A');//s的值并没有改变s=s.substring(0,6).concat("Java");s.toUpperCase();//s的值并没有改变System.out.println(s);}}程序运行结果为:Hello,JavaJava面向对象的三大特性,原理及区分继承(1)继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。(2)对象的一个新类可以从现有的类中派生,这个过程称为类继承,新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。(3)派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。封装(1)封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。多态性(1)多态性是指允许不同类的对象对同一消息作出响应。(2)多态性包括参数化多态性和包含多态性。(3)多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。封装:每个对象都包括进行操作所需要的所有信息,而不依赖于其他对象来完成自己的操作。通过类的实例来实现。

好处:良好的封装可以降低耦合度;类的内部可以自由修改;类具有对外的清晰接口。

继承:IS-A的关系。Ais-aB:A是B,A可以继承B。A是B的一个特例,特殊化,A又可以具备自己独有的个性。三点:

子类拥有父类非private的属性和功能(父类的构造函数例外,可以用base关键字访问,base代表着父类);

子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;

子类可以以自己的方式重写父类的功能。

缺点:父类变,子类不得不变,父子是一种强耦合的关系。

多态:不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。注意点:

子类以父类的身份出现;

子类在运行时以自己的方式实现;

子类以父类的身份出现时,子类特有的属性和方法不可以使用。

为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的(virtual),子类可以选择使用override将父类的实现替换为自己的实现,这就是多态。封装:封装就是要把属于同一类事物的共性(包括属性与行为)归到一个类中,以方便使用.比如人这个东东,可用下面的方式7.4封装性与访问修饰符在Java语言中,对象的封装是通过两种方式实现的:(1)通过包实现封装性。在定义类时使用package语句指定类属于哪个包。包是Java语言最大的封装单位,它定义了程序对类的访问权限。(2)通过类或类的成员的访问权限实现封装性。7.4封装性与访问修饰符7.4.1类的访问权限7.4.2类成员的访问权限7.4封装性与访问修饰符在Java语言中,对象的封装是通过两种方式实现的:(1)通过包实现封装性。在定义类时使用package语句指定类属于哪个包。包是Java语言最大的封装单位,它定义了程序对类的访问权限。(2)通过类或类的成员的访问权限实现封装性。7.4.1类的访问权限类(也包括接口和枚举等)的访问权限通过修饰符public实现。它定义哪些类可以使用该类。public类可以被任何的其他类使用,而缺省访问修饰符的类仅能被同一包中的类使用。下面的Circle类定义在com.demo包中,该类缺省访问修饰符。packagecom.demo;classCircle{//类的访问修饰符为缺省Circle(){System.out.println("Creatingacircle");}}System.out.println("Creatingacircle");}}7.4.1类的访问权限在Eclipse中程序不能被编译,程序第一行显示的错误信息是:Thetypecom.demo.Circleisnotvisible意思是Circle类型在该类中不可见。对出现这样问题可以有两种解决办法:(1)将Circle类的访问修饰符修改为public,使它成为公共类,这样就可以被所有其他类访问。(2)在CircleTest类中加上一行package语句,这样它们都在一个包中。packagecom.demo;一般情况下,如果一个类只提供给同一个包中的类访问可以不加访问修饰符,如果还希望被包外的类访问,则需要加上public访问修饰符。7.4.2类成员的访问权限类成员的访问权限包括成员变量和成员方法的访问权限。共有4个修饰符,它们分别是private、缺省的、protected和public,这些修饰符控制成员可以在程序的哪些部分被访问。1.private访问修饰符用private修饰的成员称为私有成员,私有成员只能被这个类本身访问,外界不能访问。private修饰符最能体现对象的封装性,从而可以实现信息的隐藏。7.4.2类成员的访问权限程序7.8AnimalTest.javaclassAnimal{privateStringname="animal";privatevoiddisplay(){System.out.println("Mynameis"+name);}}publicclassAnimalTest{publicstaticvoidmain(String[]args){Animala=newAnimal();System.out.println("="+);a.display();}}该程序将产生编译错误,因为在Animal类中变量name和display()方法都声明为private,因此在AnimalTest类的main()方法中是不能访问的。如果将上面程序的main()方法写在Animal类中,程序能正常编译和运行。这时,main()方法定义在Animal类中,它就可以访问本类中的private变量和private方法。类的构造方法也可以被声明为私有的,这样其他类就不能生成该类的实例,一般是通过调用该类的方法来创建类的实例。2.缺省访问修饰符对于缺省访问修饰符的成员,一般称为包可访问的。这样的成员可以被该类本身和同一个包中的类访问。其他包中的类不能访问这些成员。对于构造方法,如果没有加访问修饰符,也只能被同一个包的类产生实例。.protected访问修饰符当成员被声明为protected时,一般称为保护成员。该类成员可以被这个类本身、同一个包中的其他类以及该类的子类(包括同一个包以及不同包中的子类)访问。如果一个类有子类且子类可能处于不同的包中,为了使子类能直接访问超类的成员,那么应该将其声明为保护成员,而不应该声明为私有或默认的成员。4.public访问修饰符用public修饰的成员一般称为公共成员,公共成员可以被任何其他的类访问,但前提是类是可访问的。表7.3总结了各种修饰符的访问权限。7.5.1抽象方法和抽象类前面定义了圆(Circle)类,假设还要设计矩形(Rectangle)类和三角形(Triangle)类,这些类也需要定义求周长和面积的方法。这时就可以设计一个更一般的类,比如几何形状(Shape)类。在该类中定义求周长和面积的方法。由于几何形状不是一个具体的形状,这些方法就不能实现,因此要定义为抽象方法(abstractmethod)。抽象方法只有方法的声明,没有方法的实现,定义抽象方法需要在方法前加上abstract修饰符。包含抽象方法的类应该定义为抽象类(abstractclass),定义抽象类需要在类前加上abstract修饰符。下面定义的Shape类即为抽象类,其中定义了两个抽象方法。程序7.9Shape.javapublicabstractclassShape{privateStringname;publicShape(){}//抽象类可以定义构造方法publicShape(Stringname){=name;}//抽象类可以定义非抽象方法publicvoidsetName(Stringname){=name;}publicStringgetName(){returnname;}publicabstractdoubleperimeter();//定义抽象方法publicabstractdoublearea();}抽象方法的作用是为所有子类提供一个统一的接口。对抽象方法只需声明,不需实现,即在声明后用一个分号(;)结束,而不需要用大括号。在抽象类中可以定义构造方法,这些构造方法可以在子类的构造方法中调用。尽管在抽象类中可以定义构造方法,但抽象类不能被实例化,即不能生成抽象类的对象,如下列语句将会产生编译错误:Shapesh=newShape();在抽象类中可以定义非抽象的方法。可以创建抽象类的子类,抽象类的子类还可以是抽象类。只有非抽象的子类才能使用new创建该类的对象。抽象类中可以没有抽象方法,但仍然需要被子类继承,才能实例化。注意:因为abstract类必须被继承而final类不能被继承,所以final和abstract不能在定义类时同时使用。下面重新定义了Circle类,它继承了Shape类并实现了其中的抽象方法。接口(interface)是常量和方法的集合,这些方法只有声明没有实现。接口主要用来实现多重继承。接口定义了一种可以被类层次中的任何类实现的行为的协议。接口的定义与类的定义类似,包括接口声明和接口体两部分。接口声明的一般格式如下:[public]interfaceInterfaceName[extendsSuperInterfaces]{[public][static][final]typename=value;[public][abstract]returnTypemethodName([paramlist])[throwsExceptionList];}接口声明使用interface关键字,InterfaceName为接口名。extends表示该接口继承(扩展)了哪些接口。一个接口可以继承多个接口。如果接口使用public修饰,则该接口可以被所有的类使用,否则接口只能被同一个包中的类使用。大括号内为接口体,接口体中包含常量定义和方法定义两部分。常量的定义可以缺省修饰符,但系统会自动加上public、final、static属性。接口中的方法只有声明,没有实现,方法也可以缺省修饰符,缺省修饰符系统自动加上public、abstract属性,接口中的所有方法都是抽象方法。因此,接口是比抽象类还抽象的类型。构造方法的调用过程java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法.所以java中构造一个类的整个过程可以理解为:如果有父类先1构造父类然后构造本类2本类成员变量初始化3调用本类构造方法实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数,前提是父类有相对应的构造方法.前面说的构造本类之前要构造父类就是这条语句的作用.成员变量的初始化过程是在super()语句后面其它方法体前面执行的如果某个类的父类有多个构造方法时子类就可以用不同的参数调用父类中相对应的构造方法来构造父类如果加上自由块和静态的自由块执行的顺序为:父类的静态自由块,父类的静态成员变量被初始化子类的静态自由块,子类的静态成员变量被初始化父类的自由块,父类的成员变量被初始化父类的构造方法子类的自由块,子类的成员变量被初始化子类的构造方法自由块和成员变量是等同的优先级被初始化的例:publicclassE{publicstaticvoidmain(String[]args){newB();}}classA{{System.out.println("父类A的自由块");}A(){System.out.println("父类A的构造方法\n");}Dd=newD("父类A的成员变量被初始化\n");static{System.out.println("父类A的静态自由块");}staticDdd=newD("父类A的静态成员变量被初始化\n");}classBextendsA{staticDddd=newD("子类B的静态成员变量被初始化");static{System.out.println("子类B的静态自由块\n");}Ddddd=newD("子类B的成员变量被初始化");B(){super();System.out.println("子类B的构造方法");}{System.out.println("子类B的自由块\n");}}classD{D(Stringstr){System.out.println(str);}}覆盖只能发生在有父子关系的时候,也就是子类在可以访问父类方法的情况下,可以对父类的方法进行重写,要求:

1.方法名完全相同

2.参数列表完全相同

3.返回类型可以为原来返回类型的子类,这种叫做协变式返回,除了这种情况外,不能修改返回类型.

重载通常发生在同一个类中,但同样可以发生在继承关系中,也就是子类照样能重载父类的方法(有同样的重载要求),要求:

1.方法名完全相同

2.参数列表必须改变,也就是重载的方法参数类型、序顺必须不能和原来的一样。

3.返回类型没有要求,可以有或没有返回类型。

综上,两者的相同是:

方法名相同

不同点是:

1.覆盖发生在继承关系中,重载发生在同一类或继承关系中。

2.方法重载必须对参数做改变,而方法重写没有要求。

3.重载对返回类型没有要求,而重写必须返回原来方法的类型或该类型的子类。方法覆盖(重写)和方法重载具有以下相同点:

·都要求方法同名。

·都可以用于抽象方法和非抽象方法之间。

方法覆盖和方法重载具有以下不同点:

·方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致。

·方法覆盖要求返回类型必须一致,而方法重载对此不做限制。

·方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法)。

·方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。

·父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次异常大体分为编译异常和运行异

温馨提示

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

评论

0/150

提交评论