String的匿名对象

记住字符串常量是String类的匿名对象(没有名字,这个对象的地址在栈中不存在)。

···在任何语言的底层上面都不可能会提供有直接的字符串类型,现在的字符串只是高级语言提供给用户方便开发的支持而已。而他本身存的也不是字符串。所以在java中本身也没有提供字符串常量的概念,所有使用“”定义的内容本质上来讲都是String类的一个匿名对象。

观察字符串操作
String的匿名对象

类所有的对象都可以操作类的方法,所以从这里“hello”操作equals()方法可以看出,“hello”是Stirng类的匿名对象,这里出现的“String str=“hello” ,本质上就是将一个匿名的String类对象数值为有名字,而且匿名对象一定保存在堆内存之中。

提醒:在日后的开发过程之中如果要判断用户输入的字符串是否等同于指定的字符串,那么一定要将字符串写在前面。

···操作方法一

用户输入值了:
String的匿名对象

用户没有输入值:

String的匿名对象

在进行数据接受的时候必须要考虑用户没有输入数据的情况,如果以用户没有输入为例若使用将被比较的字符串放在后面的话会出现”空指针“异常(因为声明的引用没有指向对象所以不能调用对象(或类)的方法执行),反之因为所有的字符串常量都是String的匿名”对象“,所以他是可以调用对象(或类)的方法执行的。

就记住在使用equals()方法进行字符串变量与常量比较时,常量在前变量在后。