论述题 4.  语句String s="Hello world!"声明了什么?
【正确答案】也许大部分人都会认为这个语句只是创建了一个字符串而己,这种回答不是非常准确。
   其实,对于String s="Hello world!"这条语句,要分以下两种情况来讨论:
   (1)在此之前没有定义过字符串常量“Hello world!”
   对于这种情况,这行代码其实做了两件事:一是在常量区创建了字符串“Hello world!”,二是声明了一个字符串对象的引用s,这个变量s引用的是常量区中的字符串常量“Hello world!”。这行代码可以等价为以下两行代码:
   String s;  //声明一个字符串对象的引用
   s="Hello world!";  //让s指向字符串常量“Hello world!”
   (2)在此之前已经定义过字符串常量“Hello world!”
   如果在执行这行代码之前,已经定义过字符串常量“Hello world!”,那么这行代码不会创建新的字符串,只创建一个字符串对象的引用s,让s指向常量区中已经存在的字符串常量“Hello world!”。
【答案解析】