当前位置:网站首页>字符串类的设计与实现_C语言字符串编程题
字符串类的设计与实现_C语言字符串编程题
2022-08-04 13:48:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
创建
String s1=”hello”与String s2=new String(“hello”)的区别:
String类在内存中管理一个字符串常量池(常量池的一部分),池中所有相同的字符串常量被合并,只占用一个空间。 String s1=”hello”,先看池中有没有hello,没有就创建一个hello字符串对象。即采用此方法创建0或者1个对象。 String s2=new String(“hello”),这里先在池中创建一个hello对象,同s1,然后new String()时,将hello对象复制到堆heap中,s2指向堆中的hello。采用此种方法时创建1或2个对象(当池中有hello时,创建一个对象)。
Java 字符串常用操作(String类)
字符串查找
String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。
1、indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1
String str ="We are students";
int size = str.indexOf("a"); // 变量size的值是3
2、lastIndexOf(String str)
该方法用于返回字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1.
如果lastIndexOf方法中的参数是空字符串”” ,,则返回的结果与length方法的返回结果相同。 获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
String str = "hello word";
char mychar = str.charAt(5); // mychar的结果是w
获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。在字符串中空格占用一个索引位置。
substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取知道该字符串结尾的子串。
String str = "Hello word";
String substr = str.substring(3); //获取字符串,此时substr值为lo word
2、substring(int beginIndex, int endIndex)
beginIndex : 开始截取子字符串的索引位置 endIndex:子字符串在整个字符串中的结束位置
String str = "Hello word";
String substr = str.substring(0,3); //substr的值为hel
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串
oldChar:要替换的字符或字符串
newChar:用于替换原来字符串的内容
如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。需要注意的是,要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致。
String str= "address";
String newstr = str.replace("a", "A");// newstr的值为Address
判断字符串的开始与结尾 startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
startsWith(String prefix)
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
endsWith(String suffix)
该方法用于判断当前字符串是否以给定的子字符串结束 判断字符串是否相等
equals(String otherstr)
如果两个字符串具有相同的字符和长度,则使用equals()方法比较时,返回true。同时equals()方法比较时区分大小写。
2、equalsIgnoreCase(String otherstr)
equalsIgnoreCase()方法与equals()类型,不过在比较时忽略了大小写。
按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0.
str.compareTo(String otherstr);
字母大小写转换
字符串的toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而tuUpperCase()方法可将字符串中的小写字母改写为大写字母。
str.toLowerCase();
str.toUpperCase();
字符串分割
使用split()方法可以使字符串按指定的分隔字符或字符串对内容进行分割,并将分割后的结果存放在字符数组中。
str.split(String sign);
sign为分割字符串的分割符,也可以使用正则表达式。 没有统一的对字符串进行分割的符号,如果想定义多个分割符,可使用符号“|”。例如,“,|=”表示分割符分别为“,”和“=”。
str.split(String sign, in limit);
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。
StringBuffer类
StringBuffer是String的一个对等类,提供了字符串的许多功能,可增长、可改写。 这里只介绍几个StringBuffer类的方法函数:
1、append():将任何数据类型的字符串表示连接到调用的StringBuffer对象的末尾。 当定String对象使用“+”运算符时,经常要调用append方法。
StringBuffer s=new StringBuffer("hello");
System.out.print(s.append(" world"));
2、inser(int index,String str):将一个字符串插入到另一个字符串中。 3、reverse():颠倒StringBuffer对象中的字符 4、delete(int startIndex,int endIndex),delete(int loc):调用对象中删除一串字符。
注意:除了一个重要的区别之外,与StringBuffer等同,这个区别是他不是同步的,意味着他不是线程安全的,其优势是更快的性能,在使用多线程时必须使用StringBuffer。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106697.html原文链接:https://javaforall.cn
边栏推荐
- SSRF-服务器端请求伪造-相关知识
- 干掉visio,这个画图神器真的绝了
- 17种正则表达式
- Execution failed for task ‘:xxx:generateReleaseRFile‘.
- State security organs conduct criminal arrest and summons review on Yang Zhiyuan, a suspect suspected of endangering national security
- 将 Sentinel 熔断限流规则持久化到 Nacos 配置中心
- BZOJ 1798 维护序列 (多校连萌,对线段树进行加乘混合操作)
- Unity 3D模型展示框架篇之资源打包、加载、热更(Addressable Asset System | 简称AA)
- PAT甲级:1038 Recover the Smallest Number
- router---编程式导航
猜你喜欢
随机推荐
Install mysql on k8s
如何通过使用“缓存”相关技术,解决“高并发”的业务场景案例?
nVisual二次开发——第二章 nVisual API操作指南Swagger使用
php中的ceil和floo以及round函数「建议收藏」
sqlplus报错ORA-12547: TNS:lost contact解决
leetcode 48. Rotate Image 旋转图像(Medium)
数据库的基本概念
c#之winform(软件开发)
开放麒麟 openKylin 版本规划敲定:10 月发布 0.9 版并开启公测,12 月发布 1.0 版
JSX使用
LM2596有没有可以替代的?LM2576可以
router---mode
Niuke.com Brush Question Record || Linked List
BZOJ 1798 维护序列 (多校连萌,对线段树进行加乘混合操作)
Just a Hook
Script to get local IP address
"Social Enterprises Conducting Civilian Personnel Training Specifications" group standard on the shelves of Xinhua Bookstore
烂大街的缓存穿透、缓存击穿和缓存雪崩,你真的懂了?
Is the code more messy?That's because you don't use Chain of Responsibility!
router---Programmatic navigation