您的位置:首页 > 移动开发 > Objective-C

黑马程序员——API对象—Object类、String类、StringBuffer、包装类

2014-11-10 18:26 525 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------

一、Object类

(1)是定义在java.lang包下的,是所有类的超类。所有类都直接或者间接的继承自Object类。

父类:超类,根类,基类。

子类:派生类。

(2)要掌握的方法:

public String toString():返回对象的字符串表示形式。

默认情况下的组合:类的全路径名称+@+对象的哈希值的十六进制表示。

这种做法对我们来说,一般没有意义,所以,建议重写。

重写做法:一般是把所有的成员变量组合成一个字符串返回。

实在不愿意自己写,自动生成。

public boolean equals(Object obj):比较对象的地址值是否相同。

默认情况下,比较的是对象的地址值是否相同。

如果有自己的特殊需求,请重写Object类的该方法。

怎么重写呢?

<span style="white-space:pre">		</span>public boolean equals(Object obj) {
if(this == obj) {
return true;
}

if(!(obj instraceof Student)) {
return false;
}

Student s = (Student) obj;
return this.name.equals(s.name) && this.age == s.age;
}
如果有多个成员变量,把多个比较用&&连接即可。

引用类型用equals()方法。

基本类型用==号即可。

(3)面试题:

==和equals()的区别?

==:

可以比较基本类型,也可以比较引用类型。

比较基本类型,比较的是值是否相同。

比较引用类型,比较的是地址值是否相同。

equals:

只能比较引用类型。

默认情况下,比较的是地址值是否相同。

如果想比较内容,请自己重写Object类的equals()方法。

二、String类的常用方法

1、判断

1.1 boolean equals(Object); //判断传入的字符串是否与调用的字符串字符序列是否相同,相同就返回true否则false

1.2 boolean equalsIgnoreCase(string); //判断传入的字符串是否与调用的字符串字符序列是否相同,不区分大小写,相同就返回true否则false

1.3 boolean contains(string); //判断传入的字符串是否被调用的字符串包含

1.4 boolean startsWith(string); //判断调用的字符串是否以传入的字符串开头

1.5 boolean endsWith(string); //判断调用的字符串是否以传入的字符串结尾

1.6 boolean isEmpty(); //判断字符串是否为空

2、获取

2.1 int length(); //获取字符串的长度

2.2 char charAt(index); //通过索引获取对应的字符

2.3

int indexOf(int ch); //通过传入int数或者是字符找对应索引

int idnexOf(int ch,fromIndex); //在指定fromIndex的位置查找传入的字符

2.4

int indexOf(string str); //通过传入字符串查找字符串所对应的索引

int idnexOf(string str,fromIndex); //通过指定fromIndex的位置查找传入的字符串

2.5

int lastIndexOf(ch); //通过传入的字符从后向前找字符的索引值,把从后向前第一次找到的索引值返回

int lastIndexOf(ch,fromIndex): //通过指定fromIndex的位置,从后向前查找字符,把从后向前第一次找到的索引值返回

2.6

int lastIndexOf(string); //通过传入的字符串,从后向前查找,将第一次找到字符串中第一个字符的索引返回

int lastIndexOf(string,fromIndex): //通过指定fromIndex的位置,从后向前查找对应字符串,将第一次找到字符串中第一个字符的索引返回

2.7

String substring(start); //通过传入的索引值开始向后截取,截取的是索引到length

String substring(start,end); //通过传入的两个索引值截取,有开始有结尾,包含头不包含尾

3、替换。

3.1 String replace(oldChar,newChar); //将newChar替换OldChar,如果OldChar不存在,原字符串直接赋值给替换后字符串

3.2 String replace(string,string);

4、切割。

String[] split(regex); //通过regex切割字符串,切割后会产生一个字符串数组

String s = "老王 老刘 老李";

String[] arr = s.split(" ");

5、去除字符串两空格。

String trim();

6、比较

String str = "ab";

String str1 = "bc";

int num = str.compareTo(str1); //如果str比str1大的话,返回的正数

7、String类面试题

1.判断定义为String类型的s1和s2是否相等

<span style="font-size:14px;">String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));</span>


2.下面这句话在内存中创建了几个对象?

String s1 = new String("abc");


3.判断定义为String类型的s1和s2是否相等

String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); ?
System.out.println(s1.equals(s2)); ?


4.判断定义为String类型的s1和s2是否相等

String s1 = "a" + "b" + "c";
String s2 = "abc";
System.out.println(s1 == s2); ?
System.out.println(s1.equals(s2)); ?


5.判断定义为String类型的s1和s2是否相等

String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3.equals(s2)); ?


二.StringBuffer的常用方法

1,添加

1.1 StringBuffer append(int x); //在缓冲区的末尾追加

1.2 StringBuffer insert(int index,String str);
//在指定索引位置添加

2,删除

2.1 StringBuffer delete(int start, int end);
//包含头索引,不包含尾部索引

2.2 StringBuffer delete(0,sb.length); //清空缓冲区

sb = new StringBuffer();

sb.append("aaaaa");

sb = new StringBuffer();

2.3 StringBuffer deleteCharAt(int index); //根据指定的索引删除索引对应的元素

3,修改

3.1 StringBuffer replace(int start,int end,string);//用String替换,包含头不包含尾

3.2 void setCharAt(int index ,char); //修改,把指定索引位置的值改成传入的char值

3.3 StringBuffer reverse(); //将缓冲区的元素反转

3.4 void setLength(int len); //根据传入的len值截取缓冲区的长度

3.5 toString() //转换成String

4,查找

4.1 int indexOf(str); //查找str在缓冲区第一次出现的位置

4.2 int lastIndexOf(str); //从后向前查找查找str在缓冲区第一次出现的位置

三.StringBuilder和StringBuffer

1.StringBuilder和StringBuffer与String的区别

StringBuilder和StringBuffeer是可变字符序列

String是不变得,一但被初始化,就不能改变

2.StringBuilder和StringBuffer的区别

StringBuilder是线程不安全的,所以效率比较高,1.5版本出现

StringBuffer是线程安全的,效率相对较低,1.0版本出现的

四.包装类

1.什么是包装类

8种基本数据类型都会对应一个包装类

int是Integer, char是Character, 其他都是首字母大写double Double short Short boolean Boolean

2.什么时候使用

集合的泛型中只能写包装类型,后面的课程中会学到集合, 集合是只能装对象的, 而基本数据类型不是对象不能直接装入,在JDK5之前, 如果想把基本数据类型装入集合, 必须人工的进行包装(转为包装类对象),JDK5之后, 基本数据类型和包装类之间可以自动的互相转换了

<span style="font-size:14px;">Integer i = 10;
int x = i + 20;
Integer i1 = 98;
Integer i2 = 98;
i1 == i2?
Integer i3 = 198
Integer i4 = 198
i3== i4</span>


3.包装类常用的方法

static int parseInt(String s) //将数字字符串转换成数字,如果是非数字字符串会转换失败,抛异常

Integer.toBinaryString() //将一个十进制数字,转换成二进制的字符串

Integer.toOctalString() //将一个十进制数字,转换成八进制的字符串

Integer.toHexString() //将一个十进制数字,转换成十六进制的字符串

static long parseLong(String s)

static double parseDouble(String s)

static char forDigit(int digit, int radix)// radix代表的是进制例如二进制就传2,八进制就传8,digit代表后面进制里面的元素,而且不能超出后面进制的范围

<span style="font-size:14px;">String s = "123";
int x = Integer.parseInt(s);
String s = "abc";
char ch = Character.parseChar(s);</span>


-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐