1.全限定类名:格式 完整的包名.类名,如com.qf.javase.day13.Father。
仅在当前行使用com.qf.javase.day13.Father 这个类 :
com.qf.javase.day13.Father f = new com.qf.javase.day13.Father();
2.Object 类中的方法
每一个类创建的对象都可以使用Object类当中的所有的方法
a.hashCode :根据创建的对象在堆内存的地址计算得出的一个数字(默认的实现方式)
同一个对象的hashCode一定相同,不同对象的hashCode也可能相同
b.equals: 比较两个引用类型数据 (对象)的堆内存的地址是否一致(默认的实现方式)
只有equals和hashcode得出了相同的结果,这两个对象名才表示同一个对象
因为只有hashCode和equals合作判断才能得出正确的结果, 所以这两个方法的判断 标准必须统一,
hashCode的计算标准是内存地址,则equals的判断标准也是内存地址
hashCode的计算标准是属性的值,则equals的判断标准必须也是属性的值
PS: == 和equals的区别
1. 性质: == 是一个运算符, equals是一个方法
2. 能比较的数据类型: == 既可以比较基本数据类型, 也可以比较引用数据类型
equals只能比较引用数据类型,不能比较基本数据类型的
3. 比较的方式: == 比较的是变量保存的数据,基本数据类型比较的是值,引用数据类型比较的 是堆内存地址
equals方法重写之前和==没有差别,重写之后,既比较堆内存地址,也比较对象 中每一个属性的值
4. 使用的前提: == 没有任何的使用前提,但是equals必须建立在和hashCode同一个标准的情况 下, 要不都重写,要不都不重写
c.toString: 直接打印出创建这个对象的类的全限定类名@十六进制数的字符串( 默认的实现方 式)
重写之后的toString可以自定义具体的属性的值的打印
d.getClass : 获取创建这个类的类对象 Class对象
3.String类
(1)String类创建对象既可以使用new的方式,也可以采用直接赋值的方式
String的创建对象方法:无参构造,有参构造(参数类型:byte数组、char数组、字符串数据)
具体的字符的直接拼接 , 相当于 直接声明拼接之后的结果
如果是变量之间的拼接或者是变量和具体字符之间的拼接, 相当于 new String(拼接的结果)
两种方式就算字符完全一致,但是==的结果仍旧是false
(2)String类型对象可调用的判断方法
a.equals: 每一个字符是否都一样, 区分大小写
b.equalsIgnoreCase: 忽略大小写,字符相同即可
c.contains: 包含指定的字符
d.startsWith : 是否以指定的字符开头
e.endsWith : 是否以指定的字符结尾
f.isEmpty():无参,判断是否是空的字符串
(3)String类型对象可调用的获取方法
a.length(): 无参,获取组成这个字符串的字符的个数
b.charAt(参数:下标):获取指定位置的字符 没有则返回-1
c.indexOf(参数:指定字符): 获取指定字符在字符串中的下标,获取的数据类型为int型
d.indexOf(参数1:指定字符, 参数2:开始查找的下标):从指定的位置开始往后寻找指定字符的下 标位置
e.lastIndexOf(参数:指定字符):从尾部开始寻找
f.substring(参数:开始的下标):获取从当前字符串中开始往后获取, 直到结尾的字符
g.substring(参数1:开始的下标, 参数2:结束的下标):从开始的下标到结束的下标中的字符串 , 获取出来,不包含结束的下标对应的字符
(4)String类型对象可调用的转化方法
a.getBytes():无参,将字符串转化为字节数组,转化后为数组类型。如byte[] bytes = s.getBytes();
b.toCharArray():无参, 将字符串转化为字符数组,转化后为字符数组类型。如char[] chars = s.toCharArray();
c.toLowerCase():无参,转换字符串中字符为小写
d.toUpperCase():无参,转换字符串中字符为大写
e. s1.concat(s2): 拼接两个字符串
f.String.valueOf(参数:字符数组):将字符数组转成String类型的数据
(5)String类型对象可调用的其他(替换、分割、比较)方法
a.replace(参1:“待替换s1”,参2:“替换s2”):将指定的字符串或者字符s1替换为s2
b.replaceAll(参1:正则表达式,参2:“替换s2”): 使用正则表达式替换指定类型的字符,符合表达 式的字符均替换为s2
正则表达式 : 指定的匹配字符串中字符的规则
所有的小写字母 [a-z]
所有的英文字符 [a-zA-Z]
所有的数字 [0-9]
所有的中文 [\u4e00-\u9fa5]
c.split(参:"分割标志字符"):如String s4 = "a123a12a14a13a24"; String[] as = s4.split("a"); 以a 为分割符号,分割这个字符串
4.StringBuffer类
a.StringBuffer是一个线程安全的可变字符串。String是一个不可变的字符序列(对象只能赋值一次),StringBuffer是一个可变的字符序列
b.StringBuffer创造对象方法:无参构造、有参构造(参数类型:int类型、String类型)
无参构造:StringBuffer sb = new StringBuffer(); 无参构造方法中创建的底层数组的长度是 16
int类型有参构造:StringBuffer sb = new StringBuffer(10); 底层创建了一个长度是指定长度10的 char类型数组
String类型有参构造:StringBuffer sb = new StringBuffer(“nihao”); 底层创建了长度是 参数字符串 的长度 + 16的字符数组
c.StringBuffer的扩容
一旦底层的字符数组不够使用, 进行扩容操作,扩容的基本原理: 当前容量 * 2 + 2
如果扩容之后还不够,则直接使用当前需要的最小的容量作为新的容量
d.StringBuffer的常用方法
(1)append(参:任意类型字符数据):在尾部添加数据,能将其他的数据类型转成StringBuffer这 个类型
(2)insert(参1:下标位置,参2:“字符数据”):在下标位置前插入指定字符数据
(3)deleteCharAt(参:指定位置下标):删除指定位置的字符
(4)delete(参1:开始下标,参2:结束下标):删除指定的部分字符,第一个参数是开始的位 置,第二个参数是结束的位置(不包含)
(5)replace(参1:开始下标,参2:结束下标,参3:替换字符):替换指定的部分,第二个参数 是结束的位置(不包含)
(6)reverse:反转整个可变字符串
(7)substring(参数:开始的下标):获取从当前字符串中开始, 直到结尾的字符,这个方法不再 返回StringBuffer对象,而是返回String对象
(8)substring(参数1:开始的下标, 参数2:结束的下标):从开始的下标到结束的下标中的字符串 , 获取出来,不包含结束的下标对应的字符
5.StringBuffer和String类型数据如何相互转化
a.String---->StringBuffer方法
(1)通过StringBuffer的有参构造方法
String s = "字符串";
StringBuffer bs = new StringBuffer(s);
(2)通过添加的方法
bs.append(s);
(3)插入法讲数据放在尾部
bs.insert(bs.length(),s);
b.StringBuffer---->String转化
(1)toString
String s = sb.toString();
(2)通过构造方法
String string = new String(sb);
(3)通过截取的方法
String s =sb.substring(0);