【Java-Day14】API篇-字符串
目录
一.使用api帮助文档
二.API-字符串String
三.字符串中的常见成员方法
3.1 比较
3.1.1 == 比较基本数据类型
3.1.2 == 比较引用数据类型
3.1.3 比较字符串(equals)
3.2 获取单个字符 charAt
3.3 截取substring
3.4 替换 replace
3.5 是否包含 contains
3.6 判断开头、结尾 startswith/endswith
3.7 查找 indexOf(int ch) lastIndexOf(int ch)
3.8 判断是否为空 isEmpty()
3.9 转字符数组 toCharArray()
3.10 大小写转换 toUpperCase()、toLowerCase()
3.11 去除头尾空格 trim()
3.12 按照格式切割字符串 split()
四.StringBuilder 频繁拼接字符串
StringBuilder的构造方法:
StringBuilder的常见成员方法:
五.String 和 StringBuilder 的区别
一.使用api帮助文档
步骤:
- 打开API帮助文档
- 点击显示,并找到索引下面的输入
- 在输入框中输入类名并点击显示
- 查看类所在的包
- 查看类的描述
- 查看构造方法
- 查看成员方法
使用别的包里的类需要导包。
举个例子(获取一个随机小数)
//导包:定位Random类的位置 import java.util.Random; public class Test { public static void main(String[] args) { //1.创建Random对象 Random r = new Random(); //2.调用方法获取一个随机小数(0.0-1.0) double v = r.nextDouble(); System.out.println(v); } }在以下情况下不需要导包:
- 使用本包中的类不用导包
- 使用java.lang包里的类不用导包
二.API-字符串String
1.String是Java定义好的一个类。定义在java.lang包中,使用的时候不需要导包。
2.Java程序中的所有字符串文字(例如"abc")都是此类的对象
3.字符串不可变,它们的值在创建后不能被更改
创建字符串对象的方式:
第一种:直接赋值
String s1 = "abc";第二种:new关键字 + 构造方法的方式创建字符串对象
public static void main(String[] args) { //1.new + 空参构造 String s1 = new String(); System.out.println(s1);//输出空 //2.new + 有参构造 //根据传进来的字符串内容,创建一个新的字符串对象 String s2 = new String("hello"); System.out.println(s2);//输出hello //3.new + 有参构造(字符数组 char []) char[] c = {'a','b','c'}; String s3 = new String(c);//创建一个新的字符串对象 System.out.println(s3);//输出abc //4.new + 有参构造(字节数组byte []) //根据ASCII码创建字符串对象 byte[] b = {97,98,99}; String s4 = new String(b); System.out.println(s4);//输出abc }public String() 空白字符串,不含任何内容
public String(String original) 根据传入的字符串,创建新的字符串对象
public String(char[] chs) 根据字符数组,创建字符串对象
public String(byte[] chs) 根据字节数组,创建字符串对象
获取字符串对象的两种方式的区别:
- 直接赋值:代码简单+串池复用节约内存(串池在堆里)
- new:每次都会创建一个新的字符串对象,不复用,开辟新的内存地址
三.字符串中的常见成员方法
3.1 比较
==比较地址,equals比较内容
3.1.1 == 比较基本数据类型
基本数据类型比较的是数据值
int a = 10; int b = 20; System.out.println(a == b); //false3.1.2 == 比较引用数据类型
引用数据类型比较的是地址值
String s1 = new String("abc"); String s2 =new String("abc"); System.out.println(s1 == s2);//false3.1.3 比较字符串(equals)
- booleanequals方法(要比较的字符串)完全一样结果才是true,否则为false(比较用户名密码)
- booleanequalsIgnoreCase(要比较的字符串)忽略大小写的比较(比较验证码)
String s1 = "zhangsan"; String s2 = "Zhangsan"; boolean equals1 = s1.equals(s2); boolean equals2 = s1.equalsIgnoreCase(s2); System.out.println(equals1);//false System.out.println(equals2);//truestring的底层实现还是数组,s1,s2本质存的就是内存地址,比较就是比较s1 s2里的内容。
比较的也是内存地址。内存地址不同就不同。
不过s1.equals(s2)可以实现只比较字符是否相同
3.2 获取单个字符 charAt
遍历字符串
- public charcharAt(int index):根据索引返回字符
- public intlength():返回此字符串的长度
- 数组的长度:数组名.length
- 字符串的长度:字符串对象.length()
// 1. charAt String str="你好你好123"; char c = str.charAt(5); System.out.println(c);//2 // 2.length int len = str.length(); System.out.println(len);//7遍历字符串:
Scanner sc = new Scanner(System.in); String str=sc.next(); //字符串遍历中循环的快速生成方式:str.length().fori for(int i=0;i<str.length();i++){ System.out.print(str.charAt(i)); }3.3 截取substring
数据脱敏
Stringsubstring(int beginIndex, int endindex)截取
- 注意点:包头不包尾,包左不包右
- 只有返回值才是截取的小串
String substring(int beginIndex) 截取到末尾
3.4 替换 replace
敏感词屏蔽
Stringreplace(旧值,新值) 替换
- 注意点:只有返回值才是替换之后的结果
3.5 是否包含 contains
boolean b = str.contains("abc");3.6 判断开头、结尾 startswith/endswith
参数有一个参数和两个参数
两个参数就是以第二个参数为索引开始。判断开头
boolean b2 = str.startsWith("abc");3.7 查找 indexOf(int ch) lastIndexOf(int ch)
查找当前字符串第一次/最后一次出现的索引
int i1 = str.indexOf(97);3.8 判断是否为空 isEmpty()
boolean empty = str.isEmpty();3.9 转字符数组 toCharArray()
"abcdaefg" ->['a','b','c','d','a','e','f','g']
char[ ] array = str.toCharArray();3.10 大小写转换 toUpperCase()、toLowerCase()
String upper = str.toUpperCase();3.11 去除头尾空格 trim()
String trim = str3.trim();3.12 按照格式切割字符串 split()
String[] arr = s.split(",");四.StringBuilder 频繁拼接字符串
StringBuilder 是一个类,先创建 StringBuilder 类的对象,然后通过对象调用它的方法。
StringBuilder sb = new StringBuilder();StringBuilder的构造方法:
- public StringBuilder() 空参构造
- public StringBuilder(String str) 带参构造
StringBuilder的常见成员方法:
- append(任意类型) 添加数据
- reverse() 反转内容
- int length() 获取长度
- toString 转回字符串
五.String 和 StringBuilder 的区别
String 字符内容不能改,StringBuilder 内容可以改。
String:字符串,内容不可变,适合保存普通文本。
StringBuilder:可变字符串容器,适合频繁拼接、反转、修改。
