主要涉及在程序运行初始化之后不能改变的字符串类String和字符串内容可以动态改变的类StringBuffer,以及用于字符串转换词法分析类StringTokenizer;同时还将介绍字符串和其他数据类型之间的相互转换。

Java中将字符串作为对象来处理,在对象中封装了一系列方法来进行字符串处理。

String类

String位于java.lang包中,因此在程序中不需要使用import语句就可以用String来实例化对象。String类主要用来处理程序初始化后不能改变的字符串。

字符串的构造

字符串常量是用双引号分隔的一系列java合法字符。在用赋值运算符进行字符串初始化时,JVM自动为每个字符串生成一个String类实例。字符串声明格式如下:

String s;

创建字符串可以使用String类的构造方法。

s=new String("xjtu");

也可以写成:

s="xjtu";

声明和实例化对象可以一步完成。

利用String类提供的构造方法,可以生成空的字符串或者其他基本数据类型生成字符串对象。

(1)利用下面的方法可以生成空的String实例。

String str=new String();

(2)在String类提供的构造方法中,可以由字符数组、字节数组以及字符串缓冲区来构造字符串,如下所示:

char c1[]={'1','2','3','4'};

char c2[]={'1','2','3','4','5'};

String str1=new String(c1);

String str2=new String(c2,0,3);

System.out.print(str1);

System.out.print(str1);

结果:"1234"

(3)利用字节数组生成字符串:

byte c1[]={66,67,68};

byte c2[]={65,66,67,68};

String str1=new String(c1);

String str2=new String(c2,1,3);

System.out.print(str1);

System.out.print(str1);

结果均是BCD

String类的常用方法

String类提供了length(),charAt(),indexOf(),lastIndexOf(),getChars(),getBytes(),toCharArray()等方法。这些方法中按照用途分为字符串长度计算、字符串比较、字符串检索、字符串的截取、替换等方法。

字符串长度计算

使用String类中的方法length()方法可以获取一个字符串的长度。定义如下:

public int length()

该方法返回字符串的16-bit的Unicode字符的数量。例如:

String s="xjtu";

s.length()为4

字符串比较

字符串比较的方法有equals()、equalsIgnoreCase()、startsWith()、endsWith()、regionMatches()、compareTo()、compareToIgnoreCase()等方法。

1)equals()和equalsIgnoreCase()方法

equals()定义:

public boolean equals(String s)

该方法用于比较当前字符串对象的实体是否与参数指定的字符串s的实体相同。注意String类中的equals()方法和"=="的区别。

equalsIgnoreCase()定义:

public boolean equalsIgnoreCase(String s)

字符串对象调用调用equalsIgnoreCase(String s)来比较当前对象是否与参数指定的字符串s相同,比较时忽略大小写。

2)startsWith()和endsWith()方法

字符串对象调用startsWith()和endsWith()方法分别判断当前字符串对象的前缀和后缀是否是参数指定的字符串s。

定义:

public boolean startsWith(String s)和public boolean endsWith(String s);

例如:

String str1="20150418";

String str2="20140418";

str1.startsWith("2015")的值是true;

str2.endsWith("0418")的值是true;

3)regionMatches()方法

声明格式如下:

public boolean regionMatches(int firstStart,String other,int otherStart,int length)和public boolean regionMatches(boolean b,int firstStart,String other,int otherStart,int length)

从当前指定的字符串参数firstStart指定的位置开始处,取长度为length的一个子串,并将这个子串与参数other指定的一个子串进行比较。其中other指定的子串是是从参数otherStart指定的位置开始,从other中取长度为length的一个子串。如果两个子串相同就返回true,否则false。

4)compareTo()和compareToIgnoreCase()方法

声明格式:

public int compareTo(String s)

public int compareToIgnoreCase(String s)

compareTo()方法按照字典顺序与参数s指定的字符串比较大小。如果当前字符串与s相同则返回0;如果如果大于s则返回正值,小于s返回负值。注意小写字母大于大写字母,而compareToIgnoreCase()方法忽略大小写。

字符串检索

搜索指定字符或字符串在字符串中出现的位置,用于字符或字符串在字符串中的定位。方法声明格式如下:

public int indexOf(int ch)

public int indexOf(int ch,int fromIndex)

public int indexOf(String str)

public int indexOf(String str,int fromIndex)

上述四个重载方法分别用于在字符串中定位指定的字符和字符串,并且在方法种可以通过fromIndex来指定匹配的起始地址。如果没有检索到字符或字符串,该方法返回值是-1。

String s="xjtuxjtu";

int i;

i=s.indexOf('x');//0

i=s.indexOf("xjtu",0);//0

i=s.indexOf('xjtu',4);//4

另外,String类还提供字符串中的最后位置的定位,方法声明格式如下:

public int lastIndexOf(int ch)

public int lastIndexOf(int ch,int fromIndex)

public int lastIndexOf(String str)

public int lastIndexOf(String str,int fromIndex)

上述4个重载方法分别用于在字符串中定位定位指定的字符和字符串最后出现的位置,并且在上述方法中可以通过fromIndex来指定匹配的起始位置。如果没有检索到字符或字符串,该方法返回值是-1。

字符串截取

在字符串中截取子字符串,其声明格式:

public String substring(int beginIndex)

该方法将获得一个当前字符串的子串,该子串是从当前字符串的beginIndex处截取到最后所得到的字符串。

public String substring(int beginIndex,int endIndex)

该方法将获得一个当前字符串的子串,该子串是从当前字符串的beginIndex处截取到endIndex-1结束处所得到的字符串。

字符串的替换

public String replace(char oldChar,char newChar)

字符串对象s调用该方法可以获得一个串对象,这个串对象是用参数newChar指定的字符替换s中的oldChar指定对所有的字符而得到的字符串。

public String replace(String old,String new)

字符串对象s调用该方法可以获得一个串对象,这个串对象是用参数new指定的字符串替换s中的old指定对所有的字符串而得到的字符串。

String s="xjtuxjtu";
System.out.println(s.replace('x','s'));//sjtusjtu

System.out.println(s.replace("xjtu","Tsinghua"));//TsinghuaTsinghua

public String trim()

一个字符串s通过调用方法trim()得到一个字符串对象,该字符串对象是s去掉前后空格后的字符串。

其他的一些方法

1)字符串大小写转换

声明格式如下:

public String toUpperCase(Local local)//仅对指定位置转换

public String toUpperCase()

public String toLowerCase(Local local)// 仅对指定位置转换

public String toLowerCase()

2)转换为字符串数组

声明格式如下:

public char[] toCharArray()

该方法用于将字符串转换为字符串数组。该方法的返回值类型为字符数组,如下

String str=new String("I love xjtu");

char[] ch;

ch=str.toCharArray();

System.out.print(ch);//I love xjtu

3)字符串到字符数组之间的转换

声明格式:

getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

该方法用于将字符串中的字符内容复制到字符数组中。其中srcBegin为复制的起始位置,srcEnd-1为复制的终止位置、字符串数值dst为目的字符数组,dstBegin为目的字符数组的复制的起始位置。复制的时候会覆盖原来位置数据。

4)连接两个字符串

声明格式如下:

public String concat(String str)

该方法用于将两个字符串连接在一起,与字符串的"+" 操作符功能相同。

转载于:https://www.cnblogs.com/weink1215/p/4436969.html

字符串之String类相关推荐

  1. 全面深入介绍C++字符串:string类

    http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...

  2. 7-3-1 String 学号解析7-3-2 sort 字符串排序--string类的使用

    7-3-1 String 学号解析 川师的学号的某些位有特殊的含义,如从2016110101中可以看出该学生为2016级,就读于11系,班级为1班.根据输入的学号,利用程序进行解析,输出对应的信息. ...

  3. C++ 字符串(string类)

    概述:对于字符串在C++中的表现我们可以使用两种方式.其一,使用字符数组的形式,这种风格是C语言形式的.其二,就是使用string类来表示字符串.下面我们分别看一下这两种形式: 一.字符数组: 比如下 ...

  4. 字符串(string类)

    [1]String类基本函数如何实现? 示例代码如下: 1 #include<iostream> 2 #include<assert.h> 3 #include<stri ...

  5. 学习-Java字符串之String类常用方法之字符串长度

    任务描述 本关任务:接收输入值(字符串),将该字符串反转输出,例如接收字符串"abc",输出"cba". 相关知识 为了完成本关任务,你需要掌握:字符串常用方法 ...

  6. 练习-Java字符串之String类常用方法之文件名与邮箱验证

    任务描述 本关任务:分别判断 Java 文件名与邮箱格式是否正确. 其中:合法的文件名应该以 .java 结尾(如 Test.java 正确,Test.txt 不正确):合法的邮箱名中至少要包含 @ ...

  7. 练习-Java字符串之String类常用方法之花名册

    任务描述 本关任务:接收给定的两行字符串,分别代表两份不同的花名册,请你输出两份花名册的长度各是多少,以及它们是否相同. import java.util.Scanner; public class ...

  8. C++ 笔记(22)— STL string 类(字符串赋值、访问、拼接、查找、翻转、大小写转换)

    1. 实例化和赋值 STL string #include <string> #include <iostream>int main () {using namespace s ...

  9. 字符串相关的类String

    String类 一.String类概述 二.String类的使用 1. 不可变性的体现 2. 对象的创建的两种方式及存储结构 2. 两种不同的连接方式的对比 三.String类和其他类的转换 1. 和 ...

最新文章

  1. SP5971 LCMSUM - LCM Sum(莫比乌斯反演 ,推柿子,经典)
  2. 技术解析系列 | PouchContainer CRI的设计与实现
  3. docker commit 命令
  4. android 4.2 判断桌面快捷,Android 判断桌面是否快捷方式,不存在则创建
  5. C#编写程序操作数据库如何防止SQL注入漏洞的发生
  6. WPF学习之路(十一)布局
  7. tracker服务器php,FastDFS-5.05 tracker服务器安装nginx+php
  8. 可用子网数要不要减2_详解IP地址、子网掩码、网络号、主机号、网络地址、主机地址...
  9. 程序员经常遇见的9大困难你造么?
  10. 麦克风阵列的同步性、一致性、峰值幅度、RMS、DC偏移
  11. 计算机北桥芯片结构图,电脑主板芯片维修教程第一节:电脑主板你是否真的认识...
  12. win10系统进行电脑分盘
  13. gorm的Related和Association的区别
  14. 报考PMP证书要花多少钱
  15. 三年级计算机绘画第二课堂教案,美术第二课堂计划讲解.docx
  16. itop启动mysql_使用iTOP进行CMDB资产管理
  17. 百余署名AI论文被爆抄袭 智源现已致歉
  18. Java IO源码分析(四)——PrintStream
  19. 计算机网络信息安全管理办法,计算机网络信息安全管理实施细则.doc
  20. Java中利用企业QQ邮箱发送邮件

热门文章

  1. 第一行代码 Android (郭霖 著)
  2. Sharding-JDBC 1.5.0.M1 正式发布,全新的 SQL 解析引擎
  3. Atlas读写分离Mysql集群的搭建
  4. JAVA中String类
  5. SYS_数据访问权限Operation Unit和Ledger的访问设定(案例)
  6. Java数组学习笔记(遍历、排序、多维数组、命令行参数)
  7. MIT自适应律MRAC的理解和MATLAB实现
  8. axios post object object_Vue前端开发——数据交互axios
  9. Linux——RHCE试题与答案详解
  10. Linux Ubuntu 18.04安装JDK、Hadoop、Hbase以及图形界面