常见方法:
1.遍历字符串:
方式1:通过charAt(int index)方法
方式2:通过字符数组
package com.ztt.Demo01;
public class demo01 {
public static void main(String[] args) {
String s1 = "阴天傍晚车窗外";
//遍历字符串
//方式1:通过charAt()方法
for(int i = 0;i < s1.length();i++) {
char c = s1.charAt(i);
System.out.print(c);
}
System.out.println();
//方式2:通过字符数组
char[] array = s1.toCharArray();//将字符串转换成char[]字符数组
for(int i = 0;i < array.length;i++) {
char c = array[i];
System.out.print(c);
}
}
}
输出结果:
阴天傍晚车窗外
阴天傍晚车窗外
2.字符串的比较
实现方式: String类implements实现了Comparable接口,重写了compareTo()方法‘
package com.ztt.Demo01;
public class demo02 {
//字符串的比较
//实现方式: String类implements实现了Comparable接口,重写了compareTo()方法
public static void main( String[] args) {
String s1 = "abbf";
String s2 = "abf";
System.out.println(s1.compareTo(s2));
}
}
输出结果:
-4
3.字符串的内容等值比较
实现思路:重写object类的equals()方法
package com.ztt.Demo01;
//字符串的内容等值比较
//实现思路:重写object类的equals()方法
public class demo03 {
public static void main( String[ ] args) {
//字符串常量池
String s1 = "just so so" ;
String s2 = "just so so";
System.out.println(s1 == s2);//比较内存地址
System.out.println(s1.equals(s2)); //比较内容
//在堆区重新分配空间
String s3 = new String( "just so so" );
String s4 = new String( "just so so" );
System.out.println(s3 == s4); //比较内存地址
System.out.println(s3.equals(s4));//比较内容
}
}
输出结果:
true
true
false
true
4.字符串的查找搜索
indexOf()方法:从原字符串中查找目标字符串,返回第一次出现的位置
lastIndexOf()方法:从原字符串中查找目标字符串,返回最后一次出现的位置
contains()方法:判断原字符串中是否存在目标字符串
startwWith()方法:判断原字符串是否以目标字符串开头
endsWith()方法:判断原字符串是否以目标字符串结尾
package com.ztt.Demo01;
public class demo04 {
public static void main(String[] args) {
//字符串的查找
String s="可怜无定河边骨";//原字符串
String target="河";//目标字符串
//indexOf()方法
//如果存在:返回该目标字符串的下标(>=0)
//如果不存在:返回-1
int index=s.indexOf(target);
System.out.println(index);
}
}
输出结果:
4
package com.ztt.Demo01;
//字符串的查找搜索
//indexOf()方法:从原字符串中查找目标字符串,返回第一次出现的位置
//lastIndexOf()方法:从原字符串中查找目标字符串,返回最后一次出现的位置
//contains()方法:判断原字符串中是否存在目标字符串
//startwWith()方法:判断原字符串是否以目标字符串开头
//endsWith()方法:判断原字符串是否以目标字符串结尾
public class demo05 {
public static void main(String[] args) {
String s="唧唧复唧唧木兰当户织";
String target="当户织";
boolean isEnd=s.endsWith(target);
System.out.println(isEnd);
boolean isStrats=s.startsWith(target);
System.out.println(isStrats);
//lastIndexOf()方法:
//如果存在,则返回true
//如果不存则,则返回false
boolean isContains = s.contains(target);
System.out.println( isContains );
//lastIndexOf()方法:
//如果存在:返回该目标字符串的下标(>=0)
//如果不存在:返回-1
int index = s.lastIndexOf(target);
System.out.println(index ) ;
// indexOf()方法:
//如果存在:返回该目标字符串的下标(>=0)
//如果不存在:返回-1
int index1 = s.indexOf(target,2);
System.out.println(index1 ) ;
}
}
输出结果:
true
false
true
7
7
5.截取字符串:
字符串是不可变的每次截取,都会产生一个新的字符对象 使用substring() 方法
package com.ztt.Demo01;
public class demo08 {
public static void main(String[] args) {
//字符串是不可变
String s ="我本将心向明月";
//每次截取,都会产生一个新的字符对象
String ret = s.substring(4);
System.out.println(s);
System.out.println(ret);
}
}
输出结果:
我本将心向明月
向明月
5.去除首位“空白字符” 空白字符:空格 \t \r \n 使用:trim()方法
package com.ztt.Demo01;
public class demo09 {
public static void main(String[] args) {
//空白字符:空格 \t \r \n
String s=" ABC\t\r\n";
//去除首位“空白字符”
s=s.trim();
System.out.println(s);
System.out.println(s.length());
}
}
输出结果:
ABC
3
6.替换字符串
使用:1.replace() 方法
2.replaceAll()方法使用正则表达式进行匹配
[\\,\\.\\$]匹配一个字符内容
[\\,\\.\\$]+匹配多个字符内容
package com.ztt.Demo01;
public class demo10 {
public static void main(String[] args) {
// 替换字符串
String ip="127.0.0.1";
//字符替换字符
String ret=ip.replace('.', '#');
//字符串替换字符串
String ret1=ip.replace(".", "[.]");
System.out.println("原字符串:"+ip);
System.out.println("替换结果:"+ret);
System.out.println("替换结果:"+ret1);
}
}
输出结果:
原字符串:127.0.0.1
替换结果:127#0#0#1
替换结果:127[.]0[.]0[.]1
package com.ztt.Demo01;
//字符串的替换
public class demo11 {
public static void main(String[] args) {
String s= "A,B,,C,D.E,G$H.I";
//replace()方法将“,” “.”替换成“#”
String ret=s.replace(",", "#").replace(".", "#");
//replaceAll()方法使用正则表达式进行匹配
//[\\,\\.\\$]匹配一个字符内容
//[\\,\\.\\$]+匹配多个字符内容
String ret1=s.replaceAll("[\\,\\.\\$]+", "#");
//[A-Z]+ 匹配多个大写字母
String ret2=s.replaceAll("[A-Z]+", "#");
// "."代表1个正则表达式,匹配任意字符
//“\\."代表1个普通字符串内容,仅匹配"."
String ret3 = s.replaceAll("\\.","#");
System.out.println(s);
System.out.println(ret);
System.out.println(ret1);
System.out.println(ret2);
System.out.println(ret3);
}
}
输出结果:
A,B,,C,D.E,G$H.I
A#B##C#D#E#G$H#I
A#B#C#D#E#G#H#I
#,#,,#,#.#,#$#.#
A,B,,C,D#E,G$H#I
7.字符串的分割 使用:split() 方法
package com.ztt.Demo01;
import java.util.Arrays;
//字符串的分割
public class demo12 {
public static void main(String[] args) {
String s1 ="北京#上海#南京#苏州#杭州3常州#无锡#深圳#乌鲁木齐";
String[] ret1 = s1.split("\\#");
System.out.println(s1);
System.out.println(Arrays.toString( ret1));
//按照正则表达式的特殊字符进行分割
String s2 ="北京+上海+南京+苏州+杭州+常州+无锡+深圳+乌鲁木齐";
String[] ret2 = s2.split("\\+");//+属于正则表达式的特殊符号,必须转义
System.out.println(s2);
System.out.println(Arrays.toString(ret2) );
//按照正则表达式进行分割
String s3 = "北京A上海F南京K苏州w杭州u常州M无锡s深圳w乌鲁木齐";
String[] ret3 = s3.split("[A-Z]");
System.out.println(s3);
System.out.println(Arrays.toString(ret3));
String s4 = "北京0上海2南京7苏州1杭州4常州2无锡8深圳55乌鲁木齐";
String[] ret4 = s4.split("[0-9]+");
System.out.println(s4);
System.out.println(Arrays.toString(ret4));
}
}
输出结果:
[北京, 上海, 南京, 苏州, 杭州3常州, 无锡, 深圳, 乌鲁木齐]
北京+上海+南京+苏州+杭州+常州+无锡+深圳+乌鲁木齐
[北京, 上海, 南京, 苏州, 杭州, 常州, 无锡, 深圳, 乌鲁木齐]
北京A上海F南京K苏州w杭州u常州M无锡s深圳w乌鲁木齐
[北京, 上海, 南京, 苏州w杭州u常州, 无锡s深圳w乌鲁木齐]
北京0上海2南京7苏州1杭州4常州2无锡8深圳55乌鲁木齐
[北京, 上海, 南京, 苏州, 杭州, 常州, 无锡, 深圳, 乌鲁木齐]
8.拼接字符串(将多个字符串元素按照指定格式拼接成完整字符串)
拼接字符串常用:
String.join()方法:将多个字符串元素使用指定字符串,拼接成完整字符串
String .format()方法:将多个数据元素按照指定格式,拼接成完整字符串
package com.ztt.Demo01;
//拼接字符串(将多个字符串元素按照指定格式拼接成完整字符串)
//拼接字符串
//String.join()方法:将多个字符串元素使用指定字符串,拼接成完整字符串
// String .format()方法:将多个数据元素按照指定格式,拼接成完整字符串
public class demo13 {
public static void main(String[] args) {
//String.join()方法:普通拼接
//传入数组
String[] arr = {"西安","宝鸡","渭南","安康","汉中","铜川","延安"};
String ret1 = String.join( "$", arr);
System.out.println(ret1);
//传入动态参数
String ret2 = String.join("$","西安","宝鸡","渭南","安康");
System.out.println(ret2);
//String.format():格式化拼接
String ret3=String.format("商品价格¥%f,库存%d,卖家%s", 1234.56,100,"今晚打老虎");
System.out.println(ret3);
}
}
输出结果:
西安$宝鸡$渭南$安康$汉中$铜川$延安
西安$宝鸡$渭南$安康
商品价格¥1234.560000,库存100,卖家今晚打老虎