资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
6.1.2 字符串类几个常用方法 String 类定义了许多方法,下面是几个最常用方法。 publicpublic intint length()length():返回字符串的长度,即字符串包含的字符:返回字符串的长度,即字符串包含的字符个数。注意,对含有 中文或其他语言符号的字符串,计算长度时,一个符号作为一个字符计数。 publicpublic charchar charAt(intcharAt(int index)index):返回字符串中指定位置的字符,:返回字符串中指定位置的字符,index 表示位置, 范围为 0s.length()-1。 publicpublic StringString concat(Stringconcat(String str)str):将调用字符串与参数字符串连:将调用字符串与参数字符串连接起来,产生一 个新的字符串。 public String substring(int beginIndex, int endIndex):从字符串的下标从字符串的下标 beginIndexbeginIndex 开始到开始到 endIndexendIndex 结束产生一个子字符串结束产生一个子字符串。 public String substring(int beginIndex):(子链子串);从字符串的下标从字符串的下标 beginIndexbeginIndex 开始到结束产生一个子字符串。开始到结束产生一个子字符串。 public String replace(char oldChar, char newChar):将字符串中的所有所有 oldCharoldChar 字符改变为字符改变为 newCharnewChar 字符,返回一个新的字符串。 public String toUpperUpperCase():将字符串转换成大写大写字母。 public String toLowerLowerCase():将字符串转换成小写小写字母。public String trim():返回去掉了前后空白字符的字符串对象。 (vt.装饰; 修剪; 整理; adj.整齐的,整洁的; 修长的; 苗条的; 修剪; 整齐; 健康状态; 装束;) public boolean isEmpty():返回该字符串是否为空(“) ,如果 length()的结果为 0,方法返回 true,否则返回 false。 下面程序要求从键盘输入一个字符串,判断该字符串是否是回文串。一个字符串,如 果从前向后读和从后向前读都一样,则称该串为回文串。例如, “mom”和“上海海上”都 是回文串。 算法思想:对于一个字符串,先判断该字符串的第一个字符和最后一个字符是否相等,算法思想:对于一个字符串,先判断该字符串的第一个字符和最后一个字符是否相等, 如果相等,检查第二个字符和倒数第二个字符是否相等。这个过程一直进行,直到出现不如果相等,检查第二个字符和倒数第二个字符是否相等。这个过程一直进行,直到出现不 相等的情况或者串中所有字符都检测完毕,当字符串有奇数个字符时,中间的字符不用检相等的情况或者串中所有字符都检测完毕,当字符串有奇数个字符时,中间的字符不用检 查。查。 6.1.7 String 对象的不变性 在 Java 程序中一旦创建一个 String 对象,就不能对其内容进行改变,因此说 Java 的 String 对象是不可变的字符串。 有些方法看起来是修改字符串,但字符串修改后产生了另一个字符串,这些方法对原 字符串没有任何影响,原字符串永远不会改变。请看下面的例子。 程序 6.6 ChangeString.javapublic class ChangeString public static void main(String args)String s = new String(“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 的关系。A is-a B: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 包中,该类缺省访问修 饰符。package com.demo; class Circle / 类的访问修饰符为缺省Circle()System.out.println(“Creating a circle“); System.out.println(“Creating a circle“); 7.4.1 类的访问权限 在 Eclipse 中程序不能被编译,程序第一行显示的错误信息是:The type com.demo.Circle is not visible意思是 Circle 类型在该类中不可见。对出现这样问题可以有两种解决办法: (1)将 Circle 类的访问修饰符修改为 public,使它成为公共类,这样就可以被所有 其他类访问。 (2)在 CircleTest 类中加上一行 package 语句,这样它们都在一个包中。package com.demo; 一般情况下,如果一个类只提供给同一个包中的类访问可以不加访问修饰符, 如果还希望被包外的类访问,则需要加上 public 访问修饰符。 7.4.2 类成员的访问权限 类成员的访问权限包括成员变量和成员方法的访问权限。共有 4 个修饰符, 它们分别是 private、缺省的、protected 和 public,这些修饰符控制成员可以在 程序的哪些部分被访问。1. private 访问修饰符用 private 修饰的成员称为私有成员,私有成员只能被这个类本身访问,外界不能访 问。private 修饰符最能体现对象的封装性,从而可以实现信息的隐藏。 7.4.2 类成员的访问权限 程序 7.8 AnimalTest.javaclass Animalprivateprivate String name = “animal“;privateprivate void display()System.out.println(“My name is “+name); public class AnimalTestpublic static void main(String args)Animal a = new Animal();System.out.println(“a.name = “+a.name);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)类。在该类中定义 求周长和面积的方法。由于几何形状不是一个具体的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号