字符串类的设计与实现_C语言字符串编程题

字符串类的设计与实现_C语言字符串编程题Java程序设计(基础)- 字符串

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述

创建

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。

Java设计基础及面向对象导向

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106698.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql5.5连接报错1045_mysql 1045异常

    mysql5.5连接报错1045_mysql 1045异常mysql1045错误一环境:windows7+Mysql5.5.9+NavicatforMySQL(8)二在Navicat中添加连接时测试报错,错误代码1045Accessdeniedforuser’root’@’localhost'(usingpassword:YES)三原因:由于之前删除了多个连接,想重新添加结果报错通过网上查找:(主要是重新设置root的密码)可参…

  • 指纹识别模组厂家_指纹识别模块原理

    指纹识别模组厂家_指纹识别模块原理不管指纹识别的流程和传感器原理发展得有多快,如果需要商用到手机及终端设备这种民用产品上,还是有好多问题需要克服。比如我们会看到指纹模块在正面,在背面,在侧面,其原因都是sensor性能、模组结构设计、手机ID设计以及量产工艺的限制多重因素辅助、妥协形成的。一、模组位置正面毋庸置疑,代表作当然是iPhone。其实指纹识别应用在手机上并不是APPLE首次尝的禁果,HTC、Sharp、Samsung都有过

  • kill命令杀死所有进程_linux杀死一个进程

    kill命令杀死所有进程_linux杀死一个进程1kill:根据进程号(PID)杀死进程在linux上,一般常用的杀死进程的命令是kill,但是也有缺陷,下面说1、查看指定名称的进程,如下我查看运行python程序的进程pythonaux|greppython2、根据进程号(PID)杀死进程:第二列显示的就是进程号killPID3、强制杀死进程,有些进程可能杀不死,就加个-9参数,强制让它死掉!kill-9PID5、杀死多个进程,在后面跟多个进程的PID号即可kill-9PID1PID2PID3…

  • HTML5学习笔记简明版(11):新API

    HTML5学习笔记简明版(11):新API

    2021年12月31日
  • SpringMVC面试题总结「建议收藏」

    SpringMVC面试题总结「建议收藏」前言:SpringMVC的面试题常见的也就那几种,本文我打算分为两个方向为大家介绍SpringMVC的面试题。第一部分将从源码的执行的角度分析SpringMVC(以后简称MVC)第二部分将从面试官常问的SpringMVC面试题取介绍SpringMVC源码介绍1.http://localhost:8000/hello这个路径的执行流程是怎么走的流程大致分析一下:首先会请求会进入前…

  • 桶排序算法c语言_哪种排序算法最快

    桶排序算法c语言_哪种排序算法最快在前几回我们已经对冒泡排序、直接插入排序、希尔排序、选择排序、快速排序、归并排序、堆排序、计数排序做了说明分析(具体详情可在公众号历史消息中查看)。本回,将对桶排序进行相关说明分析。一、排序算法系列目录说明冒泡排序(BubbleSort)插入排序(InsertionSort)希尔排序(ShellSort)选择排序(SelectionSort)快速排序(Quick…

    2022年10月23日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号