字符串类的设计与实现_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设计基础及面向对象导向

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DeviceIoControl_苹果无法与此应用程序通信

    DeviceIoControl_苹果无法与此应用程序通信驱动开发之用DeviceIoControl实现应用程序与驱动程序通信1.readfile和writefile可以实现应用程序与驱动程序通信,另外一个Win32API是DeviceIoControl。应用程序自定义一中IO控制码,然后调用DeviceIoControl函数,IO管理器会产生一个MajorFunction为IRP_MJ_DEVICE_CONTROL,MinorFun

    2022年9月6日
    6
  • django 自定义过滤器_自定义权限过滤器

    django 自定义过滤器_自定义权限过滤器前言虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。自定义过滤器首先在某个app中,创建

    2022年7月30日
    6
  • ▲ Android 使用RecycleView自定义日历签到效果

    ▲ Android 使用RecycleView自定义日历签到效果

    2021年3月12日
    168
  • Matlab由三维散点绘制三维曲面(含等高线,剖面图)「建议收藏」

    Matlab由三维散点绘制三维曲面(含等高线,剖面图)「建议收藏」绘图描述:由若干个给定的三维散点(x,y,z)绘制一个三维的曲面,具体的效果如图:伪彩图:等高线:三维曲面(深色):三维曲面(浅色)+等高线:剖面图:Matlab程序如下:其中A就是我们散点的数据矩阵A=[173.699116.986-409.863130.39108.312-388.571187.8261…

    2022年10月11日
    2
  • SSH Config 允许使用root密码登陆 PermitRootLogin[通俗易懂]

    SSH Config 允许使用root密码登陆 PermitRootLogin[通俗易懂]问题:我用ssh连接服务器的时候,如果不设置密钥登陆,就会登陆失败,没有办法通过密码登陆解决:首先设置允许通过密码登陆,设置PasswordAuthentication为yes设置在/etc/ssh/sshd_config中设置PermitRootLogin为yes重启sshservicesudoservicesshrestart…

    2022年6月6日
    34
  • java事务的使用_Java跨库事务

    java事务的使用_Java跨库事务什么是事务?事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句(或函数调用)来界定。事务由事务开始(begintransacti…

    2022年10月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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