Java面向对象系列[v1.0.1][String类相关用法]
字符串就是一连串的字符序列,Java提供了String、StringBuffer和StringBuilder三个类来处理字符串各种行为,其中包含了诸多实用方法
String类
String类是个不可变类,即一旦创建了一个String对象,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁
在Java9之前字符串采用char[]数组保存字符,因此字符串的每个字符占2个字节,在Java9之后采用byte[]数组再加一个enencoding-flag字段来保存字符,字符串的每个字符只占1个字节,字符串的功能方法不受影响。
String类提供了大量构造器来创建String对象,常用的如下所示:
- String():创建一个包含0个字符串序列的String对象(并不返回null)
- String(byte[] bytes, Charset charset):使用指定的字符集将指定的byte[]数组解码成一个新的String对象
- String(byte[] bytes, int offset, int length):使用平台默认字符集将指定的byte[]数组从offset开始长度为length的子数组解码成一个新的String对象
- String(byte[] bytes, int offset, int length, String charsetName):使用指定的字符集将指定的byte[]数组从offset开始长度为length的自舒服解码成一个新的String对象
- String(byte[] bytes, String charsetName):使用指定的字符集将指定的byte[]数组解码成一个新的String对象
- String(char[] value, int offset, int count):将指定的字符数组从offset开始长度为count的字符元素连缀成字符串
- String(String original):根据字符串直接量创建String对象,也就是说创建的String对象是这个直接量的副本
- String(StringBuffer buffer):根据StringBuffer对象来创建对应的String对象
- String(StringBuilder builder):根据StringBuilder对象来创建对应的String对象
- char charAt(int index):获取字符串中指定位置的字符,其中参数index指的字符串的序数,从0到length-1
jshell> String str = new String("davieyang.com")
str ==> "davieyang.com"
jshell> System.out.println("The sixth char is\n" + str.charAt(5));
The sixth char is
y
- int compareTo(String anotherString):比较两个字符串大小,如果两个字符串相等则返回0,不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差。另一个情况,较长字符串的前面部分恰巧是较短的字符串,则返回他们的长度差
jshell> String str1 = new String("abcdefghijklmn");
str1 ==> "abcdefghijklmn"jshell> String str2 = new String("abcdefghij");
str2 ==> "abcdefghij"jshell> String str3 = new String("abcdefghijklmn");
str3 ==> "abcdefghijklmn"jshell> System.out.println("str1 compare to str2\n" + str1.compareTo(str2));
str1 compare to str2
4jshell> System.out.println("str1 compare to str3\n" + str1.compareTo(str3));
str1 compare to str3
0jshell> String str3 = new String("abcdefghijalmn");
str3 ==> "abcdefghijalmn"jshell> System.out.println("str1 compare to str3\n" + str1.compareTo(str3));
str1 compare to str3
10
- String concat(String str):将该String对象与str链接在一起,与“+”功能相同
- boolean contentEquals(StringBuffer sb):将该String对像鱼StringBuffer对象sb进行比较,字符序列相同则返回true
- static String copyValueOf(char[] data):将字符数组连缀成字符串,与String(char[] content)构造器的功能相同
- static String copyValueOf(char[], int offset, int count):将字符数组的子数组中的元素连缀成字符串,与String(char[] value, int offset, int count)构造器的功能相同
- boolean endsWith(String suffix):返回该String对象是否以suffix结尾
jshell> String str1 = "com";
str1 ==> "com"jshell> String str2 = "davieyang.com"
str2 ==> "davieyang.com"jshell> System.out.println("str2 ends With(str1)" + str2.endsWith(str1));
str2 ends With(str1)true
- boolean equals(Object anObject):将该字符串与指定对象比较,如果二者包含的字符序列相等,则返回true否则返回false
- boolean equalsIgnoreCase(String str):与上一个方法类似,但忽略大小写
- byte[] getBytes(): 将该String对象转换成byte数组
- void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):该方法将字符串中从srcBegin开始,到srcEnd结束的字符串复制到dst字符数组中,其中dstBegin为目标字符数组的起始复制位置
jshell> char[] str1 = {'d', 'a', 'v', 'i', 'e', 'y', 'a', 'n', 'g', 'd', 'y'};
str1 ==> char[11] { 'd', 'a', 'v', 'i', 'e', 'y', 'a', 'n', 'g', 'd', 'y' }jshell> String str2 = new String("django");
str2 ==> "django"jshell> str2.getChars(0,3,str1,7);jshell> System.out.println(str1);
davieyadjay
- int indexOf(int ch): 找出ch字符在该字符串中第一次出现的位置
- int indexOf(int ch, int fromIndex):找出ch字符在该字符串中从fromIndex开始后第一次出现的位置
- int indexOf(String str):找出str子字符串在该字符串中第一次出现的位置
- int indexOf(String, int fromIndex):找出str子字符串在该字符串中从fromIndex开始后第一次出现的位置
jshell> String str1 = "www.daiveyang.com"
str1 ==> "www.daiveyang.com"jshell> String str2 = "ya";
str2 ==> "ya"jshell> System.out.println(str1.indexOf('y'));
9jshell> System.out.println(str1.indexOf('y', 2));
9jshell> System.out.println(str1.indexOf(str2));
9
- int lastIndexOf(int ch): 找出ch字符在该字符串中最后一次出现的位置
- int lastIndexOf(int ch, int fromIndex):找出ch字符在该字符串中从fromIndex开始后最后一次出现的位置
- int lastIndexOf(String str):找出子字符串str在该字符串中最后一次出现的位置
- int lastIndexOf(String str, int fromIndex):找出str子字符串在该字符串中从fromIndex开始后最后一次出现的位置
- int length(): 返回当前字符串长度
- String replace(char oldChar, char newChar):将字符串中第一个oldChar替换成newChar
- boolean startsWith(String prefix): 该String对象是否以prefix开始
- boolean startsWith(String prefix, int offset):该String对象从offset位置算起,是否以prefix开始
- String substring(int beginIndex):获取从beginIndex位置开始到结束的子字符串
- String substring(int beginIndex, int endIndex):获取从beginIndex位置开始到endIndex位置的子字符串
- char[] toCharArray():将该String对象转换成char数组
- String toLowerCase():将字符串转换成小写
- String toUpperCase():将字符串转换成大写
- static String valueOf(X x):一系列用于将基本类型值转换为String对象的方法
StringBuffer类和StringBuilder类
因为String类是不可变的,所以会额外产生很多临时变量使用StringBuffer和StringBuilder就可以避免这个问题;StringBuilder提供了一系列插入、追加、改变该字符串里包含的字符序列的方法,而StringBuffer与其用法完全相同,只是StringBuffer是线程安全的。
public class StringBuilderTest
{public static void main(String[] args){var sb = new StringBuilder();// 追加字符串sb.append("java");//sb = "java"// 插入sb.insert(0, "hello "); // sb="hello java"// 替换sb.replace(5, 6, ","); // sb="hello,java"// 删除sb.delete(5, 6); // sb="hellojava"System.out.println(sb);// 反转sb.reverse(); // sb="avajolleh"System.out.println(sb);System.out.println(sb.length()); // 输出9System.out.println(sb.capacity()); // 输出16// 改变StringBuilder的长度,将只保留前面部分sb.setLength(5); // sb="avajo"System.out.println(sb);}
}
Java面向对象系列[v1.0.1][String类相关用法]相关推荐
- Java面向对象系列[v1.0.0][类加载器]
类加载器负责将.class文件加载到内存中,并为它生成对应的java.lang.Class对象 类加载机制 类加载器负责加载所有的类,并未所有被载入内存中的类生成一个java.lang.Class实例 ...
- Java面向对象系列[v1.0.0][泛型基础]
Java5增加泛型支持,很大程度上是为了让集合记住其元素的数据类型,在此之前不用泛型的话,一旦把一个对象放进Java集合中,集合就会忘记对象的类型,把所有的对象当成Object类型处理,从集合里取出对 ...
- Java面向对象系列[v1.0.0][泛型进阶]
所谓泛型,就是允许在定义类.接口.方法时使用类型形参,这个类型形参(或者叫泛型)将在声明变量.创建对象.调用方法时动态地指定(即传入实际的类型参数也可称为类型实参) Java5改写了集合框架中的全部接 ...
- Java面向对象系列[v1.0.0][SQL语法之DDL]
SQL语法基础 SQL全称是Structured Query Language也就是结构化查询语言,它是操作和检索关系数据库的标准语言,标准的SQL语句可以用于操作任何关系数据库,标准的SQL语句通常 ...
- Java面向对象系列[v1.0.0][SQL语法之数据库约束]
数据库约束 所有关系型数据库都支持对数据表使用约束,在表面上是强制执行的数据校验规则,通过约束可以更好的的保证数据表里数据的完整性 大部分数据库支持5中完整性约束 NOT NULL:非空约束,指定某列 ...
- Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]
基于之前写的一篇文章Java自动化测试系列[v1.0.0][Maven开发环境]的基础上,阐述如何配置单元测试框架TestNG的测试开发环境 创建Maven项目 启动IDEA,点击Create New ...
- Java自动化测试系列[v1.0.0][ZTestReport测试报告]
获取报告框架 ZTestReport 源码Clone地址为ZTestReport ,其中ZTestReport.java和其template是我们需要的关键 修改报告框架 根据我的需要,在源码基础上进 ...
- java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...
目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...
- Java自动化测试系列[v1.0.0][自动化测试框架理念]
自动化测试含义 在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单位一 ...
- Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩
Java面向对象编程入门练习:Manager类继承Employee类并实现求得员工平均业绩 请定义一个Manager类,该类继承Employee类,并定义两个变量及一个构造方法,两个变量:depart ...
最新文章
- IOS时间传递机制简记
- mysql忘记密码,如何重置密码
- Redis学习笔记——初级
- Ubuntu Server 命令行下的默认语言 中文乱码
- python和java和scala_有没有与python3相当的scala/java收藏。国家
- [SOSP 17] Wukong+S : 不断演化的RDF数据的亚毫秒级别的状态流查询
- 科大星云诗社动态20210313
- Dijkstra 最短路径算法详解 无向图
- h5策划书_一个好的H5营销活动设计要如何进行策划
- 多人博客php源码,wusx php多用户博客(基础thinkphp)
- pageContext对象、JSP标签
- 设置模糊阴影_制作带模糊效果的PPT首页
- MAC终端使用SSH连接远程服务器
- 实验室纳新语音文字记录
- protel99se进阶视频教程(手把手教你画51单片机开发板)
- Zipf,Power-laws,Pareto分布
- mysql中哪一个储存逻辑型_《VisualFoxPro》2018秋华东年季学期在线作业(一)二三...
- 开箱即用的Vue 框架
- 【C语言详解】——文件操作(建议收藏)
- NOIP CSP-J/S初赛知识
热门文章
- 定时任务调度框架Quartz--Misfire处理规则
- 计算机自带游戏怎么调,今天才知道,原来电脑上自带游戏模式,开启后瞬间提升流畅度...
- starccm实例教程_STAR CCM实例教程1
- A星寻路算法(A* Search Algorithm),转载,见过最好的文章
- sdut3345+2127 哈夫曼树
- Burpsuite神器常用功能使用方法总结(附burpsuite2022.2.4下载地址)
- 图像处理工具包ImagXpress的清理图像功能简介
- 基于java的ssm框架健身房管理系统
- window10 pro下载
- 如何借助一款商业模式,开拓茶叶营销新渠道—代言人合伙人模式