设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4748|回复: 0
打印 上一主题 下一主题

[java基础] 面向对象程序设计<中>

[复制链接]

12

主题

5

好友

425

积分

中级会员

Rank: 3Rank: 3

生肖
星座
摩羯座
性别

最佳新人 活跃会员 灌水之王 论坛元老

跳转到指定楼层
楼主
发表于 2012-8-18 23:23:50 |只看该作者 |倒序浏览
本帖最后由 流氓 于 2012-8-23 23:07 编辑

多态的表现形式:方法的重载、方法的覆盖(重写)、对象转型(父类引用指向子类对象)、接口回调(接口应用指向实现接口类对象)
  • 方法重载:构造方法重载、普通方法重载
  • 方法覆盖:类继承的过程中,子类方法跟父类方法名字相同,并且传递的参数完全一样,称为子类覆盖父类方法,覆盖父类方法通常是为了对其进行修改,并添加新的功能,当一个被覆盖方法通过父类引用被调用时,根据当前被引用对象的类型来决定执行哪个方法
  • 在子类覆盖父类某个方法,不能降低方法的访问权限
  • 子类不能覆盖父类中声明为finalstatic的方法
  • 可以通过super关键字条用父类中被覆盖的成员
  • super使用:通常使用super引用父类成员
  • super调用父类构造方法,必须在子类构造方法中的第一条语句使用super调用父类的构造方法:super([参数])
  • super调用父类被覆盖的方法:super.方法名([参数])
  • super调用父类被隐藏的成员变量:super.变量名
  • Object
  • equals()方法: equals()方法用于判断一个对象是否等于另外一个对象,实际上是比较两个引用是否指向同一个对象。在实际编程中,更关心被比较的两个引用所指向的对象的状态(或属性)是否相同。许多Java类都重写了这个方法,如StringData、基本数据类型的包装类。
  • 运算符“= =”用来比较两个运算对象是否相等,这两个运算对象既可以是基本类型,也可以是引用类型。当两个运算对象都是引用类型时,那么这两个引用变量必须都引用同一个对象才返回true
  • “= =”用于String对象表示比较的是否是同一个串对象,当用于比较两个字符串是否相等时,应使用equals()方法
  • hashCode()方法:散列码(hash code)是由对象导出的一个整型值,主要是将对象作为key,用于Hash表中,通常需要子类对该方法进行重写。常见的String类及基本数据类型的包装类如IntegerLong类等都已对HashCode()equals()方法进行了重写,保证:若obj1.equals(obj2),则obj1.hashCode()==obj2.hashCode()。其含义是:若对象obj1和对象obj2按对象的状态(或属性或内容)是相等的,则它们的hashCode值应相同。即对象的hashCode值应由对象的状态决定的。例如,两个不同的String对象只要包含相同的字符序列,其hashCode值就相同
  • toString()方法: toString()方法返回对象的字符串表示,默认时,其格式为类名@对象的十六进制哈希码
public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  • Java系统处理对象时,每当需要将对象转成串时,都会自动调用该方法。当定义自己对象时,应该重写该方法,以返回自己对象有明确含义串的表示。许多Java类,如DateStringStringBuffer和包装类都重写了toString()方法,返回有实际意义的内容
  • System.out.println(new     Object().toString());                     //     显示java.lang.Object@10b30a7
  • System.out.println(new     Integer(56).toString());                    // 显示56
  • System.out.println(new     String ("hello").toString());         
  •         // 显示hello
  • 以上语句等价于:
  • System.out.println(new     Object());                              
  •         // 显示java.lang.Object@10b30a7
  • System.out.println(new     Integer(56));                      //     显示56
  • System.out.println(new     String("hello"));                       //     显示hello
  • 字符串类
  • 一个字符串常量是用双引号括住的一串字符,如"Hello"。一个字符串常量是一个String对象。Java.lang.String类代表只读的不可修改的字符序列,两个字符串对象使用“+”“+=”运算符,会产生新的字符串对象。若Java程序中有多处出现字符串常量"Hello",则Java编译程序只创建一个String对象,所有的字符串常量"Hello"将使用同一个String对象
  • int length():返回字符串的长度
  • char charAt(int     index):返回指定索引处的char值,其中index的取值范围是0~字符串长度-1
  • int compareTo(String     another):按Unicode码值的大小逐字符比较两个字符串的大小。如果源串较小,则返回一个小于0的值,如果相等则返回0,否则返回一个大于0的值
  • String concat(String     str):把字符串str附加在当前字符串的末尾
  • equals(Object obj)equalsIgnoreCase(String str):判断两个字符串对象的内容是否相同。两个方法的区别在于:equals()方法区分字母的大小写,而 equalsIgnoreCase()方法不区分字母的大小写
  • int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引
  • int indexOf(String     str) 返回指定子字符串在此字符串中第一次出现处的索引
  • int lastIndexOf(int     ch) 返回指定字符在此字符串中最后一次出现处的索引
  • int     lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引
  • String toUpperCase():将此String 中的所有字符都转换为大写
  • String toLowerCase():将此String中的所有字符都转换为大写
  • String trim():返回字符串的副本,忽略前导空白和尾部空白
  • String substring(int     beginIndex):返回一个新的字符串,该子字符串从指定索引处的字符开始,直到此字符串末尾
  • String substring(int     beginIndex,int endIndex):返回一个新字符串,该子字符串从指定的beginIndex处开始,直到索引endIndex -1处的字符
  • static String     valueOf():把基本数据类型转换为String类型
  • String[] split(String     regex):将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组
  • StringBuffer
  • StringBuffer对象表示字符串缓存时,有两个基本概念,一个是容量,另一个是字符串的长度。长度是StringBuffer对象所表示的字符串的长度,容量是StringBuffer对象为存放字符串所拥有的空间大小
  • StringBuffe append():向缓冲区内添加新的字符串
  • StringBuffe     insert(int offset,String str):在字符串的offset位置插入字符串str
  • StringBuffer     delete(int start,int end):移除此序列的子字符串中的字符,该子字符串从指定的start 处开始,一直到索引end - 1处的字符
  • StringBuffer     reverse():将字符序列逆序
  • String类与StringBuffer类的区别如下:
  • 1String类代表字符串,Java 程序中的所有字符串字面值("abc")都作为此类的实例实现,字符串是常量,它们的值在创建之后不能更改,因此,String类的对象都是线程安全的。StringBuffer代表线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该字符序列的长度和内容。如append()insert()delete()replace()方法等
  • String类与StringBuffer类的区别如下:
  • 2String类重写了从Object类所继承的equals()方法,而StringBuffer类没有重写该方法
  • 3 String对象之间可以用操作符“+”进行连接,而StringBuffer对象之间不能通过操作符进行连接,但可使用append()方法
  • 4 StringBufferStringBuilder是不能比较大小的,而String是可以比较大小的。因此可以方便地将StringBuffer转成String再比较大小
  • String类与StringBuffer类的区别如下:
  • 5)若一个字符串有频繁的插入、删除、修改等操作,则适宜使用StringBuffer(线程安全)StringBuilder,否则可使用String类进行大小比较、字符串结构分析等。若对一个String对象进行频繁的插入、删除、修改等操作,会产生大量的临时String对象,内存空间消耗较大。因此应按操作需求随时在StringBufferString之间互相转换
  • 6 String“+”运算符实际上是由StringBuilderappend()方法来实现的
  • 包装类
  • Java 既提供了基本数据类型,也提供了相应的包装类。使用基本数据类型,能够满足大多数应用需求,但基本数据类型不具有对象的特性,不能满足特殊需求。Java中的很多类的不少方法的参数类型是Object类型,即,这些方法接受的参数都是对象,而又需要用这些方法处理基本数据类型的数据,这时包装类就很有用了
  • 包装类特点
  • 1)所有的包装类都是final类型,不能创建它们的子类
  • 2)包装类是不可变类,一个包装类的对象创建后,它所包含的基本数据类型就不能被改变。因此,所有包装类的对象都是线程安全的
  • 3)从JDK5.0版本开始,提供自动装箱和自动拆箱机制
  • Integer oi = 3;// 自动装箱,等价于Integer oi = Integer.valueOf(3);
  • int i oi;       // 自动拆箱,等价于int i = oi.intValue();
  • int v = oi + 1;// 混合运算,等价于int v = Integer.valueOf(oi.intValue()+1);
  • 包装类特点
  • 4)将字符串转换为基本值的parseType方法,例如,Integer.parseInt(args[0])     
  • 5)可生成该对象基本值的typeValue方法( a.intValue() ) Character类和Boolean类直接继承Object类,除此以外,其他包装类都是java.lang.Number的直接子类,因此都继承或者重写了Number类的方法
  • 包装类特点
  • 6)所有的包装类都可以用和它对应的基本数据类型作为参数,来构造它们的实例
  • Boolean b = new     Boolean(true);   // : Boolean b = true;
  • Byte bt = new     Byte((byte)10);      // : Byte b = 10;
  •   Character c = new Character('b'); // : Character c = ‘b’;
  •   Integer i = new Integer(1);// : Integer i 1;
  •   Float f = new Float(3.14f);  // : Float     f = 3.14 f;
  • 7)包装类都重写了Object类的toString()方法,以字符串的形式返回包装类对象所表示的基本数据类型
  • 包装类特点
  • 8)除Character类和Boolean类以外,包装类都有valueOf(String str)静态工厂方法,可以根据String类型的参数来创建包装类对象。参数字符串str不能为null,而且该字符串必须可以解析为相应的基本数据类型包装
  • 9)除Character类以外,包装类都有parseType(String str)静态方法,把字符串转换为相应的基本数据类型数据,且该字符串必须是可以解析为相应的基本数据类型的数据
  • 日期类Date
  • Date类用以毫秒数表示特定的日期和时间。在Java中有两个Date类,一个是java.util.Date,另一个是java.sql.Date类,java.util.Date java.sql.Date 的父类。java.sql.Date有一个valueOf()方法用于将 JDBC日期转义形式的字符串转换成Date
  • DataFormat类:
  • Calendar类:
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-4-20 14:04 , Processed in 0.130114 second(s), 27 queries .

回顶部