Logo

郎哥编程

Java字符串类型

2018-01-11 976

字符串是有限个字符的有序集合,前面讲的char类型用于表示和存储单个字符,字符串相当于多个字符的有序集合,用于表示和存储多个有序的字符序列。例如:“I want to learn Java programming”、“我要学Java编程”、“3+5=8”、“abc”等等。

四则运算器程序需要存储用户输入的计算表达式,计算表达式由多个字符组合而成,用前面所掌握的Java数据类型,不适合存储计算表达式。程序需要一个新的类型来存储计算表达式,这个新的类型就是字符串类型。

                                 

a037.png

           

图 5-14 四种不适合存储计算表达式

Java语言的字符串类型同前面介绍的Java基础类型不太一样,Java没有给字符串类型定义一个关键字,用于声明字符串类型,而是通过类的方式提供对字符串的操作和存储。在Java语言中,字符串类型被定义为类,类名为“String”,该类提供了多个构造方法和字符串操作方法,用于满足对字符串不同的处理要求。

String类的初始化

String类可用字符串常量对其初始化。例如:

String   szWelcome = “欢迎加入Java编程小组”;
String   szExpression = “3+5-3”;
String   szTemp = “abc”;

也可以调用其构造方法来进行,String类提供了多个构造方法对其初始化,下面列举了几个主要的构造方法:

(1)方法名称:String()

方法说明:构造一个空串(不包含任何字符)

方法示例:String   szWelcome = new String();

(2)方法名称:String(String original)

方法说明:用original内容初始化新创建的字符串

方法示例:

String   szTemp = “欢迎加入编程小组”;

String   szWelcome = new String(szTemp);

(3)方法名称:String(byte[] bytes))

方法说明:用字符数组(后面会讲解数组结构)初始化新创建的字符串

方法示例:

char   chTemp[] ={‘欢’,’迎’ ,’加’,’入’,’编’,’程’,’小’,’组’};

String  szWelcome = new String(chTemp);

示例1:String类的初始化

在D盘Java目录下,新建“StringInitSample.java”文件。用记事本打开“StringInitSample.java”文件,输入以下代码:

public  class  StringInitSample {
  public static void main(String args[])
  {
     //声明字符串变量,并用字符常量初始化
     String szWelcome = "欢迎加入编程小组";
     System.out.println(szWelcome);    
 
     //声明字符串变量,并用已声明的字符串初始化
     String szTemp = new String(szWelcome);
     System.out.println(szTemp);    
     //声明字符类型数组
     char   chTemp[]={'欢','迎','加','入','编','程','小','组'};
     //声明字符串变量,并用字符数组始化
     String szTest = new String(chTemp);
     System.out.println(szTest);    
  }
}

代码结构分析

程序功能主要是演示String类声明及初始化的使用。

程序使用了String类提供的三种不同的初始化方法。第一种方法是通过字符常量赋值初始化;第二种方法是通过new运算符(后面会讲解)实例化String类,并通过传入的字符串初始化;第三种方法是通过new运算符实例化String类,并以传入的字符型数组初始化。

编译“StringInitSample.java”文件,在命令行窗口输入“javac  StringInitSample.java”并执行命令,编译通过后,在命令行窗口输入“java  StringInitSample”运行Java程序,命令行窗口显示如下信息:

a038.png


图 5-15 String类初始化运行结果

从上述结果可以看出,用相同的内容对String类进行不同的初始化,虽然初始化方法不同,但其内容是相同的。

String类的方法

String类提供了多个方法,用于完成对字符串查找、替换、比较、连接、复制、分割等操作。下面列举了几个主要的操作方法,其它方法请参考Java  API:

(1)方法名称:charAt(int  index)

方法说明:返回由索引号指定的单个字符,索引是单个字符在字符序列的位置,String类的索引号从0开始。

方法示例:

String   szWelcome = “欢迎加入编程小组”;

//返回索引号为1的字符,当前应返回字符‘迎’

char   chTemp = szWelcome. charAt(1);

(2)方法名称:length()

方法说明:获取字符串的长度,String包含的字符的个数。

方法示例:

String   szWelcome = “欢迎加入编程小组”;

//返回字符串长度,当前返回数值8

int   nLength = szWelcome. length()

(3)方法名称:indexOf(int ch)

方法说明:查找字符串是否包含ch字符,返回字符的整型数值。若包含返回索引号,否则返回-1。

方法示例:

String   szWelcome = “欢迎加入编程小组”;

//查找字符’编’,当前返回4,索引号从0开始

int   nIndex = szWelcome. indexOf((int)‘编’)

//或

char  chTemp = ‘编’;

int   nIndex = szWelcome. indexOf((int) chTemp)

备注:

该方法还可以支持传入字符串类型以及从指定位置开始查找,详情请参考Java  API

(4)方法名称:equals(Object  anObject)

方法说明:比较两个字符串内容是否相同,若内容相同返回true,否则返回false。传入的参数Object类抽象了Java的所有类,也包括String类,在这里可以认为是String类。关于类及类的抽象、继承后面会讲述。

方法示例:

String   szWelcome1 = “欢迎加入编程小组”;

String   szWelcome2 = “欢迎加入Java编程小组”;

//比较szWelcome1和szWelcome2的内容是否相同,当前返回false

boolean  bEqual = szWelcome1. Equals(szWelcome2);

示例2:String类的查找及比较操作

在D盘Java目录下,新建“StringFindSample.java”文件。用记事本打开“StringFindSample.java”文件,输入以下代码:

public  class  StringFindSample {
  public static void main(String args[])
  {
     //声明三个字符串变量,并用字符常量初始化
     String szWelcome1 = "欢迎加入编程小组";
     String szWelcome2 = "欢迎加入Java编程小组";
     String szWelcome3 = "欢迎加入编程小组";
 
     //查找字符编是否在szWelcome1字符串中
     int nIndex = szWelcome1.indexOf('编');
     System.out.printf("查找的编位于szWelcome1字符串的第%d个位置\n",nIndex);    
     //输出字符串szWelcome1长度
     int nLength = szWelcome1.length();
     System.out.printf("szWelcome1字符串长度为:%d\n",nLength);    
 
     //比较szWelcome1和szWelcome2
     boolean bEqual = szWelcome1.equals(szWelcome2);
     System.out.printf("szWelcome1的内容和szWelcome2比较的结果为:%b\n",bEqual);    
     //比较szWelcome1和szWelcome3
     boolean bEqual2 = szWelcome1.equals(szWelcome3);
     System.out.printf("szWelcome1的内容和szWelcome3比较的结果为:%b\n",bEqual2);    
  }
}

代码结构分析

程序功能主要是演示String类的查找、获取长度、比较操作。

程序声明了三个String类变量,其中,szWelcome1和szWelcome3赋予相同的值,用于内容比较操作。

语句“int nIndex = szWelcome1.indexOf('编');”,声明了一个整型变量,用于接收查找方法indexOf返回的索引号,并通过printf方法格式化输出。

语句“int nLength = szWelcome1.length();”,声明了一个整型变量,用于接收length方法返回的字符串长度,并通过printf方法格式化输出。

语句“boolean bEqual = szWelcome1.equals(szWelcome2);”,声明了一个boolean型变量,用于接收equals方法返回的布尔值,并通过printf方法格式化输出。

编译“StringFindSample.java”文件,在命令行窗口输入“javac  StringFindSample.java”并执行命令,编译通过后,在命令行窗口输入“java  StringFindSample”运行Java程序,命令行窗口显示如下信息:

a039.png


图 5-16 String类查找等操作运行结果

 从上述结果可以看出,String类的length返回字符串包含的字符个数,indexOf返回字符所在字符串的索引位置,索引从0开始,因此查找字符‘编’时,返回索引4。

 知识点拨.png

 在实际编程中,Java的String类是使用频率非常高的类,需要深入理解和掌握,弄清楚String提供的各种操作方法和技巧。四则运算器解析计算表达式时,可以通过String的length方法获取字符串长度,然后循环遍历表达式的每个字符,并应用equals方法判断是数字还是运算符,并做相应的处理。

 


作业.png 

编写一个程序,要求获取用户输入的字符串,并输出字符串的长度。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论