前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >备战第16届蓝桥杯——常用字符串函数

备战第16届蓝桥杯——常用字符串函数

作者头像
红目香薰
发布2025-05-29 09:11:47
发布2025-05-29 09:11:47
7500
代码可运行
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode
运行总次数:0
代码可运行

字符串概述

从以下代码可以看出,字符串的实质就是一组字符。

代码语言:javascript
代码运行次数:0
运行
复制
char chars[]={'a','b','c'};
String s=new String(chars);
System.out.println(s);
int len=s.length();
System.out.println(len);

String 和 new String的区别

1、创建的字符串变量在内存中的区别

两者看似都是创建了一个字符串对象,但在内存中确是各有各的想法。

String str1= “abc”; 在编译期,JVM会去常量池来查找是否存在“abc”,如果不存在,就在常量池中开辟一个空间来存储“abc”;如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str1的空间,来存储“abc”在常量池中的地址值。

String str2 = new String("abc") ;在编译阶段JVM先去常量池中查找是否存在“abc”,如果过不存在,则在常量池中开辟一个空间存储“abc”。

在运行时期,通过String类的构造器在堆内存中new了一个空间,然后将String池中的“abc”复制一份存放到该堆空间中,在栈中开辟名字为str2的空间,存放堆中new出来的这个String对象的地址值。

也就是说,前者在初始化的时候可能创建了一个对象,也可能一个对象也没有创建;后者因为new关键字,至少在内存中创建了一个对象,也有可能是两个对象。

2、特性不同

String类 是final修饰的,不可以被继承。

String类的底层是基于char数组的。

3、性能效率不同

String类被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。例如: String str = “hello"; str = str + "world“; 所以当上文str指向了一个String对象(内容为“hello”),然后对str进行“+”操作,str原来指向的对象并没有变,而是str又指向了另外一个对象(“hello world”),原来的对象还在内存中。 由此也可以看出,频繁的对String对象进行修改,会造成很大的内存开销。此时应该用StringBuffer或StringBuilder来代替String。

而new String() 更加不适合,因为每一次创建对象都会调用构造器在堆中产生新的对象,性能低下且内存更加浪费。

常用字符串列表

equals()//比较两个字符串区分大小写 equalsIgnoreCase()//比较两个字符串不区分大小写 length()//取得字符串的长度 substring()//字符串截取 concat() //连接两个字符串 replace()//替换 trim()//去掉起始和结尾的空格 valueOf()//转换为字符串 toLowerCase()//转换为小写 toUpperCase()//转换为大写 toCharArray()//转char数组 indexOf()//查找字符或者子串第一次出现的地方 lastIndexOf()//查找字符或者子串是后一次出现的地方 split()//字符串分割

常用函数1、字符串相同判断(equals)

String s0="abc",s1="abc" ; if(s0==s1){} 结果为true 因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象。

String s2=new String("abc"); String s3=new String("abc"); if(s2==s3){} 结果为false,此时a和b指向不同的对象

String s2=new String("abc"); String s3=new String("abc"); if(a.equals(b)){} 结果为true

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

public class Test {
	public static void main(String[] args) {
		String s0="abc";
		String s1="abc";
		String s2=new String("abc");
		String s3=new String("abc");
		System.out.println(s0==s1);
		System.out.println(s1==s2);
		System.out.println(s2==s3);
		System.out.println(System.identityHashCode(s0));
		System.out.println(System.identityHashCode(s1));
		System.out.println(System.identityHashCode(s2));
		System.out.println(System.identityHashCode(s3));
		System.out.println(s0.equals(s1));
		System.out.println(s1.equals(s2));
		System.out.println(s2.equals(s3));
	}
}

常用函数2、字符串截取(substring)

看好截取从下标开始到下标+长度结束。

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

public class Test {
	public static void main(String[] args) {
		String str="I HAVE A DREAM!";
        String s = str.substring(2, 2+4);
        System.out.println(s);
	}
}

常用函数3、替换函数(replace)

直接替换全部字符串。

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

public class Test {
	public static void main(String[] args) {
		String str="I HAVE A DREAM!";
        String s = str.replace("DREAM", "GOOD IDEA");
        System.out.println(s);
	}
}
代码语言:javascript
代码运行次数:0
运行
复制
package day13;

import java.util.UUID;

public class Demo4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "你个棒槌,你个大傻锤。";
		String newS = s.replace("棒槌", "XX").replace("大傻锤", "XX");
		System.out.println(newS);
		UUID uuid = UUID.randomUUID();
		System.out.println(uuid.toString().replace("-", ""));
		System.out.println("5d54a0ad65504f4a8fc604e274075722".length());
	}

}

常用函数4、清空字符串前后空字符(trim)

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

public class Test {
	public static void main(String[] args) {
		String str="\tI HAVE A DREAM!\t";    
        String s = str.trim();
        System.out.println(s);
	}
}
代码语言:javascript
代码运行次数:0
运行
复制
package day13;

public class Demo5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 空格与制表符前后都能去掉,但是v1_5的大空格属于字符,不可用
		String userName = " admin	".trim();
		String pwd = " 123456 ".trim();
		if(userName.equals("admin")&&pwd.equals("123456")) {
			System.out.println("登录成功");
		}else {
			System.out.println("userName|pwd异常");
		}
	}
}

ValueOf

代码语言:javascript
代码运行次数:0
运行
复制
package day13;

public class Demo6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num = 666;
		String valueOf = String.valueOf(num);
		System.out.println(valueOf);
		System.out.println(num+"");
		String s = num+"";
		System.out.println(s);
	}

}

常用函数5、转char数组(toCharArray)

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

public class Test {
	public static void main(String[] args) {
		String str = "89dsa dady8)ILuhd9usa)(*YGIUhdusa hoi";
        char[] array = str.toCharArray();
        int low = 0;
        int up = 0;
        int num = 0;
        int other = 0;
        for (char c : array) {
            if (c >= 'a' && c <= 'z') {
                low++;
            } else if (c >= 'A' && c <= 'Z') {
                up++;
            } else if (c >= '0' && c <= '9') {
                num++;
            } else {
                other++;
            }
        }
        System.out.println(str.length());
        System.out.println(low);
        System.out.println(up);
        System.out.println(num);
        System.out.println(other);
	}
}
代码语言:javascript
代码运行次数:0
运行
复制
package day13;

public class Demo8 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s ="jhsakldjask12l dLK HKL JDO ASJD kjash dklash kod j)(^S&*D6a 9s12yd98sa dy78ats d89ay79)*T &(S*D&(AS TD(UH sj12kdha sjkdh asjk";
		char[] array = s.toCharArray();
		int count = 0;
		for (int i = 0; i < array.length-1; i++) {
			if((array[i]+""+array[i+1]).equals("12")) {
				System.out.println(i);
				count++;
			}
		}
		System.out.println(count);
	}

}

常用函数6、某字符从哪里开始(indexOf)

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

import java.util.UUID;

public class Test {
	public static void main(String[] args) {
		String str = UUID.randomUUID().toString().replaceAll("-", "");
        String fileName = str.concat(".jpg");
        int indexOf = fileName.indexOf(".jpg");
        System.out.println(indexOf);
        System.out.println(fileName.substring(indexOf,fileName.length()));
	}
}
代码语言:javascript
代码运行次数:0
运行
复制
package day13;

public class Demo9 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s ="jhsakldjask12l dLK HKL JDO ASJD kjash dklash kod j)(^S&*D6a 9s12yd98sa dy78ats d89ay79)";
		int indexOf = s.indexOf("123");
		System.out.println(indexOf);
		System.out.println(s.substring(11,11+2));
		int i = s.indexOf("12", indexOf+2);
		System.out.println(i);
		System.out.println(s.substring(62,62+2));
	}
}

常用函数7、分隔(split)

代码语言:javascript
代码运行次数:0
运行
复制
package temp01;

import java.util.UUID;

public class Test {
	public static void main(String[] args) {
		String str = UUID.randomUUID().toString();
        System.out.println(str);
        String[] split = str.split("-",str.length());
        for (String string : split) {
            System.out.println(string);
        }
	}
}
代码语言:javascript
代码运行次数:0
运行
复制
package day13;

public class Demo10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s= "i have a dream!";
		// 将所有英文的首字母大写
		String[] split = s.split(" ");
		String s1= "";
		for (int i = 0; i < split.length; i++) {
			char[] cs = split[i].toCharArray();
			s1+=((char)(cs[0]-32))+"";
			for (int j = 1; j < cs.length; j++) {
				s1+=cs[j];
			}
			s1+=" ";
		}
		System.out.println(s1);
	}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串概述
  • String 和 new String的区别
    • 1、创建的字符串变量在内存中的区别
    • 2、特性不同
    • 3、性能效率不同
  • 常用字符串列表
    • 常用函数1、字符串相同判断(equals)
    • 常用函数2、字符串截取(substring)
    • 常用函数3、替换函数(replace)
    • 常用函数4、清空字符串前后空字符(trim)
    • ValueOf
    • 常用函数5、转char数组(toCharArray)
    • 常用函数6、某字符从哪里开始(indexOf)
    • 常用函数7、分隔(split)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档