
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
7.3 字符串常量

在程序中常量是不可被改变内容的统称,但是由于Java中的处理支持,所以可以直接使用“"”进行字符串常量的定义。而这种字符串的常量,严格意义上来讲是String类的匿名对象。
范例:观察字符串匿名对象


本程序的最大特点在于直接利用字符串"mldn"调用了equals()方法("mldn".equals(str)),由于equals()方法是String类中定义的,而类中的普通方法只有实例化对象才可以调用,那么就可以得出一个结论:字符串常量就是String类的匿名对象。而所谓的String类对象直接赋值的操作,实际上就相当于将一个匿名对象设置了一个名字而已,但是唯一的区别是,String类的匿名对象是由系统自动生成的,不再由用户自己直接创建,如图7-3所示。
提示:实际开发中的字符串比较操作。
在实际开发过程中,有可能会有这样的需求:由用户自己输入一个字符串,而后判断其是否与指定的内容相同,而这时用户可能不输入任何数据,即内容为null。
范例:观察问题

此时由于没有输入数据,所以input的内容为null,而null对象调用方法的结果将直接导致错误信息提示:NullPointerException,可以通过变更代码来帮助用户回避此问题。
范例:回避NullPointerException问题

此时的程序直接利用字符串常量来调用equals()方法,因为字符串常量是一个String类的匿名对象,所以该对象永远不可能是null,也就不会出现NullPointerException。特别需要提醒读者的是,实际上equals()方法内部也存在对null的检查,对这一点有兴趣的读者可以打开Java类的源代码来自行观察。

图7-3 String类对象直接赋值实例化