String类基本介绍及常用方法

2023-11-10

1.String:不可变的字符序列

1.String基本介绍:

        1.String被声明为final,不可被继承;

        2.String实现了Serializable接口,表示字符串是支持序列化的;

        3.String实现了Comparable接口,表示字符串是可以比较的;

        4.String 内部声明了final char value[],数据存储在char[]数组中;

        5.通过字面量方式(区别于new)给字符串赋值,此时字符串值地址声明在字符串常量池中;

        6.字符串常量池中是不会存储相同内容的字符串;

        7.当对字符串进行赋值和连接操作时,必须重新指定内存区域赋值,不能使用原有的value赋值;

        8.String为不可变类型体现在对原有字符串进行操作时:如果有返回值的话原字符串内容不会变更,需要将操作后的字符串赋值给新的String;

        9.String对象创建:   

面试题:String s = new String( "abc" );   创建了几个对象?

                2个:一个是 堆空间的new对象,另一个是字符串常量池中的char[]对象;

        10.字符串创建比较:

               1)常量与常量拼接在常量池中,且常量池中不会有相同内容的常量;

                2)字符串拼接中只要有一个是变量,结果就在堆中;

                3)调用字符串名.intern(),返回值在常量池中;

                4)如果字符串在定义是使用了final,其字符串可以认为是一个常量;

面试题:

2.String常用方法:

1)int length():返回字符串的长度:return value.length
2)char charAt(int index):返回某索引处的字符return value[index]

3)boolean isEmpty():判断是否是空字符串: return value.length == o
4)String toLowerCase():使用默认语言环境,将 String中的所有字符转换为小写

5)String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写

6)String trim():返回字符革代副本,忽略前导空白和尾部空白
7)boolean equals(Object obj):比较字符串的内容是否相同
8)boolean equalslgnoreCase(String anotherString): 'jequals方法类似,忽略大小写
9)String concat(String str):将指定字符串连接到此字符串的结尾。等价于用“+”

10)int compareTo(String anotherString):比较两个字符串的大小
11)String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
12)String substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串从beginlndex开始截取到endIndex(不包含)的一个子字符串。

 

13)boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束

14)boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
15)boolean startsWith(String prefix,int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始

16)boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
17)int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引int indexOf(String         str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
18)int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引

19)int lastIndexOf(string str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索         引,从指定的索引开始反向搜索

注:indexOf和lastIndexOf方法如果未找到都是返回-1

20)String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldchar得到的。(会替换所有)
21)String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。(会替换所有)

22)String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串。
23)String replaceFirst(String regex,String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串。

24)boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。

25)Stringsplit(String regex):根据给定正则表达式的匹配拆分此字符串。

26)Stringsplit(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过          limit个,如果超过了,剩下的全部都放到最后一个元素中。

3.String与基本数据类型,包装类之间的转换

1)String与基本数据类型转换:

        String -->基本数据类型,包装类:调用包装类的静态方法 :                                                                                                                        parseXxx( str );

                如:

        基本数据类型-->String:调用String重载的valueOf()方法;

                如:

2)String与char[]之间的转换:

        String-->char[ ]:调用String的toCharArray();

        char[ ]-->String:调用String的构造器;

        如:

 3)String与byte[ ]之间的转换:

        String-->byte[ ]: 调用String的getBytes();

        byte[ ]-->String:调用String的构造器;

目录

1.String:不可变的字符序列

1.String基本介绍:

面试题:String s = new String( "abc" );   创建了几个对象?

面试题:​

2.String常用方法:

3.String与基本数据类型,包装类之间的转换

1)String与基本数据类型转换:

        String -->基本数据类型,包装类:调用包装类的静态方法 :                                                                                                                        parseXxx( str );

2)String与char[]之间的转换:

 3)String与byte[ ]之间的转换:

2.StringBuffer和StringBuild:可变的字符序列


2.StringBuffer和StringBuilder:可变的字符序列

1)基本介绍:

        StringBuffer是线程安全的,StringBuilder是线程不安全的

        在不涉及线程和共享资源时,尽量使用StringBuilder,因为StringBuilder的效率高;

        定义时原字符串里数组长度为str.length+16,长度不足时扩容长度为:原数组长度*2+2,同时                 将原数组复制到新数组当中;

        执行速度对比:StringBuilder > StringBuffer > String;

        上面指导意义:开发中建议大家使用StringBuilder(int capacity);指定数组长度,避免数组反                 复复制影响运行速度;

        

2)常用方法:

1)StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接

2)StringBuffer delete(int start,int end):删除指定位置的内容
3)StringBufferTreplace(int start, int end, String str):把[start,end)位置替换为str

4)StringBuffer insert(int offset, xxx):在指定位置插入xXX
5)StringBuffer reverse():把当前字符序列逆转

上述操作支持方法链操作:方法链即可在方法后面接着使用方法

如:s.append(str).append(str);

即:增,删,改,查,插,长度,遍历,

        

                    


 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String类基本介绍及常用方法 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • 禁用 Eclipse Java 调试器的热代码替换 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Eclipse 中禁用热代码替换 https stackoverflow com questions 2594408 how do i disable hot code replace in
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • Java:拆箱整数时出现空指针异常?

    此代码导致空指针异常 我不知道为什么 private void setSiblings PhylogenyTree node Color color throws InvalidCellNumberException PhylogenyTr
  • Java:多线程内的 XA 事务传播

    我如何使用事务管理器 例如Bitronix http docs codehaus org display BTM Home JBoss TS http www jboss org jbosstm or Atomikos http www a
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐