String
1.1 概述
String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作字符串。
String类型的特点:String常被称为不可变字符串类型,它的对象在创建后不能被更改。
String变量每次的修改其实都是产生并指向了新的字符串对象;原来的字符串对象都是没有改变的,所以称为不可变字符串。
1.2 创建字符串对象
① 直接使用 " " 定义(推荐使用)
String str = "字符串内容";
② 使用String类的构造器去创建对象
构造器 | 说明 |
public String() | 创建一个空白字符串对象,不含有任何内容 |
public String(String str) | 根据传入的字符串内容来创建一个字符串对象 |
public String(char [] chs) | 根据字符数组的内容来创建字符串对象 |
public String(byte [] chs) | 根据字节数组的内容来创建字符串对象 |
package com.spark.study.test;
/**
* Test1 class
* description: 字符串创建的两种方式
*
* @author Administrator
* @date 2022/12/25
*/
public class Test1 {
public static void main(String[] args) {
// 1.直接使用""
String str = "Hello, world";
System.out.println(str);
// 2.使用String类的构造器
String str1 = new String();
System.out.println(str1);
String str2 = new String("哈哈");
System.out.println(str2);
char [] chars = {'a', 'b', 'c', 'd', 'e'};
String str3 = new String(chars);
System.out.println(str3);
byte[] bytes = {97,98,99,65,66,67};
String str4 = new String(bytes);
System.out.println(str4);
}
}
两种创建对象方式的区别:
- 以 " " 方式创建的字符串对象,在堆内存中的字符串常量池中存储,并且相同内容只会存储一份
- 以构造器创建的字符串对象,每次使用new关键字都会产生一个对象,放在堆内存中
1.3 常用方法
方法名 | 说明 |
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) | 根据传入的规则切割字符串,得到字符串数组返回 |
1.3.1 比较内容
当需要只比较字符串内容,不需要比较地址时,可以通过equals方法进行比较
① equals(Object object) 将字符串与指定对象进行比较,只关心字符串内容是否一致
② equalsIgnoreCase(String str) 将字符串与指定字符串进行比较,忽略大小写比较字符串。只关心字符串内容是否一致
package com.spark.study.test;
import java.util.Scanner;
/**
* Test2 class
* description: 常用方法之内容比较
*
* @author Administrator
* @date 2022/12/25
*/
public class Test2 {
public static void main(String[] args) {
// 模拟登录
String okusername = "admin";
String okpassword = "123456";
String yzkey = "2AOd";
// 登录
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.next();
System.out.println("请输入密码:");
String password = scanner.next();
System.out.println("请输入验证码:");
String key = scanner.next();
if(okusername.equals(username) && okpassword.equals(password) && yzkey.equalsIgnoreCase(key)){
System.out.println("登录成功!");
}else{
System.out.println("登录失败!");
}
}
}
1.3.2 字符串长度
通过length()方法返回该字符串的长度
String str = "我爱你中国";
System.out.println(str.length()); // 5
1.3.3 返回索引处字符串
charAt(索引位置) 可以返回字符串在该索引处的字符
String str = "我爱你中国";
System.out.println(str.charAt(1)); // 爱
1.3.4 转化为字符数组
toCharArray()将字符串转换为字符数组
String str = "我爱你中国";
char [] chars = str.toCharArray();
1.3.5 截取字符串
根据索引位置截取字符串
- substring(开始索引,结束索引) 从开始索引处截取到结束索引位置,但是不包含结束索引处的字符
- substring(开始索引) 从开始索引处截取到字符串结束
String str = "我爱你中国";
String str1 = str.substring(3); // 中国
String str2 = str.substring(0,3); // 我爱你
1.3.6 替换字符串
将字符串中的指定内容替换为新内容
- replace(指定内容,新内容):将指定内容替换为新内容
- replaceFirst(指定内容,新内容):将第一次匹配到的指定内容替换为新内容
String str = "我爱你中国,中国是我的故乡";
String str1 = str.replace("中国","河南"); // 我爱你河南,河南是我的故乡
String str2 = str.replaceFirst("中国","河南"); // 我爱你河南,中国是我的故乡
ArrayList
2.1 概述
集合是一种容器,与数组类似,用于存储数据。
集合与数组的区别:
- 数组定义后,类型和大小固定
- 集合大小不固定,可以动态变化;数据类型也可以不固定
- 集合适合做元素个数不确定,并且要进行增删改查的业务场景
2.2 快速入门
ArrayList是集合中的一种,支持索引。
ArrayList的使用:
- 通过构造器创建ArrayList对象
- 使用add()方法添加元素
package com.spark.study;
import java.util.ArrayList;
/**
* Test1 class
* description: ArrayList快速入门
*
* @author Administrator
* @date 2022/12/25
*/
public class Test1 {
public static void main(String[] args) {
// 1.使用构造器创建集合
ArrayList list = new ArrayList();
// 2.使用add方法添加元素
list.add("hello world");
list.add(123);
list.add(123.123);
list.add('中');
list.add(true);
// 3.使用add在指定索引位置添加元素
list.add(1,"haha");
System.out.println(list);
}
}
2.3 对于泛型的支持
ArrayList<E>:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型
举例:
- ArrayList<Integer>:此集合只能操作整型的元素
- ArrayList<String>:此集合只能操作字符串类型的元素
注意:集合中只能存储引用数据类型,不支持基本数据类型
package com.spark.study;
import java.util.ArrayList;
/**
* Test2 class
* description: 泛型约束集合存储的数据类型
*
* @author Administrator
* @date 2022/12/25
*/
public class Test2 {
public static void main(String[] args) {
// 只能存储字符串类型
ArrayList<String> list = new ArrayList<>();
list.add("hello");
list.add("world");
System.out.println(list);
// 只能存储整数类型
ArrayList<Integer> list2 = new ArrayList<>();
list2.add(123);
list2.add(456);
System.out.println(list2);
// 存储任意类型
ArrayList<Object> list3 = new ArrayList<>();
list3.add("hello");
list3.add(123);
list3.add(false);
System.out.println(list3);
}
}
2.4 常用API
方法 | 说明 |
---|---|
get(int index) | 返回指定索引位置的元素 |
size() | 返回集合中元素的个数 |
remove(int index) | 删除指定位置的元素,并返回被删除的元素 |
remove(Object object) | 删除指定的元素,返回删除是否成功 |
removeAll(Collection<?> c) | 从此列表中删除指定集合中包含的所有元素 |
clear() | 从列表中删除所有元素 |
clone() | 克隆列表 |
contains(Object object) | 如果此列表中包含指定元素,则返回true |