当前位置: 首页 > article >正文

Java基础3-字符串及相关操作

字符串及相关操作

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String,这就涉及到Java变量类型的引用数据类型,包括之前提及的接口和枚举类型,都是引用数据类型,它更像C++中的char*指针。

image-20241023134906773

子串

String既然是类,那就应该有方法,Java库中定义了很多操作字符串的有用的方法,比如提取子串使用了String类中的substring方法:

String greeting="Hello world!";
String s=greeting.substring(0,5);

可以看到,第一个参数是起点索引位置,第二个参数是终点索引位置(但不包含)。

image-20241023135837965

拼接

Java语言允许使用+号连接两个字符串。

当将一个字符串与非字符串拼接时,后者被转换成字符串(任何一个Java对象都可以被转换成字符串,使用的是toString方法,这也是我们可以重写的方法)。

不可变字符串

String类没有提供用于修改字符串的方法,如果想修改,就要用到上面两个方法,先提取,再拼接。

不可变字符串的好处是,编译器能够让字符串是共享的,很少有需要修改字符串的情况,反而往往需要对字符串进行比较。

检测字符串是否相等

可以使用String类的equal方法。

//检验字符串s和t是否相等,相等返回true,反之返回false
s.equals(t);
//检验字符串s和t是否相等,相等返回true,反之返回false,但是不区分大小写
s.equalsIgnoreCase(t);

不能用==去判断,这只能确定两个字符串是否存在内存的同一个地方!而不是内容是否相同。

字符串API

Java的String类包含了很多有用的方法,绝大多数都很有用。

功能包括字符串比较、获取索引、去空格等等功能,需要的时候去API文档查询:

  • 在线文档 String (Java Platform SE 8 )

  • 本地文档:所安装JDK的doc/api/index.html

  • IDE中阅读文档(String.java,在java.lang.String中)

构建字符串

前面说到String是不可变的,若想从一个较短的字符串开始构建字符串,每次连接都要创建一个新的对象String,时间和空间开销太大,这时候就用到了StringBuilder类,可以解决从小段字符串开始构建字符串的问题。

//首先构建一个空的字符串构建器
StringBuilder builder=new StringBuilder();

//当每次需要添加内容时,就调用`appends`方法
builder.appends(ch);//一个字符
builder.appends(str);//一个字符串

//添加完成后,需要构建时就调用`toString`方法,就得到了一个String对象,包含了构建器中的字符序列
String completedString = builder.toString();

所有的Java类都直接或间接继承自Object类,而Object类有一个toString()方法。这个方法可以被重写,以提供有关对象的字符串表示。

当你使用String.valueOf(object)或者object.toString()时,Java会调用该对象的toString()方法。如果没有重写,Object类的toString()方法将返回该对象的类名,后跟@符号和对象的哈希码。

image-20241023142802681

ng()`方法将返回该对象的类名,后跟@符号和对象的哈希码。

[外链图片转存中…(img-QyeidzRO-1730296070470)]

可以查看java.lang.StringBuilder的API文档查看完整信息。


http://www.kler.cn/a/374165.html

相关文章:

  • uniapp vue2版本如何设置i18n
  • Flink概念知识讲解之:Restart重启策略配置
  • NUTTX移植到STM32
  • LQ quarter 5th
  • python学习笔记—13—while和for循环
  • asp.net core 属性路由和约定路由
  • 使用正则表达式验证积累
  • springSecurity入门(5.7版本之前)
  • 各种语言的列表推导式与三元?表达式,C++,python,rust,swift,go
  • ubuntu20.04 加固方案-设置重复登录失败后锁定时间限制
  • flutter_vscode常用快捷键
  • Spring Boot租房管理系统:功能实现与优化
  • 美团嵌入式面试题及参考答案(无人机团队)
  • 云-转录组平台升级解锁更多实用交互式功能
  • 【React 的理解】
  • java小白到架构师技术图谱
  • 流媒体转发服务器的应用场景与原理
  • Linux——五种IO模型
  • linux命令之top(Linux Command Top)
  • day14:RSYNC同步
  • 第72期 | GPTSecurity周报
  • 书生-第四期闯关:完成SSH连接与端口映射并运行hello_world.py
  • 如何使用 Vue CLI 创建 Vue 项目?
  • Java迭代器:深入理解与应用
  • 二百七十四、Kettle——ClickHouse中对错误数据表中进行数据修复(实时)
  • Spark集群管理脚本详解