Java 语言的文本数据被保存为字符或字符串类型。字符及字符串的操作主要用到 String 类和 StringBuffer 类,如连接、修改、替换、比较和查找等。

定义字符串

直接定义字符串

直接定义字符串是指使用双引号表示字符串中的内容,例如"Hello Java"、"Java 编程"等

String helloWorld ="Hello World";

使用 String 类定义

在 Java 中每个双引号定义的字符串都是一个 String 类的对象。因此,可以通过使用 String 类的构造方法来创建字符串,该类位于 java.lang 包中。

String helloWorld =new String("Hello World");

字符串的连接

通过字符串连接,可以将两个或多个字符串、字符、整数和浮点数等类型的数据连成一个更大的字符串。

使用连接运算符

“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用“+”运算符连接字符串和 int 型(或 double 型)数据时,“+”将 int(或 double)型数据自动转换成 String 类型。

int i=10;
String helloWorld="Hello World 第"+i+"次出现在文章中";

使用 concat() 方法

String 类的 concat() 方法实现了将一个字符串连接到另一个字符串的后面。

String hello = "Hello";
String world = "World";
String helloWorld = hello.concat(world);

获取字符串长度

使用 String 类的 length() 方法

String hello = "Hello World";
System.out.println(hello.length());//输出11

转换大小写

toLowerCase() 方法可以将字符串中的所有字符全部转换成小写,toUpperCase() 则将字符串中的所有字符全部转换成大写,非字母的字符不受影响。

String helloWorld="Hello World";
System.out.println(helloWorld.toLowerCase()); //输出:helloworld
System.out.println(helloWorld.toUpperCase()); //输出:HELLOWORLD

去除空格

使用 String 类提供的 trim() 方法去掉首尾空格

String hello=" hello ";
System.out.println(hello.trim());//去掉首尾空格后hello

字符串截取

String 类的 substring() 方法用于对字符串进行提取,该方法主要有两种重载形式。

substring(int beginIndex)

从索引位置开始至结尾处的字符串部分。调用时,括号中是需要提取字符串的开始位置,方法的返回值是提取的字符串。

String helloWorld="Hello World";
String world=helloWorld.substring(6);
System.out.println(world); //输出:World

substring(int beginIndex,int endIndex)

beginIndex 表示截取的起始索引,截取的字符串中包括起始索引对应的字符;endIndex 表示结束索引,截取的字符串中不包括结束索引对应的字符,对于开始位置 beginIndex, Java 是基于字符串的首字符索引为 0 处理的,但是对于结束位置 endIndex,Java 是基于字符串的首字符索引为 1 来处理的

String helloWorld="Hello World";
System.out.println(helloWorld.substring(2,10));//输出 llo Worl

分割字符串

String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。str.split(String sign)与str.split(String sign,int limit),str 为需要分割的目标字符串;sign 为指定的分割符,可以是任意字符串;limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。

String color="Red,Black,White,Yellow";
String[] arr1=color.split(",");//不限制元素个数
//arr1为
//Red
//Black
//White
//Yellow
String[] arr2=Colors.split(",",3); //限制元素个数为3
//arr2为
//Red
//Black
//White,Yellow

字符串的替换

String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()

replace()

replace(String oldChar, String newChar) 方法用于将目标字符串中的指定字符(串)替换成新的字符(串)

String helloWorld="Hello Java";
System.out.println(words.replace("Java","World"));//输出Hello World

replaceFirst()

replaceFirst(String regex, String replacement) 方法用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串

String words="hello java,hello php";
System.out.println(words.replaceFirst("hello","你好 ")); //输出:你好 java,hello php

replaceAll()

replaceAll(String regex, String replacement) 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串

String words="hello java,hello php";
System.out.println(words.replaceAll("hello","你好 ")); //输出:你好 java,你好 php

字符串的比较

比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法

equals()

equals() 方法将逐个地比较两个字符串的每个字符是否相同。对于字符的大小写,也在检查的范围之内。

String a="a";
String b="b";
System.out.println(a.equals(b)); //输出 false

equalsIgnoreCase()

equalsIgnoreCase() 方法的作用和语法与 equals() 方法完全相同,唯一不同的是 equalsIgnoreCase() 比较时不区分大小写

String a="ab";
String b="AB";
System.out.println(a.equals(b)); //输出 true

compareTo()

compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值。

String upperA="A";
String lowerA="a";
System.out.println(upperA.compareTo(lowerA)); //输出为-32

查找字符串

字符串查找分为两种形式:一种是在字符串中获取匹配字符(串)的索引值,另一种是在字符串中获取指定索引位置的字符。分别有三个方法indexOf()、lastlndexOf()和charAt()

indexOf()

indexOf() 方法用于返回字符(串)在指 定字符串中首次出现的索引位置,如果能找到,则返回索引值,否则返回 -1。

str.indexOf(value)
str.indexOf(value,int fromIndex)

str 表示指定字符串;value 表示待查找的字符(串);fromIndex 表示查找时的起始索引,如果不指定 fromIndex,则默认从指定字符串中的开始位置(即 fromIndex 默认为 0)开始查找。

String helloWorld="Hello Java";
int size=s.indexOf('v'); //size的结果为8

lastlndexOf()

lastIndexOf() 方法用于返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1。

str.lastIndexOf(value)
str.lastlndexOf(value, int fromIndex)

lastIndexOf() 方法的查找策略是从右往左查找,如果不指定起始索引,则默认从字符串的末尾开始查找。

String words="today,monday,Sunday";
System.out.println(words.lastIndexOf("day"));//输出16

charAt()

charAt() 方法可以在字符串内根据指定的索引查找字符

String words="today,monday,sunday";
System.out.println(words.charAt(0)); //结果:t

StringBuffer类

除了通过 String 类创建和处理字符串之外,还可以使用 StringBuffer 类来处理字符串。StringBuffer 类可以比 String 类更高效地处理字符串。StringBuffer 类是可变字符串类,创建 StringBuffer 类的对象后可以随意修改字符串的内容。每个 StringBuffer 类的对象都能够存储指定容量的字符串,如果字符串的长度超过了 StringBuffer 类对象的容量,则该对象的容量会自动扩大。

创建 StringBuffer

StringBuffer 类提供了 3 个构造方法来创建一个字符串

StringBuffer() 构造一个空的字符串缓冲区,并且初始化为 16 个字符的容量。

StringBuffer(int length) 创建一个空的字符串缓冲区,并且初始化为指定长度 length 的容量。

StringBuffer(String str) 创建一个字符串缓冲区,并将其内容初始化为指定的字符串内容 str,字符串缓冲区的初始容量为 16 加上字符串 str 的长度。

StringBuffer str1=new StringBuffer();//定义一个空的字符串缓冲区,含有16个字符的容量
StringBuffer str2=new StringBuffer(10);//定义一个含有10个字符容量的字符串缓冲区
StringBuffer str3=new StringBuffer("HelloWorld");//定义一个含有(16+4)的字符串缓冲区,"HelloWorld"为10个字符

追加字符串

StringBuffer 类的 append() 方法用于向原有 StringBuffer 对象中追加字符串。追加内容到当前 StringBuffer 对象的末尾,类似于字符串的连接。

StringBuffer buffer=new StringBuffer("hello,");    //创建一个 StringBuffer 对象
String str="World!";
buffer.append(str); //向 StringBuffer 对象追加 str 字符串
System.out.println(buffer.substring(0)); //输出:Hello,World!

替换字符

StringBuffer 类的 setCharAt() 方法用于在字符串的指定索引位置替换一个字符。StringBuffer 对象.setCharAt(int index, char ch);

StringBuffer sb=new StringBuffer(“hello");
sb.setCharAt(1,'E');
System.out.println(sb); //输出:hEllo

反转字符串

StringBuffer 类中的 reverse() 方法用于将字符串序列用其反转的形式取代。StringBuffer 对象.reverse();

StringBuffer sb=new StringBuffer("java");
sb.reverse();
System.out.println(sb); //输出:avaj

删除字符串

StringBuffer 类提供了 deleteCharAt() 和 delete() 两个删除字符串的方法

deleteCharAt()

deleteCharAt() 方法用于移除序列中指定位置的字符,StringBuffer 对象.deleteCharAt(int index);

StringBuffer sb=new StringBuffer("She");
sb.deleteCharAt(2);
System.out.println(sb); //输出:Se

delete()

delete() 方法用于移除序列中子字符串的字符,StringBuffer 对象.delete(int start,int end);start 表示要删除字符的起始索引值(包括索引值所对应的字符),end 表示要删除字符串的结束索引值(不包括索引值所对应的字符)。

StringBuffer sb=new StringBuffer("hello jack");
sb.delete(2,5);
System.out.println(sb); //输出:he jack

Java入门教程四(字符串处理)的更多相关文章

  1. 无废话ExtJs 入门教程四[表单:FormPanel]

    无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...

  2. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

  3. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  4. RabbitMQ入门教程(四):工作队列(Work Queues)

    原文:RabbitMQ入门教程(四):工作队列(Work Queues) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:/ ...

  5. JasperReports入门教程(四):多数据源

    JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...

  6. Java入门教程总目录

    Java入门教程总目录 持续更新中... 1.Java常识汇总 2.Java框架对比 3.Java技术路线 4.Java编码规范 5.Java环境变量配置 6.枚举 7.操作符 12.定时任务

  7. (一)Java 入门教程

    Java 入门教程 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统 ...

  8. Java 入门教程

    Java 入门教程 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统 ...

  9. CTF必备技能丨Linux Pwn入门教程——格式化字符串漏洞

    Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...

随机推荐

  1. Linux基础篇七:Linux的命令执行

    首选区分内置命令和外置命令: 内置命令:shell程序自带的命令,系统内核一启动就可以使用的命令 外置命令:在系统PATH变量路径下的命令 如何查看一个命令是内置命令还是外置命令: type -a c ...

  2. Python的lambda学习

    lambda可以简化简单循环,如下: def fc1(x): return x + 10 print "fc1(23) = ", fc1(23) y = lambda x: x+1 ...

  3. 创想变现:斯坦福设计创新课堂ME310分享(上篇)

    编者按:今年6月,微软亚洲研究院人机交互组研究员顾嘉唯,在美国斯坦福大学担任了d-School的ME310设计课程的项目评审.该课程是斯坦福大学的全球联合新产品设计创新课程,学习方式以小组为单位,每个 ...

  4. 好久不见,Java设计模式

    引子 设计模式是很多程序员总结出来的最佳实践.曾经在刚开始写项目的时候学习过设计模式,在开发过程中,也主动或者被动的使用过.现在写代码虽说不会特意明确在用哪种设计模式,但潜移默化的写出来公认的最佳实践 ...

  5. 分布式消息队列Apache Pulsar

    Pulsar简介 Apache Pulsar是一个企业级的分布式消息系统,最初由Yahoo开发并在2016年开源,目前正在Apache基金会下孵化.Plusar已经在Yahoo的生产环境使用了三年多, ...

  6. CMOS

    CMOS是Complementary Metal Oxide Semiconductor(互补金属氧化物半导体)的缩写.它是指制造大规模集成电路芯片用的一种技术或用这种技术制造出来的芯片,是电脑主板上 ...

  7. python语法基础-基础-控制语句

    ###############    if条件控制语句    ############### # 以下实例 x 为 0-99 取一个数,y 为 0-199 取一个数,如果 x>y 则输出 x,如 ...

  8. Windows 10操作系统针对不同环境下的安装方法

    一.电脑系统能正常运行 1.解压win10镜像文件 到电脑的非系统分区,运行setup安装文件 2.点击setup应用程序,准备安装 3.准备安装 4.等待安装过程结束,重启即可. 二.光盘安装 1. ...

  9. [LC] 71. Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the ca ...

  10. 89)PHP,跳转练习(1)

    首先是需要两个简单的文件: 目录关系是: 我的beifen.php代码展示,这个先执行: <?php header('Location:b.php'); b.php代码展示: <?php ...