目前为止,教程中介绍了许多 String
类型的变量,但没有进行太多解释。您在这一节中会进一步了解字符串,还会了解何时和如何使用运算符。
字符串
在 C 语言中,处理字符串需要花费很大精力,因为字符串是以 null 结尾的数组,其中包含必须处理的 8 位字符。(在字符串方面,与 C 语言最接近的 Java 代码是 char
原语数据类型,它可以包含单个 Unicode 字符,比如 a。)
在 Java 语言中,字符串是 String
类型的一级对象,包含一些可帮助您处理它们的方法。
注意: 在 C 语言中,处理字符串需要花费很大精力,因为字符串是以 null 结尾的数组,其中包含必须处理的 8 位字符。在字符串方面,与 C 语言最接近的 Java 代码是 char 原语数据类型,它可以包含单个 Unicode 字符,比如 a。.
以下是两种创建字符串的方法,我们使用创建一个名为 greeting
且值为 hello
的 String
实例为例:
greeting = new String("hello");
String greeting = "hello";
因为 String
是一级对象,所以可使用 new
实例化它们。将一个 String
类型的变量设置为字符串字面常量具有相同的结果,因为 Java 语言会创建一个 String
对象来保存字面常量,然后将该对象分配给该实例变量。
串联字符串
可以使用 String
做许多事情,该类有许多很有帮助的方法。甚至还没有使用方法,您就已经通过串联(或组合)两个 String
,在 Person
类的 testPerson()
方法中做了一些有趣的事情:
l.info("Name: " + p.getName());
加号 (+
) 在 Java 语言中是串联 String
的简单表示。(在循环内执行这种串联会影响性能,但目前已不需要担心这一点。)
串联练习
现在,可以尝试在 Person
类内串联两个 String
字符串。此刻您有一个 name
实例变量,但有一个 firstName
和 lastName
会让应用程序更接近真实的业务应用程序。然后,您可以在另一个对象请求 Person
的全名时串联它们。
返回到 Eclipse 项目,首先添加新实例变量(放在源代码中目前定义 name
的相同位置):
//private String name;
private String firstName;
private String lastName;
注释掉 name
定义;您不再需要它,因为已将它替换为 firstName
和 lastName
。
链式方法调用
现在,告诉 Eclipse 代码生成器生成 firstName
和 lastName
的 getter 和 setter(如有必要,请参考前面的您的第一个 Java 类 部分)。然后删除 setName()
和 getName()
方法,添加一个新的 getFullName()
方法,使代码类似于:
public String getFullName() {
return getFirstName().concat(" ").concat(getLastName());
}
此代码演示了方法调用的 链接 。链接是一种经常用于不可变对象(比如 String
)的技术,在链接中,修改一个不可变对象总是返回修改后的对象(但不会更改原始对象)。然后,您可以在返回的已更改的值上进行操作。
运算符
您已看到,Java 语言使用 =
运算符将值赋给变量。正如您可能期望的,Java 语言可执行算术运算,而且它也使用运算符实现此目的。现在,我将简要介绍一下随着您技能的提升需要掌握的一些 Java 语言运算符。
Java 语言使用两种类型的运算符:
- 一元 (unary):只需一个操作数。
- 二元 (binary):需要两个操作数。
表 2 总结了 Java 语言的算术运算符: