字符串和ArrayList集合的简单介绍
字符串
- 什么是字符串?
字符串是双引号包裹起来的字面量,如"java"、"我爱中国"、"123"等等
字符串的特点
- 只要用双引号(“”)括起来的字面量就是字符串对象
- 字符串是不可变的
- 字符串可以被共享
字符串的构造方法
形式 | 构造方法 |
---|---|
无参 | String() |
字节数组 | String(byte[] bytes) |
字符数组 | char[] chars |
字符串 | String str |
public class Test {
public static void main(String[] args) {
// 无参
String a = new String();
// 字节数组
byte bt[] = {1,2,3};
String b = new String(bt);
// 字符数组
char ch[] = {'我','爱','中','国'};
String c = new String(ch);
// 字符串
String d = new String("java");
}
}
字符串的成员方法
- 遍历相关方法
(1) int length()
获取字符串长度
public class Test {
public static void main(String[] args) {
String a = "我爱中国";
System.out.println(a.length());
// 输出结果为 4
}
}
(2) char charAt(int index)
获取指定索引处的字符
public class Test {
public static void main(String[] args) {
String a = "我爱中国";
char ch = a.charAt(1);
System.out.println(ch);
// 输出结果为 '爱'
}
}
(3) char[] toCharArray()
把字符串转换为字符数组
public class Test {
public static void main(String[] args) {
String a = "我爱中国";
char[] chars = a.toCharArray();
System.out.println(chars);
// 输出结果为 我爱中国
}
}
- 比较内容相关方法
(1) boolean equals(Object obj)
比较两个字符串内容是否相等,严格区分大小写
public class Test {
public static void main(String[] args) {
String a = "java";
String b = "JAVA";
System.out.println(a.equals(b));
// 输出结果为 false
}
}
(2)boolean equalsgnoreCase(String str)
在忽略大小写的情况下比较两个字符串内容是否相等
public class Test {
public static void main(String[] args) {
String a = "java";
String b = "JAVA";
System.out.println(a.equalsIgnoreCase(b));
// 输出结果为 true
}
}
- 字符串截取的相关方法
(1) String substring(int beginIndex, int endIndex)
从beginIndex开始,截取到endIndex-1的位置,俗称包头不包尾
public class Test {
public static void main(String[] args) {
String str = "为中华崛起而读书";
String s = str.substring(1, 3);
System.out.println(s);
// 输出结果为 "中华"
}
}
(2) String substring(int beginIndex)
从beginIndex往后截取所有的内容
public class Test {
public static void main(String[] args) {
String str = "为中华崛起而读书";
String s = str.substring(3);
System.out.println(s);
// 输出结果为 "崛起而读书"
}
}
- 其它方法
(1) String replace(String oldStr, newStr)
字符串的替换
public class Test {
public static void main(String[] args) {
String str = "我很喜欢读书,因为读书是一件美好的事情";
String replace = str.replace("读书", "java");
System.out.println(replace);
// 输出结果为 "我很喜欢java,因为java是一件美好的事情"
}
}
(2) boolean contains(String str)
判断字符串中是否包含指定内容
public class Test {
public static void main(String[] args) {
String str = "我爱java,java爱我";
System.out.println(str.contains("java"));
// 输出结果为 true
}
}
(3) boolean startWith(String str)
判断是否以指定的内容开头
public class Test {
public static void main(String[] args) {
String str = "原神,启动!!";
System.out.println(str.startsWith("原神"));
// 输出结果为 true
}
}
(4) String[] split(String str)
把字符串按照指定格式分割成n个字符串,并保存到一个字符串数组中
public class Test {
public static void main(String[] args) {
String str = "原神,启动";
String[] split = str.split(",");
System.out.println(Arrays.toString(split));
// 输出结果为 [原神,启动]
}
}
字符串注意事项
- 变量和字符串拼接会创建一个新的字符串变量,存在与堆内存
- 字符串之间的拼接仍然会创建一个新的字符串对象,但却存在于字符串常量池中
- 字符串拼接的懒惰性。如下按照代码的执行顺序,变量a已经创建了字符串"abc"并存在常量池中,但变量b用三个字母拼接了字符串,因为字符串拼接的懒惰性,三个字母拼接其实Java也会拼接成"abc",但由于变量a已经创建了一次字符串对象"abc",所以第二次拼接的时候并不会创建新的对象,而是使用常量池中的"abc"对象
public class Test {
public static void main(String[] args) {
String a = "abc";
String b = "a" + "b" + "c";
System.out.println(a == b);
// 两个变量比较的结果为 true
}
}
ArrayList的简单介绍
- ArrayList是属于集合中的一部分,它也是一个存储数据的容器,可以用来存储多个数据类型一致的数据
- ArrayList集合相对于数组的长度固定不变,集合的长度是可变的,相对数组来说更加的灵活
- 集合中只能存储引用类型的数据
- 集合删除元素时,需要注意元素移动的问题
-
下面介绍ArrayList集合的遍历和常用的方法
-
添加一个元素
(1) add(E e)
直接在集合中的末尾增加一个元素
(2) add(int index, E e)
在指定索引的位置增加一个元素
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("JavaScript");
System.out.println(list);// [java, JavaScript]
list.add(1,"Python");
System.out.println(list);// [java, Python, JavaScript]
}
}
- 删除一个元素
(1)remove(Object obj)
直接删除指定的的元素,如果有多个相同的元素,只会删除第一个
(2) remove(int index)
删除指定索引处的元素
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("JavaScript");
list.add("java");
list.add("PHP");
list.remove("java");
System.out.println(list);// [JavaScript, java, PHP]
list.remove(2);
System.out.println(list);// [JavaScript, java]
}
}
- 修改一个元素
(1)set(int index, E e)
修改指定索引处的元素为e
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("JavaScript");
list.add("java");
list.add("PHP");
list.set(1,"Axios");
System.out.println(list);// [java, Axios, java, PHP]
}
}
- 获得一个元素
(1)E get(int index)
获取指定索引处的元素
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("JavaScript");
list.add("java");
list.add("PHP");
String s = list.get(1);
System.out.println(s); // JavaScript
}
}
- 获取集合长度和遍历这个集合
(1)int size()
获取集合长度
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
list.add("JavaScript");
list.add("java");
list.add("PHP");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// java JavaScript java PHP
}
}