剑客
关注科技互联网

第 7 单元:字符串和运算符

开始之前

本单元是 “Java 编程入门” 学习路径的一部分。尽管各单元中讨论的概念具有独立性,但实践组件是在您学习各单元的过程中逐步建立起来的,推荐您在继续学习之前复习 前提条件、设置和单元细节

单元目标

  • 了解实例化 String
    对象和设置其值的多种方法
  • 了解字符串串联和方法链
  • 熟悉 Java 语言的算术运算符

字符串

在 C 语言中,处理字符串需要大量精力,因为它们是您必须操作的 8 位字符组成的以 null 结尾的数组。(在字符串方面,与 C 语言最接近的 Java 代码是 char
原语数据类型,它可以包含单个 Unicode 字符,比如 a
。)

目前为止,您已经遇到过多种类型的 String
。在 Java 语言中,字符串是 String
类型的一级对象,包含可帮助您处理它们的方法。

以下是两种创建字符串的方法,我们以创建一个名为 greeting
且值为 hello
String
实例为例:

greeting = new String("hello");
String greeting = "hello";

因为 String
是一级对象,所以可以使用 new
实例化它们。将一个 String
类型的变量设置为字符串字面常量具有相同的结果,因为 Java 语言会创建一个 String
对象来持有该字面常量,然后将该对象分配给该实例变量。

串联字符串

可以使用 String
完成许多事情,该类有许多很有帮助的方法。甚至还没有使用方法,您就已经在 Person
类的 testPerson()
方法中通过串联或组合两个 String
完成了一些有趣的事情:

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(如有必要,请参阅第 5 单元)。然后删除 setName()
getName()
方法,添加一个新的 getFullName()
方法,使代码类似于:

public String getFullName() {
  return getFirstName().concat(" ").concat(getLastName());
}

此代码演示了方法调用
。调用链是一种经常用于不可变对象(比如 String
)的技术,在调用链中,修改一个不可变对象始终会返回修改的对象(但不会更改原始对象)。然后处理返回的已更改的值。

运算符

您可能已经看到,Java 语言使用 =
预算法将值赋给变量。正如您可能想到的,Java 语言可执行算术运算,而且它也使用运算符实现此目的。现在我将简要介绍一下您随着技能的提升需要使用的一些 Java 语言运算符。

Java 语言使用两种类型的运算符:

  • 一元
    :仅需要一个操作数。
  • 二元
    :需要两个操作数。

表 1 总结了 Java 语言的算术运算符:

表 1. Java 语言的算术运算符

运算符 用法 描述
+ a + b a
b
相加
+ +a 如果 a
byte
short
char
,则将它升级为 int
- a - b a
中减去 b
- -a a
的算术负数
* a * b a
b
相乘
/ a / b a
除以 b
% a % b 返回将 a
除以 b
的余数(模运算符)
++ a++ a
递增 1;计算递增之前 a
的值
++ ++a a
递增 1;计算递增之后 a
的值
-- a-- a
递减 1;计算递减之前 a
的值
-- --a a
递减 1;计算递减之后 a
的值
+= a += b a = a + b
的简写
-= a -= b a = a - b
的简写
*= a *= b a = a * b
的简写
%= a %= b a = a % b
的简写

其他运算符

除了表 1 中的运算符,我们还了解了其他一些在 Java 语言中称为运算符的符号,包括:

  • 句点 ( .
    ),它限定包的名称并调用方法
  • 圆括号 ( ()
    ),它限定一个方法的逗号分隔的参数列表
  • new
    ,(后跟一个构造方法名称时)它实例化一个对象

Java 语言语法还包含一些专门用于条件编程的运算符 — 即用于根据不同输入做出不同响应的程序。下一单元将介绍这些运算符。

进一步探索

Java 教程:字符串

Android API 参考指南:字符串

Allen B. Downey 和 Chris Mayfield 合著的
Java 编程思想

(参阅第 9 章 “字符串等实体”)

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址