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