1.字符串的内存知识
- 字符串中的变量存的是内存地址
2.字符串的一些常用操作
1.字符串的常用方法
public class Base1 {
public static void main(String[] args) {
String str = " asda ds ";
//(1).length方法:获得字符串的长度,数组没有length方法
System.out.println(str.length());//9
System.out.println("===========");
//(2).charAt方法:返回指定下角标(索引)处的字符值
System.out.println(str.charAt(2));//s
System.out.println("===========");
//(3).indexOf方法:返回指定字符或字符串第一次出现的位置(如果找不到位置,则返回-1)
System.out.println(str.indexOf("d"));//3
System.out.println("===========");
//(4).substring方法:截位(根据光标的位置,截取原有字符串,并生成新的字符串)
String s = str.substring(2);//从第几个下标开始截取字符串
System.out.println(str);// asda ds
System.out.println("截取后的字符串");
System.out.println(s);//sda ds
System.out.println("===========");
//(5).replace方法:将原有字符串中的指定字符或者字符串替换,并生成新的字符串
String s2 = str.replace("as", "a");
System.out.println("s2:"+s2);
System.out.println("===========");
//(6).trim方法:去除字符串前后空格
String s3 = str.trim();
System.out.println("s3:"+s3);
System.out.println("===========");
//(7).split方法:根据指定字符串或正则表达式将原有字符串分割,返回数组
System.out.println(str);// asda ds
String[] split = str.split("a");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
/*
sd
ds
* */
System.out.println("===========");
//(8).startsWith方法:判断指定参数是否为原字符串前缀 .endsWith方法:判断指定参数是否为原字符串后缀
System.out.println(str);// asda ds
System.out.println(str.startsWith("Asd"));//false
System.out.println(str.endsWith("ds "));//true
System.out.println("===========");
//(9).valueOf方法:将整数转换成字符串
int a=7555;
String s1 = String.valueOf(a);
System.out.println(s1);//7555
}
}
2.比较字符串(忽略大小写)
public class Base2 {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = "Abc";
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//true
}
}
3.拿到字符串中的所有元素
public class Base3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = input.next();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
System.out.print(c +" ");
}
}
}
4.统计字符串
public class Base4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = input.next();
int bigCount=0;
int smallCount=0;
int numberCount=0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c>='a'&&c<='z'){
smallCount++;
}else if (c>='A'&& c<='Z'){
bigCount++;
}else if (c>='0'&&c<='9'){
numberCount++;
}
}
System.out.println("小写字母有:"+smallCount+"个");
System.out.println("大写字母有:"+bigCount+"个");
System.out.println("数字有:"+numberCount+"个");
}
}
5.字符数组和字节数组
public class Base5 {
public static void main(String []args){
//传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
char[] chs = {'a','b','c','d'};
String s1 = new String(chs);
System.out.println(s1);//abcd
//传递一个字节数组,根据字节数组的内容再创建一个新的字符串都对象
//应用场景:以后网络中传输的数据其实都是字节信息
byte[] bytes = {97,98,99,100};
String s2 = new String(bytes);//根据ascii码转换得abcd
System.out.println(s2);//abcd
}
}
3.StringBuilder
作用:相当于创建的一个Sting池,可以用于拼接字符串,减少字符串在拼接时使用的内存
常用方法
public class StringBuilder_demo {
public static void main(String[] args) {
//1.创建对象
StringBuilder sb = new StringBuilder("abc");
//添加元素
sb.append(1);
sb.append(2.3);
sb.append(true);
System.out.println(sb);//abc12.3true
//反转
sb.reverse();//eurt3.21cba
//获取长度
int len =sb.length();
System.out.println(len);//11
//打印
//普及
//因为StringBuilder是Java已经写好的类
//java 在底层对他做了一些特殊处理
//打印对象不是地址值而是属性值
System.out.println(sb);
//3.把StringBuilder变回字符串
String str = sb.toString();
System.out.println(str);
}
}
StringJoiner
-
StringJoinre跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的
-
作用:提高字符串的操作效率,代码编写简洁
public class StringJoinerDemo1 {
public static void main(String[] args) {
StringJoiner sj = new StringJoiner("---");
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj);//aaa---bbb---ccc
}
}
public class StringJoinerDemo2 {
public static void main(String[] args) {
StringJoiner sj = new StringJoiner(",","[","]");
sj.add("aaa").add("bbb").add("ccc");
int len = sj.length();//13
System.out.println(len);//[aaa,bbb,ccc]
System.out.println(sj);//aaa---bbb---ccc
String str = sj.toString();
System.out.println(str);//[aaa,bbb,ccc]
}
}