charAt
charAt( ):找到指定的下标处对应的元素
package com.yym.Demo;
public class Demo01 {
public static void main(String[] args) {
String s1 = "阴天傍晚车窗外";
for(int i = 0;i < s1.length();i++) {
char c = s1.charAt(i);
System.out.println(c);
}
//通过字符数组
char[] array = s1.toCharArray();//将字符串转换成char[]字符数组
for(int i = 0;i < array.length;i++) {
char c = array[i];
System.out.println(c);
}
}
}
运行结果:
阴
天
傍
晚
车
窗
外
阴
天
傍
晚
车
窗
外
compareTo
compareTo( ):比较两个字符串的大小关系
String类implements实现了Comparable接口,重写了compareTo( )方法
package com.yym.Demo;
//字符串比较
//实现方法:String类implements实现了Comparable接口,重写了compareTo()方法
public class Demo02 {
public static void main(String[] args) {
String s1 = "abbg";
String s2 = "abb";
System.out.println(s1.compareTo(s2));
}
}
运行结果:
1
equals
equals( ):判断两个字符串的内容是否一模一样
package com.yym.Demo;
// 字符串的内容等值比较
// 实现思路: 重写object类的equals()方法
public class Demo03 {
public static void main(String[] args) {
//字符串常量池
String s1 = "just do it";
String s2 = "just do it";
System.out.println(s1 == s2);// 比较内存地址
System.out.println(s1.equals(s2));// 比较内容
//在堆区重新分配空间
String s3 = new String("just do it");
String s4 = new String("just do it");
System.out.println(s3 == s4);// 比较内存地址
System.out.println(s3.equals(s4));// 比较内容
}
}
运行结果:
true
true
false
true
字符串查找方法
indexOf()方法
indexOf():从原字符串中查找目标字符串,返回第一次出现的位置
package com.yym.Demo;
public class Demo4 {
public static void main(String[] args) {
String s = "唧唧复唧唧木兰当户织";
String target = "唧唧";
//indexOf()方法
//如果存在:返回该目标字符串的下标(>=0)
//如果不存在:返回-1
int index1 = s.indexOf(target);
System.out.println(index1);
}
}
运行结果:
0
lastIndexOf()方法
lastIndexOf():从原字符串中查找目标字符串,返回最后一次出现的位置
package com.yym.Demo;
public class Demo4 {
public static void main(String[] args) {
String s = "唧唧复唧唧木兰当户织";
String target = "唧唧";
//lastIndexOf()方法:
//如果存在:返回该目标字符串的下标(>=0)
//如果不存在:返回-1
int index2 = s.lastIndexOf(target);
System.out.println(index2);
}
}
运行结果:
3
contains()方法
contains():判断原字符串中是否存在目标字符串
package com.yym.Demo;
public class Demo4 {
public static void main(String[] args) {
String s = "唧唧复唧唧木兰当户织";
String target = "唧唧";
// contains()方法:
// 如果存在,则返回true
// 如果不存则,则返回false
boolean isContains = s.contains(target);
System.out.println(isContains);
}
}
运行结果:
true
satrtsWith()方法
satrtsWith():判断原字符串是否以目标字符串开头
package com.yym.Demo;
public class Demo4 {
public static void main(String[] args) {
String s = "唧唧复唧唧木兰当户织";
String target = "唧唧";
//startsWith
// 判断原字符串是否以目标字符串开头
// 如果是,则返回true
// 如果不是,则返回false
boolean isStarts1 = s.startsWith(target);
System.out.println(isStarts1);
}
}
运行结果:
true
endsWith( )方法
endsWith( ):判断原字符串是否以目标字符串结尾
package com.yym.Demo;
public class Demo4 {
public static void main(String[] args) {
String s = "唧唧复唧唧木兰当户织";
String target = "唧唧";
//endsWith
// 判断原字符串是否以目标字符串结尾
// 如果是,则返回true
// 如果不是,则返回false
boolean isStarts2 = s.endsWith(target);
System.out.println(isStarts2);
}
}
运行结果:
false
replace( )
replace( ):将字符串里面某个内容全部替换成指定的内容
package com.yym.Demo;
public class Demo05 {
public static void main(String[] args) {
// 替换字符串
// ip地址无效化 :"."替换为"[.]"
String ip = "127.0.0.1";
//字符替换字符
String ret1 = ip.replace('.', '#');
// 字符串替换字符串
String ret2 = ip.replace(".", "[.]");
System.out.println("原字符串:" + ip);
System.out.println("替换结果:" + ret1);
System.out.println("替换结果:" + ret2);
}
}
运行结果:
原字符串:127.0.0.1
替换结果:127#0#0#1
替换结果:127[.]0[.]0[.]1
replaceAll( )
replaceAll( ):将字符串里面某个内容全部替换成指定的内容(支持正则表达式)
使用正则表达式进行匹配:[\\,\\.\\$] 匹配到1个字符内容;[l,l\.\\$]+ 匹配到多个字符内容
package com.yym.Demo;
//字符串的替换
public class Demo6 {
public static void main(String[] args) {
String s = "A,,B.C$D,E.F$$G...";
//将","".""$"替换为"#"
// String ret = s.replace(",", "#").replace(".", "#").replace("$", "#");
//使用正则表达式进行匹配
//[\\,\\.\\$] 匹配到1个字符内容
//[l,l\.\\$]+ 匹配到多个字符内容
String ret1 = s.replaceAll("[\\,\\.\\$]", "#");
String ret2 = s.replaceAll("[\\,\\.\\$]+", "#");
//[A-Z]+ 匹配到多个大写字母
String ret3 = s.replaceAll("[A-Z]+", "#");
//"."代表1个正则表达式,匹配任意字符
// "\\."代表1个普通字符串内容,仅匹配"."
String ret4 = s.replaceAll("\\.", "#");
System.out.println(s);
System.out.println(ret1);
System.out.println(ret2);
System.out.println(ret3);
System.out.println(ret4);
}
}
运行结果:
A,,B.C$D,E.F$$G...
A##B#C#D#E#F##G###
A#B#C#D#E#F#G#
#,,#.#$#,#.#$$#...
A,,B#C$D,E#F$$G###
split( )方法
split:分割字符串(不同方法)
package com.yym.Demo;
import java.util.Arrays;
public class Demo11 {
public static void main(String[] args) {
String s1 ="北京#上海#大连#连云港#南京#杭州#深圳#齐齐哈尔#乌鲁木齐";
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 ="北京7上海1大连6连云港3南京2杭州5深圳6文齐哈尔9乌鲁木齐";
String[] ret3 = s3.split("[0-9]");
System.out.println(s3);
System.out.println(Arrays.toString(ret3));
String s4 ="北京A上海F南京K苏州W杭州U常州M无锡S深圳w乌鲁木齐";
String[] ret4 = s4.split("[A-Z]");
System.out.println(s4);
System.out.println(Arrays.toString(ret4));
}
}
运行结果:
北京#上海#大连#连云港#南京#杭州#深圳#齐齐哈尔#乌鲁木齐
[北京, 上海, 大连, 连云港, 南京, 杭州, 深圳, 齐齐哈尔, 乌鲁木齐]
北京+上海+南京+苏州+杭州+常州+无锡+深圳+乌鲁木齐
[北京, 上海, 南京, 苏州, 杭州, 常州, 无锡, 深圳, 乌鲁木齐]
北京7上海1大连6连云港3南京2杭州5深圳6文齐哈尔9乌鲁木齐
[北京, 上海, 大连, 连云港, 南京, 杭州, 深圳, 文齐哈尔, 乌鲁木齐]
北京A上海F南京K苏州W杭州U常州M无锡S深圳w乌鲁木齐
[北京, 上海, 南京, 苏州, 杭州, 常州, 无锡, 深圳w乌鲁木齐]
substring( )方法
substring( ):从下标beginIndex一直截取到字符串最后,每次截取,都会产生一个新的字符对象
package com.yym.Demo;
public class Demo07 {
public static void main(String[] args) {
// 字符串是不可变
String s = "我本将心向明月";
//每次截取,都会产生一个新的字符对象
String ret = s.substring(4);
System.out.println(s);
System.out.println(ret);
}
}
运行结果:
我本将心向明月
向明月
trim( )方法
trim( ):去除首尾"空白字符"
package com.yym.Demo;
public class Demo08 {
public static void main(String[] args) {
// 空白字符 :空格 t r \n
String s = " AB\tC\t\r\n";
// 去除首尾"空白字符"
s = s.trim();
System.out.println(s);
System.out.println(s.length());
}
}
拼接字符串
String.join( )方法
String.join( ):将多个字符串元素使用指定字符串,拼接成完整字符串
package com.yym.Demo;
public class Demo9 {
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.format( ):将多个数据元素按照指定格式,拼接成完整字符串
package com.yym.Demo;
public class Demo10 {
public static void main(String[] args) {
//String.format():格式化拼接
String ret3 = String.format("商品价格¥%f,库存%d,卖家%s", 1234.56,100,"今晚不睡觉");
System.out.println(ret3);
}
}
运行结果:
商品价格¥1234.560000,库存100,卖家今晚不睡觉
getBytes( )方法
getBytes( ):按照编码获取字节值
.getBytes():按照默认Unicode码获取字节值;.getBytes("UTF-8"):按照UTF-8码获取字节值
package com.yym.Demo;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
//字符编码
//ASCII码:包含A-Z a-z 、符号、占1个字节
//Unicode码:包含主流编码集,占2个字节
//UTF-8:占3个字节
public class Demo13 {
public static void main(String[] args) throws UnsupportedEncodingException {
String s1 = "A";
String s2 ="中";
String s3 ="中";
// 获取字符串的字节数组
byte[] b1 = s1.getBytes(); // 按照默认Unicode码获取字节值
byte[] b2 = s2.getBytes(); // 按照默认Unicode码获取字节值
byte[] b3 = s3.getBytes("UTF-8"); // 按照UTF-8码获取字节值
System.out.println("A=" + Arrays.toString(b1));
System.out.println("中=" + Arrays.toString(b2));
System.out.println("中=" + Arrays.toString(b3));
}
}
运行结果:
A=[65]
中=[-42, -48]
中=[-28, -72, -83]