Java常用API(String、ArrayList)
- API(Application Programming Interface,应用程序编程接口)
- Java写好的技术(功能代码),咱们可以直接调用。
- Oracle也为Java提供的这些功能代码提供了相应的API文档(技术使用说明书)。
1. String
- String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用。
1.1 String概述
- java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
- Java程序中的所有字符串文字(例如 “abc”)都为此类的对象。
- String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。
/**
* 目标:了解String类的特点,String类不可变原理。
*/
public class StringDemo1 {
public static void main(String[] args) {
String name = "张三";
System.out.println(name); // 张三
name += "丰";
System.out.println(name); // 张三丰
}
}
当String类型的值发生改变时,其对象的地址值也发生改变。
1.2 String创建对象的2种方式
- 方式一:直接使用
""
定义。(推荐方式) - 方式二:通过String类的构造器创建对象。
String str = new String();
构造器 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
public String(byte[] chs) | 根据字节数组的内容,来创建字符串对象 |
/**
* 目标:String类创建字符串对象的2种方式
*/
public class StringDemo2 {
public static void main(String[] args) {
// 方式一
String str1 = "Hello World!";
System.out.println(str1); // Hello World!
// 方式二
String str2 = new String();
System.out.println(str2); //
String str3 = new String("Hello World!");
System.out.println(str3); // Hello World!
char[] chars = {'a','b','c'};
String str4 = new String(chars);
System.out.println(str4); // abc
byte[] bytes = {97, 98, 99, 65, 66};
String str5 = new String(bytes);
System.out.println(str5); // abcAB
}
}
- 以 " " 方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
1.3 String类常用API
- 字符串内容比较。
使用普通方法来比较两个字符串会出现问题。
import java.util.Scanner;
public class StringDemo3 {
public static void main(String[] args) {
String name = "abc";
// 输入 abc
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(name == str); // false
}
}
- 推荐使用String类提供的“equals”比较:只关系字符串的内容。
import java.util.Scanner;
public class StringDemo3 {
public static void main(String[] args) {
String name = "abc";
// 输入 abc
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(name.equals(str)); // true
}
}
- String常用API
方法名 | 说明 |
public int length() | 返回此字符串的长度 |
public char charAt(int index) | 获取某个索引位置处的字符 |
public char[] toCharArray() | 将当前字符串转换成字符数组返回 |
public String substring(int beginIndex, int endIndex) | 根据开始和结束索引进行截取,得到新的字符串(包前不包后) |
public String substring(int beginIndex) | 从传入的索引处截取,截取到末尾,得到新的字符串 |
public String replace(CharSequence target, CharSequence replacement) | 使用新值,将字符串中的旧值替换,得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符串数组返回 |
2. ArrayList
- ArrayList代表的是集合类,集合是一种容器,与数组相似,不同的是集合的大小是不固定的。
- 通过创建ArrayList的对象表示得到一个集合容器,同时ArrayList提供了比数组更好用,更丰富的API(功能)给程序员使用。
2.1 集合概述
- 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。
- 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
- 集合提供了许多丰富、好用的功能,而数组的功能很单一。
2.2 ArrayList集合
- ArrayList是集合中的一种,它支持索引。
- ArrayList集合的对象获取。
ArrayList arr = new ArrayList();
- ArrayList集合添加元素的方法:
方法名 | 说明 |
public boolean add(E e) | 将指定的元素追加到此集合的末尾 |
public void add(int index, E element) | 在此集合中的指定位置插入指定的元素 |
/**
* 目标:创建ArrayList对象,代表集合容器,往里面添加元素。
*/
public class ArrayListDemo1 {
public static void main(String[] args) {
// 创建ArrayList集合
ArrayList list = new ArrayList();
// 添加元素
list.add("abc");
list.add("mysql");
list.add("java");
list.add(11);
list.add(true);
System.out.println(list); // [abc, mysql, java, 11, true]
}
}
2.3 ArrayList对于泛型的支持
- 泛型:ArrayList<E>:其中的E就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。
ArrayList<String>:此集合只能操作字符串类型的元素。
ArrayList<Integer>:此集合只能操作整数类型的元素。
- 集合中只能存储引用类型,不支持基本数据类型。
2.4 ArrayList常用API、遍历
- ArrayList常用API:
方法名称 | 说明 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素的个数 |
public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
public E set(int index, E element) | 修改指定索引处的元素,返回被修改的元素 |
- ArrayList的遍历:
import java.util.ArrayList;
/**
* 目标:遍历ArrayList
*/
public class ArrayListDemo2 {
public static void main(String[] args) {
// 创建ArrayList集合
ArrayList<String> list = new ArrayList<>();
// 添加元素
list.add("abc");
list.add("mysql");
list.add("java");
list.add("mongo");
list.add("HTML");
list.add("Spring");
// 遍历 1
for (String s : list) {
// abc mysql java mongo HTML Spring
System.out.print(s + " ");
}
System.out.println(); // 换行
// 遍历 2
list.forEach(str -> {
// abc mysql java mongo HTML Spring
System.out.print(str + " ");
});
}
}