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

------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培训、期待与您交流! -------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值