字符串常量是String的匿名对象
在任何语言的底层上面都不可能辉提供有直接的字符串类型。现在的字符串只是高级语言提供给用户方便开发的支持而已。
所以在java里面本身也没有直接提供有字符串常量的概念,所有使用““””定义的内容本质上来讲都是String的匿名对象。
范例:观察字符串操作
public class StringDemo{
public static void main(String args[]){
String str="hello";
System.out.println(str.equals("hello"));
System.out.println("hello".equals(str));
}}
//ture
//ture
因为“hello”是String类的匿名对象所以它能调用类中的方法
那么在之前出现的“ String str="hello"; ”,本质上就是将一个匿名的String类对象设置有名字,而且匿名对象一定保存在堆内存之中
在日后的开发之后,如果要判断用户输入的字符串是否等同于指定的字符串,那么一定要将指定字符串写在前面
比较方法1:
public class StringDemo{
public static void main(String args[]){
String input =null;//由用户输入
System.out.println(input.equals("hello"));
}}
在进行输入数据接收的时候必须要考虑用户没有输入数据的问题,如果以上面的代码为例,用户真没有输入,则执行的时候一定会出现 NullPointerException 问题。
任何的字符串常量都是String的匿名独享,所以该对象永远不可能为null(空).
倒过来。
"hello",作为匿名对象是绝对不会内容为空的,即便传的是空,也不会报空值异常 最多报false
public class StringDemo{
public static void main(String args[]){
String input =null;//由用户输入
System.out.println(“hello”.equals(input));}}
//false
那么在以后进行比较的时候强烈建议如上写法,把字符串写在前面。