API 应用程序编程接口,提高编程效率。本次学习了Object类,Objects工具类,包装类,StringBuilder,StringBuffer,和StringJoiner。
目录
1.Object
常见方法:
2.Objects
常见方法:
3.包装类
介绍:
包装类的相关操作:
4.StringBuilder
介绍:
使用好处:
StringBuffer*
案例
5.StringJoiner
介绍:
常用方法 :
1.Object
Object类是java中所有类的祖宗类,因此所有类都可以直接使用Object类中的一些方法
常见方法:
方法名 | 说明 |
public String toString() | 返回对象的字符串表达形式 |
public boolean equals(Object o) | 判断两个对象是否相等 |
protected Object clone() | 对象克隆 |
package d10_api_Object;import java.util.Objects;public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}//重写equals方法,比好两个对象的内容一样就返回true//比较者:s2 == this//被比较者:s1 == o@Overridepublic boolean equals(Object o) {//1.判断两个对象的地址是否一样 一样直接返回trueif (this == o) return true;//2.判断o是否为null直接返回false 比较的二者类型不相同,返回falseif (o == null || getClass() != o.getClass()) return false;//3.o不是空 且一定是学生类型的对象,开始比较内容了Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overrideprotected Object clone() throws CloneNotSupportedException {//super 去调用父类的Object的clone方法//使用时类要加一个Cloneable的接口 这是一个标记接口//会有报错提醒 需要去抛开return super.clone();}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}package d10_api_Object;public class Text {public static void main(String[] args) {//目标:学习认识API ObjectStudent s1 = new Student("陈平安",19);System.out.println(s1.toString());System.out.println(s1); //s1 默认是调用toString方法//toString默认是显示地址,实际用处不大,常重写为显示内容Student s2 = new Student("陈平安",19);System.out.println(s2.equals(s1));//equals默认是比较两个元素的地址System.out.println(s2 == s1); //一样可以进行地址的比较// 所以还是会需要子类去重写这个方法 去比较内容//克隆//浅克隆 :拷贝出的新对象与原数据中的一模一样(引用类型拷贝的只是地址)//深克隆:对象中的基本数据类型直接拷贝// 字符串数据拷贝的还是地址// 还包含的其他对象,不会拷贝地址,会创建新对象}
}
2.Objects
Objects是一个工具类,提供了很多操作对象的静态方法给我们使用
常见方法:
方法名 | 说明 |
public static boolean equals(Object a,Object b) | 先做非空判断,再比较两个对象 |
public static boolean isNull(Object obj) | 判断对象是否为null,为null返回true,反之 |
public static boolean nonNull(Object obj) | 判断对象是否不为null,不为null则返回 true,反之 |
package d10_api_Object;import java.util.Objects;public class Text2 {public static void main(String[] args) {//目标:掌握Objects类提供的常用方法String s1 = null;String s2 = "楠楠";//System.out.println(s1.equals(s2));//自身是空 有安全问题 会报错System.out.println(Objects.equals(s1, s2));//更加安全System.out.println(Objects.isNull(s1)); //tureSystem.out.println(s1 == null); //原理是一致的System.out.println(Objects.isNull(s2));System.out.println(Objects.nonNull(s1));System.out.println(Objects.nonNull(s2));}
}
3.包装类
包装类就是把基本类型的数据包装成对象
介绍:
基本数据类型 | 对应的包装类(引用数据类型) |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Float |
boolean | Boolean |
包装类的相关操作:
1. 包装类的创建 自动装箱 自动拆箱
package d10_api_Object;import java.util.ArrayList;public class Text3 {public static void main(String[] args) {//目标:掌握包装类的使用//Integer a = new Integer(12);//已过时Integer a = Integer.valueOf(12);System.out.println(a);//自动装箱:可以自动把基本类型的数据转换为对象Integer a3 = 12;//自动拆箱:可以自动把包装数据类型的对象转换为对应的基本数据int a4 = a3;System.out.println(a4); //12//泛型和集合不支持基本数据类型 只能支持引用数据类型//ArrayList<int> list = new ArrayList<int>(); 报错ArrayList<Integer> list = new ArrayList<>();list.add(12);list.add(13); //自动装箱int rs = list.get(1); //自动拆箱} }
2.其他相关操作
//1.把基本类型的字符串转化为字符串Integer a5 = 23;String s1 = Integer.toString(a5);System.out.println((s1 + 1));//也可以这样String s2 = a5 + "";System.out.println((s2 + 1));//2.把字符串类型的 数值 转化成对应的基本类型String ageStr = "29";//int age = Integer.parseInt(ageStr); //29//直接使用 valueOf 转化int age = Integer.valueOf(ageStr); //29System.out.println((age + 1)); //30String score = "99.5";double sco = Double.parseDouble(score);System.out.println(sco+0.5); //100
4.StringBuilder
可变字符串对象,相当于一个容器,里面装的字符串可以改变,用来操作字符串的
介绍:
构造器 | 说明 |
public StringBuilder() | 创建一个空白的可变的字符串对象,不包含任何内容 |
public StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
方法名称 | 说明 |
public StringBuilder append(任意类型) | 添加数据并返回StringBuilder对象本身 |
public StringBuilder reverse() | 将对象的内容反转 |
public int length() | 返回对象内容长度 |
public String toString() | 通过toString()就可以实现把String转换为String |
package d10_api_Object;public class Text4 {public static void main(String[] args) {//目标:搞清楚StringBuilder的用法和作用//StringBuilder s= new StringBuilder(); //s ""StringBuilder s= new StringBuilder("楠楠");//1.拼接内容s.append("K");s.append(12);System.out.println(s);////支持链式编程s.append(666).append(777).append(888);System.out.println(s);//2.反转内容s.reverse();System.out.println(s);//3.返回字符串长度System.out.println(s.length());//4.把StringBuilder类型转化为String类型String rs = s.toString();System.out.println(rs);}
}
使用好处:
相比于String的好处:更适合做字符串频繁的修改,拼接。效率会更高,代码更简洁。
package d10_api_Object;public class Text5 {public static void main(String[] args) {//目标:掌握StringBuilder 的使用好处//需求:要拼接100万次abc//先用 String 测试性能/* String rs = "";for (int i = 0; i < 1000000; i++) {rs = rs + "abc";}System.out.println(rs);*///测试性能很差StringBuilder sb = new StringBuilder();for (int i = 0; i < 100000; i++) {sb.append("abc");}System.out.println(sb);//执行效率快}
}
StringBuffer*
- StringBuffer的用法和StringBuider是一模一样的
- 但是StringBuilder是线程不安全的,而StringBuffer是线程安全的
案例
需求:设计一个方法,用于返回任意整型数组的内容,要求返回的数组内容格式如[11,22,33]
package d10_api_Object;public class Text6 {public static void main(String[] args) {//目标:完成遍历数组内容,并拼接或指定格式的案例int [] a = {11,22,33};String s = getArrayData(a);System.out.println(s);}public static String getArrayData(int [] arr){//判空if(arr == null){return null;}//数据存在StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if(i == arr.length-1){sb.append(arr[i]);}else{sb.append(arr[i]).append(",");}}sb.append("]");return sb.toString();}
}
5.StringJoiner
介绍:
(JDK8 后才有)
和StringBuilder一样,也是用来操作字符串,也可以看做一个容器,内容是可变的。
好处:可以提高效率,而且更加简洁。
常用方法 :
构造器 | 说明 |
public StringJoiner (间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
public StringJoiner (间隔符号,开始符号,结束符号 ) | 创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号 |
方法名称 | 说明 |
public StringJoiner add(添加内容) | 添加数据,并返回对象本身 |
public int length() | 返回长度(字符出现的个数) |
public String toString | 返回一个字符串(该字符串就是拼接之后的结果) |
package d10_api_Object;import java.util.StringJoiner;public class Text7 {public static void main(String[] args) {//目标:掌握StringJoiner的使用StringJoiner s = new StringJoiner(" ");s.add("楠楠");s.add("等你");System.out.println(s);StringJoiner s1 = new StringJoiner(" ","[","]");s1.add("会的");s1.add("是嘛");System.out.println(s1);}
}
学习时间:2024.8.5