JAVA的基本程序设计结构(四)

本文详细介绍了Java中的字符串处理,包括字符串的创建、子串获取、字符串拼接、不可变性、字符串相等性检测以及空串与Null的区别。通过实例展示了如何使用`substring`、`equals`、`equalsIgnoreCase`方法,并强调了不可变性在内存共享上的优势。此外,还提到了`repeat`方法用于重复字符串以及`StringBuilder`用于高效构建字符串。
摘要由CSDN通过智能技术生成

一、字符串

从概念上讲,Java字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,很自然地叫做Sting。每个用双引号括起来的字符串都是String类的一个实例:
String e="";//空串
String s=“Hello”;

  1. 子串
    String类的subString方法可以从一个较大的字符串提取一个子串。
    例如:
    String a=“Hello”;
    String b=a.sbuString(0,3);创建一个由字符"Hel"组成的字符串。
    注释:Java字符串中的代码单元和代码点从0开始计数。
    subString方法的第二个参数是不想复制的第一个位置。
    上述subString中从0开始计数,直到3为止,但不包括3。subString的工作方式有一个优点:容易计算子串的长度。字符串a.subString(A,B)的长度为B-A。子串b的长度为3-0=3。

  2. 拼接字符串
    Java语言允许使用+号连接(拼接)两个字符串。
    String a=“Hello”;
    String b=“World”;
    String c=a+b;
    上述代码将"HelloWorld"赋给变量c(注意,单词之间没有空格,+号完全按照给定的次序将两个字符串拼接起来)。
    当将一个字符串与一个非字符串的值进行拼接时,后者会转换成字符串。
    例如:
    int age=18;
    String word=“xiaoming”+age;
    word为"xiaoming18"。
    这种特性通常用在输出语句中。
    例如:System.out.println(“nama is”+name);
    在Java11中,还提供了一个repeat方法:
    String repeated=“Java”.repeat(3);// repeated 为"JavaJavaJava"

  3. 不可变字符串
    String类没有提供修改字符串中某个字符的方法。
    如果想要修改字符串,可以提取想要保留的子串,再与希望替换的字符拼接。

    由于不能修改Java字符串中的单个字符,所以在Java文档中将String类对象称为是不可变的。如同数字3永远是数字3一样,字符串“Hello”永远包含字符H、e、l、l、和o的代码单元序列。你不能修改这些值,不过,可以修改字符串变量,让它引用另一个字符串,这就如同可以让原本存放3的数值变量改成存放4一样。
    不可变字符串有一个优点:编译器可以让字符串共享。
    可以想象将各种字符串存放在公共的存储池中,字符串变量指向存储池中相应的位置。如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。

  4. 检测字符串是否相等
    可以使用equals方法检测两个字符串是否相等。对于表达式:
    s.equals(t)
    如果字符串s与字符串t相等,则返回true;否则,返回false。
    需要注意的是,s与t可以是字符串变量,也可以是字符串字面量。
    例如,以下表达式是合法的:“Hell”.equals(“Hello!”)

    要想检测两个字符是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。、
    如:“Hello”.equalsIgnoreCase(”hello“)
    一定不要使用==运算符检测两个字符串是否相等!这个运算只能够确定两个字符串是否存放在同一位置上。当然,如果字符串在同一位置上,它们必然相等。但是,完全有可能将内容相同的多个字符串副本放置在不同的位置上。

  5. 空串与Null串
    空串”“是长度为0的字符串。
    可以调用以下代码检查一个字符串是否为空:
    if(str.length()==0) 或 if(str.equals(""))
    空串是一个Java对象,有自己串长度(0)和内容(空)。不过,String变量还可以存放一个特殊的值,名为null,表示目前没有任何对象与该变量关联。
    要检查一个字符串是否为null,要使用以下条件:
    if(str ==null)
    要检查一个字符串既不是null也不是空串,这种情况下就需要使用以下条件:
    if(str !=null && str.length!=0)

  6. 码点与代码单元
    Java字符串由char值序列组成。char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。最常用的Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
    length方法将返回采用UTF-16编码表示给定字符串所需要的代码单元数量。
    例如: String str=“Hello”;
    int n=str.length();//n=5

  7. String API
    Java中的String类包含了50多个方法。给出的API注释可以帮助你理解Java应用编程接口(API)。每个API的注释都以类名开始,如java.lang.String。类名之后是一个或多个方法的名字、解释和参数描述。

  8. 构建字符串
    如果需要用许多小段的字符串来构建一个字符串,首先构建一个空的字符串构建器:
    StringBulider builder=new StringBuilder();
    当每次需要添加一部分内容时,就调用append方法。
    builder.append(ch);
    builder.append(str);
    在字符串构建完成时就调用toString方法,将可以得到一个String对象,其中包含了构建器中的字符序列。
    String completedString=builder.toString();
    注释:
    StringBuilder类在Java5中引入。这个类的前身是StringBuffer,它的效率稍有些低,但允许采用多线程的方式添加或删除字符。如果所有字符串编辑操作都在单个线程中执行(通常都是这样),则应该使用StringBuilder。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清穷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值