API:应用程序编程接口
就是java帮我们已经写好了一些程序,如:类、方法等,直接拿过来解决一些问题。
1.Object
它常用的方法:
toString() : 返回对象的字符串形式;存在意义,让子类重写,以便返回子类对象的内容。
equals() : 默认比较两个对象的地址是否相等;存在意义,让子类重写,以便用于比较对象的内容是否相同。
clone() : 当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回;浅克隆,对象内容和地址完全一致;深克隆,对象内容一致,当涉及数组时,地址则不同。
2.Objects
它是一个工具类,方法调用者可以为null,而直接equals()要求调用者不能为空,否则NullPointerException
它常用的方法:
package api_use;
import java.util.Objects;
public class Test1_Objects {
public static void main(String[] args) {
// 目标:掌握Objects类提供的常用方法
String s1 = null;
String s2 = "itheima";
// System.out.println(s1.equals(s2));// NullPointerException
System.out.println(Objects.equals(s1,s2)); //更安全
System.out.println(Objects.isNull(s1)); // true
System.out.println(s1 == null); // true
System.out.println(Objects.isNull(s2)); // false
System.out.println(Objects.nonNull(s2)); // true
System.out.println(Objects.nonNull(s1)); // false
}
}
3.包装类
包装类是把基本数据类型的数据包装成对象。
基本数据类型 | 对应的包装类(引用数据类型) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
包装类的常用方法:
package api_use;
import java.util.ArrayList;
public class Test1_Integer {
public static void main(String[] args) {
// 目标 :掌握包装类的使用
Integer a2 = Integer.valueOf(12);
System.out.println(a2);
// 自动装箱 :可以把基本数据类型转化成对象
Integer a3 = 12;
// 自动拆箱 :可以把自动包装类型的对象转换成对应的基本数据类型
int a4 = a3;
// 泛型和集合不支持基本数据类型,只能支持引用数据类型
ArrayList<Integer> list = new ArrayList<>();
list.add(12);
list.add(13);// 自动装箱
Integer rs = list.get(1);// 自动拆箱
System.out.println("------------------");
//1.把基本类型的数据转换成字符串
Integer a = 23;
String rs1 = Integer.toString(23);//"23"
System.out.println(rs1 + 1);// 231
String rs2 = a.toString();
System.out.println(rs2 + 1); // 231
String rs3 = a + "";
System.out.println(rs3 + 1);
// 2. 把字符串类型的数值转换成对应的基本类型
String ageStr = "29";
int ageI = Integer.valueOf(ageStr);
System.out.println(ageI + 1);// 30
String scoreStr = "99.5";
double score = Double.valueOf(scoreStr);// 99.5
System.out.println(score + 0.5);
}
}
4.StringBuilder、StringBuffer
StringBuilder 代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处:StringBuilder 比String 更适合字符串的修改操作、效率更高,更简洁;对于字符串的频繁拼接、修改,建议使用StringBuilder,效率更高(相较于String)。
StringBuffer 的用法与 StringBuilder 是一模一样的;
但 StringBuilder 是线程不安全的; StringBuffer 是线程安全的。
它的常用方法:
package api_use;
public class Test2_StringBuilder {
public static void main(String[] args) {
// StringBuilder 代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的
/*
* 好处:StringBuilder 比String 更适合字符串的修改操作、效率更高,更简洁
* 对于字符串的频繁拼接、修改,建议使用StringBuilder,效率更高(相较于String)
*
* StringBuffer 的用法与 StringBuilder 是一模一样的;
* 但 StringBuilder 是线程不安全的; StringBuffer 是线程安全的*/
// 目标:搞清楚 StringBuilder 的用法和作用
StringBuilder s = new StringBuilder("itheima");// s "itheima"
// 1、拼接内容
s.append(12);
s.append("黑马");
s.append(true);
// 支持链式编程
s.append(666).append("黑马2").append(666);
System.out.println(s);
// 2、反转操作
s.reverse();
System.out.println(s);
// 3、返回字符串的长度
System.out.println(s.length());
// 4、把 StringBuilder 对象又转换成String 类型
String s1 = s.toString();
System.out.println(s1);
}
}
5.StringJoiner
JDK8开始有的,跟StringBuilder 一样,容器,创建后内容是可变的;
好处:不仅能提高字符串的操作效率,并且在有些场景下使用它效率更高,代码更简洁。
它的常用方法:
package api_use;
import java.util.StringJoiner;
public class Test3_StringJoiner {
public static void main(String[] args) {
/*
* JDK8开始有的,跟StringBuilder 一样,容器,创建后内容是可变的
* 好处:不仅能提高字符串的操作效率,并且在有些场景下使用它效率更高,代码更简洁*/
StringJoiner s = new StringJoiner(",","[","]");
s.add("java1");
s.add("java2");
s.add("java3");
System.out.println(s);//[java1,java2,java3]
System.out.println(getArrayData(new int[]{11,22,33}));
}
public static String getArrayData(int[] arr){
// 1、判断arr是否为null
if (arr == null){
return null;
}
// 2、arr数组对象存在,arr = [11,22,33]
StringJoiner s = new StringJoiner(",","[","]");
for (int i = 0; i < arr.length; i++) {
s.add(arr[i] + "");
}
return s.toString();
}
}
标签:String,StringBuilder,Object,System,字符串,Objects,println,out
From: https://blog.csdn.net/qq_45173172/article/details/142647529