API概念
API:应用程序接口;是别人已经写好的一些程序,可以直接拿来调用,解决问题。
常用API
Object类
作用
所有类都是Object类的子类,所有类的对象都可以使用Object类的方法。
Object类常见方法
1.toString()
一般子类中都会重写toString方法:
1.直接在Generate中选择toString();
2.在子类中输入toS+回车。
2.equals()
直接调用equals()时是比较两个变量的地址;一般都会在子类中对equals()重写,比较两个对象的内容,一样返回true。
进行比较时:
1.首先比较对象地址;
2.接着比较两个比较者的数据类型;
3.比较对象的内容;
3.protected Obeject clone()(对象克隆)
Object类的clone()有protected权限修饰符,在子类中不能直接调用,需要进行方法重写。
浅克隆
克隆出的对象与原对象的所有数据的地址相同。
深克隆
标记接口
implements Cloneable
实现标记接口后子类才能进行克隆方法,但在方法内部可能会有问题,java会报错来提醒我们,此时可以通过Alt+回车将错误抛出去。
Objects工具类
Objects是工具类,提供了很多操作对象的静态方法。
Objects类常见方法
假设 String s1 = null;
String s2 = “java”;
1.equals()
s1.equals(s2)VSObjects.equals(s1,s2)的区别
当两个对象中出现其中一个对象内容为null时,再进行比较时就会出现空指针异常;而调用Objects类的equals方法比较时则不会出现空指针异常的情况。
2.isNull()
图示两种方式无区别
3.nonNull()
包装类
概念
包装类就是将基本类型的数据包装成对象。
其中要注意:包装成Integer时不要使用已经过时的方案!
自动装箱
概念
自己可以把基本类型的数据换成对象。
Integer a = Integer.valueof(12);
自动拆箱
概念
可以自动把包装类型的对象换成对应的基本数据类型。
好处
集合中只能存对象;
泛型和集合不支持基本数据类型,只能支持引用数据类型;
当一定要在集合中添加基本类型数据,就要使用包装类。
其他常见操作
1.将基本数据类型的数据转换成字符串![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9623fa58b8e05e2f7c8b0ac814e53e50.png)
三种将基本数据类型的数据转换成字符串的方法:
(1)
(2)
(3)
2.可以把字符串类型的数值转换成数值本身对应的数据类型
注意:只能转换“20”类型的数值,不能是“20a”类型的数值。
注释起来的不推荐
StringBuilder类
概念
StringBuilder代表可变字符对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
常用方法
假设:StringBulider s = new StringBulider();
1.append()——拼接内容
2.reverse()——反转内容
反转前:找好朋友玩
反转后:玩友朋好找
3.length()——返回对象内容长度
4.toString()——把StringBuilder对象又转换成String对象
重要特点——支持链式编程
正常情况下:
链式编程:
好处(相较于String)
StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
假设:拼接一百万次“abc”
使用String时:效率非常低;
public class test {
//拼接一百万次“abc”
public static void main(String[] args) {
String s = "";
for (int i = 0; i < 1000000; i++) {
s += "abc";
}
System.out.println(s);
}
}
使用StringBuilder时:运行效率高,直接出结果;
public class test {
//拼接一百万次“abc”
// public static void main(String[] args) {
// String s = "";
// for (int i = 0; i < 1000000; i++) {
// s += "abc";
// }
// System.out.println(s);
// }
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
for (int i = 0; i < 1000000; i++) {
s.append("abc");
}
System.out.println(s);
}
}
那么在处理对字符串相关的操作时,如频繁的修改,拼接等,建议使用SrungBulider,而不使用String,这样开发效率更高。
StringBuffer类
注意:
- StringBuffer和StringBuilder的用法是一模一样的;
- 但是StringBuffer时线程不安全的,StringBuilder是线程安全的。
StringJoiner类
好处
(相较于StringBuilder)更高效,更方便的拼接,代码更简洁。
常用API
假设:StringJoiner s = new StringJoiner();