热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

值得收藏的String类方法全面解析

本文详细总结了Java中String类的构造函数及常用方法,包括构造函数的多种形式和方法的具体应用,旨在帮助开发者更好地理解和使用String类。

一、String构造函数概述

1. public String()

创建一个新的空字符串对象。由于字符串在Java中是不可变的,因此通常不推荐使用此构造函数。

示例:String s = new String();

2. public String(byte[] bytes)

根据指定的字节数组,使用平台默认的字符集解码创建新的字符串对象。

示例:byte[] bytes = {97, 98, 99}; String s = new String(bytes); // 输出: abc

3. public String(byte[] bytes, int offset, int length)

根据指定的字节子数组,使用平台默认的字符集解码创建新的字符串对象。

参数说明:
- bytes: 字节数组
- offset: 子数组的起始偏移量
- length: 子数组的长度

示例:byte[] bytes = {97, 98, 99}; String s = new String(bytes, 1, 2); // 输出: bc

4. public String(char[] value)

根据指定的字符数组创建新的字符串对象。

示例:char[] chars = {'我', '是', '友', '人', 'A'}; String s = new String(chars); // 输出: 我是友人A

5. public String(char[] value, int offset, int count)

根据指定的字符子数组创建新的字符串对象。

示例:char[] chars = {'我', '是', '友', '人', 'A'}; String s = new String(chars, 1, 3); // 输出: 是友人

6. public String(String original)

创建一个新的字符串对象,使其表示与给定字符串相同的内容。

示例:String s = new String("哈哈哈"); // 输出: 哈哈哈

二、String方法概述

1. public char charAt(int index)

返回指定索引处的字符。索引范围从0到length()-1。

示例:char c = "我是友人A".charAt(3); // 输出: 人

2. public char[] toCharArray()

将字符串转换为字符数组。

示例:char[] chars = "我是友人A".toCharArray(); for (char c : chars) { System.out.print(c + " "); } // 输出: 我 是 友 人 A

3. public int compareTo(String anotherString)

按字典顺序比较两个字符串。比较基于字符串中每个字符的Unicode值。

示例:int result = "abc".compareTo("abc"); // 输出: 0 int result2 = "abce".compareTo("abcd"); // 输出: 1 int result3 = "abcd".compareTo("abce"); // 输出: -1 int result4 = "abcd".compareTo("bcad"); // 输出: -1

4. public boolean contains(CharSequence s)

判断当前字符串是否包含指定的字符序列。

示例:System.out.println("友人A".contains("友五")); // 输出: false System.out.println("友人A".contains("友人")); // 输出: true

5. public boolean endsWith(String suffix)

判断当前字符串是否以指定的后缀结尾。

示例:System.out.println("test.txt".endsWith(".java")); // 输出: false System.out.println("test.txt".endsWith(".txt")); // 输出: true

6. public boolean startsWith(String prefix, int toffset)

判断当前字符串是否以指定的前缀开头,从指定的索引开始比较。

示例:System.out.println("qwwwqwqfdf".startsWith("qw", 1)); // 输出: true

7. public boolean equals(Object anObject)

判断两个字符串是否相等。注意,应使用equals方法而不是==运算符来比较字符串。

示例:System.out.println("abc".equals("abc")); // 输出: true

8. public boolean equalsIgnoreCase(String anotherString)

判断两个字符串是否相等,忽略大小写。

示例:System.out.println("abc".equals("Abc")); // 输出: false System.out.println("abc".equalsIgnoreCase("ABc")); // 输出: true

9. public byte[] getBytes()

将字符串转换为字节数组。

示例:byte[] bytes = "abc".getBytes(); for (byte b : bytes) { System.out.print(b + " "); } // 输出: 97 98 99

10. public int indexOf(String str)

返回指定子字符串在当前字符串中首次出现的索引。

示例:System.out.println("addppqkufppq".indexOf("ppq")); // 输出: 3

11. public int lastIndexOf(String str)

返回指定子字符串在当前字符串中最后一次出现的索引。

示例:System.out.println("addppqkufppq".lastIndexOf("ppq")); // 输出: 9

12. public boolean isEmpty()

判断字符串是否为空。

示例:String s = ""; System.out.println(s.isEmpty()); // 输出: true

13. public int length()

返回字符串的长度,即字符串中Unicode编码单元的数量。

示例:System.out.println("78".length()); // 输出: 2

14. public String replace(CharSequence target, CharSequence replacement)

将字符串中所有出现的目标序列替换为指定的替代序列。

示例:String replaced = "youren@A".replace("@A", "@B"); System.out.println(replaced); // 输出: youren@B

15. public String[] split(String regex)

根据给定的正则表达式拆分字符串,返回一个字符串数组。

示例:String[] parts = "1980-10-11".split("-"); for (String part : parts) { System.out.println(part); } // 输出: 1980 10 11

16. public String substring(int beginIndex, int endIndex)

返回从指定的开始索引到结束索引之间的子字符串。

示例:System.out.println("hhheeefff".substring(3)); // 输出: eeefff System.out.println("hhheeefff".substring(0, 5)); // 输出: hhhee

17. public String toLowerCase()

将字符串转换为小写。

示例:System.out.println("ABCDE".toLowerCase()); // 输出: abcde

18. public String trim()

返回一个新的字符串,该字符串去除了原字符串首尾的所有空白字符。

示例:System.out.println(" hello world ".trim()); // 输出: hello world

深入理解:为什么输出对象时会调用toString()方法?

在Java中,System.out.println() 方法会调用对象的 toString() 方法来获取对象的字符串表示形式。这是因为控制台只能输出字符串,非字符串类型的数据需要转换为字符串才能输出。

valueOf() 方法用于将非字符串类型的数据转换为字符串,而 toString() 方法则是 valueOf() 方法内部调用的方法。当输出一个对象时,实际上是调用了该对象的 toString() 方法,具体行为取决于该对象是否重写了 Object 类中的 toString() 方法。如果没有重写,默认会输出对象的内存地址。

结语

感谢阅读!如果有任何疑问或建议,欢迎在评论区留言。如果本文对您有所帮助,别忘了点赞支持哦!每天都会分享更多Java相关的技术文章和行业资讯,敬请关注和转发。


推荐阅读
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文深入探讨了 Python 中的循环结构(包括 for 循环和 while 循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文探讨了在地理信息系统中,如何通过图层数据获取任意两条道路的交叉点坐标及其名称。文中详细介绍了实现方法和相关技术细节。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了Flask项目的配置方法,包括DEBUG模式的设置和配置文件的使用,帮助开发者更好地理解和应用Flask框架。 ... [详细]
author-avatar
手机用户2502877953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有