在 Java 中,null字面量用来表示值的缺失。
Java 中的基本数据类型都有默认值,因此永远不可能是null。按照约定,它们以小写字母开头,例如int。
引用类型保存的是对象的内存地址,其值可以是null。它们通常以大写字母开头,例如String。
如果试图把null赋值给基本类型变量,就会导致编译时错误,因为该变量始终保存着其所属类型的基本类型值。
//Throws compile time error stating the required type is int, but null was provided
int number = null;
把null赋值给引用变量不会导致编译时错误,因为引用变量是可空的。
//No error will occur as the String variable str is nullable
String str = null;
在本练习中,你将编写代码,为工厂员工打印工牌。
员工有 ID、姓名和部门名称。员工工牌标签的格式如下:"[id] - name - DEPARTMENT"。
实现Badge.print()方法,返回员工的工牌标签:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
注意,标签上的部门名称应转换为大写。
由于计算机系统的一个古怪之处,新员工刚开始在工厂工作时,有时还没有 ID。
由于必须佩戴工牌,他们会收到一个不带 ID 前缀的临时工牌。修改Badge.print()方法,使其支持还没有 ID 的新员工:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
即使是工厂老板,也必须始终佩戴工牌。
不过,老板没有部门。在这种情况下,标签应打印"OWNER",而不是部门名称。
修改Badge.print()方法,为老板打印标签:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
注意,老板也可能是新员工:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"