天天看点

第七篇 黑马程序员-多态与String类以及基本数据类型的包装类

------- android培训、java培训、期待与您交流! ---------

一.

多态的概念:

可以理解为事物存在的多种体现形态。

打个比方:

人:男人,女人

动物:猫,狗。

猫 x=new 猫();

动物 x=new 猫();

多态的一种形式:

父类指向子类对象,当我想使用子类特有内容的时候,就向下转型,如下代码所示:

package circulate;

public class Demo4

{

 private int num;

 Demo4(int num)

 {

  this.num=num;

 }

 public boolean equals(Object obj)

 {

  Demo4 d=(Demo4)obj;//父类指向子类对象,当我想使用子类特有内容的时候,就向下转

  return this.num==d.num;

 }

}

public class ObjectDemo

{

 public static void main(String[] args)

 {

  Demo4 d1=new Demo4(4);

  Demo4 d2=new Demo4(4);

  System.out.println(d1.equals(d2));

 }

}

1.多态的体现

父类的引用指向了自己的子类对象

父类的引用也可以接受自己的子类对象

2.多态的前提

必须是类与类之间有关系,要不是继承或实现

通常还有一个前提 那就是覆盖

3.多态的好处

多态的出现大大提高了程序的扩展性

4.多态的弊端

提高了扩展性,但是只能使用父类中的引用访问父类中的成员

5.多态的出现代码中的特点(多态使用的注意事项)

在编译时期,参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过。反之,失败

在运行时期参阅对象所属的类中是否y9ou调用的方法。

简单总结:成员函数在多态调用时,编译看左边,运行看右边。

在多态中,无论编译和运行,都参考左边(引用型变量所属的类)

在多态中,静态成员函数的特点:

无论编译和运行,都参考左边。

字符串String:

字符串最大特点,一旦被初始化,就不可以改变。

字符串是否是以指定内容开头

boolean startsWith(str)

字符串是否以指定内容结尾

boolean endsWith(str);

字符串中是否有内容

boolean isEmpty();此方法的原理就是判断长度是否为0,0和""以及null有区别,""表示一个对象,null

是指向空

字符串中是否包含一个子串

boolean contains(str);

判断字符串内容是否相同

boolean equals(str);

判断内容是否相同,并忽略大小写

boolean equalsIgnoreCase();

转换:

将字符数组转成字符串

构造函数:String(char[])

String(char[],offset.count):将字符数组值的一部分转换成字符串

将基本数据类型转成字符串

static String valueOf(int)

static String valueOf(double)

举例:比如3+"";是一个字符串,那么String.valueOf(3)和它一样

将字节数组转成字符串

String(byte[])

String(byte[],offset,count):将字节数组中的一部分转成字符串

将字符串转成字符数组

char[] toCharArray();

将字符串转成字节数组

byte[] getBytes();

替换:

String replace(oldchar,newchar);

切割:

String[] split(regex);

子串:获取字符串中的一部分

String subString(begin);

String subString(begin,end);

转换,去除空格,比较

1.将字符串转成大写或者小写。

String toUpperCase();

String toLowerCase();

String trim();

3.对两个字符串进行自然顺序的比较

int comparTo(String);

StringBuffer类:

什么时候用呢?当数据类型不确定,而且最终变成字符串,而且数据的个数不确定,用这个比较方便,比

数组方便

字符串的组成原理就是通过该类实现的

StringBuffer可以对字符串内容进行增删

StringBuffer是一个容器,且是可变化的,字节可以操作多个数据类型,最终会通过toString方法变成字符

串,这就是StringBuffer的三个特点

很多方法与String相同

StringBuffer是可变长度的

它是一个容器,所以就有以下功能:

1.存储

StringBuffer append():将指定数据作为参数添加到已有数据结尾

StringBuffer insert(index,数据):可以将数据插入指定index

2.删除

StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end.

StringBuffer  deleteCharAt(index):删除指定位置的字符

3.修改

StringBuffer replace(start,end,要替换的数据String)

void setCharAt(int index,char ch):替换

4.反转

StringBuffer reverse();

5.void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

将缓冲区中指定数据存储到指定数组中

StringBuilder类:

在jdk1.5之后出现的

不同之处是StringBuffer是线程同步

StringBuilder:是线程不同步的

升级三个因素:

提高效率

简化书写

提高安全性

基本数据类型的对象包装类:

byte-Byte short-Short int-Integer long-Long  boolean-Boolean  float-Float

double-Double  char-Character

基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间作转换

1.基本数据类型转字符串

基本数据类型+""

基本数据类型.toString(基本数据类型值)

如:Integer.toString(34):就是将34整数变成"34"

2.字符串转基本数据类型

基本数据类型包装类.parse基本数据类型,比如:

xxx a=xxx.parsexxx(String)

int a=Integer.parseInt("123");

double b=Double.parseDouble("12.23");

boolean b=Boolean.parseBoolean("true");

十进制转成其他进制

toBinaryString();

toHexString();

toOctalString();

其他进制转成十进制

parseInt(String,radix);

有一个intValue的方法也可以把一个Integer对象变成一个int值,比如

Integer i=new Integer("123");

int num=i.intValue();

注意:Integer本身复写了Object里面的equals方法,它建立了本对象自己比较相同的特有方式,他比较的

是数值是否相同。

-------- android培训、java培训、期待与您交流! ----------