new String主要是为了别的data type转成String,例如byte[]StringBuffer/StringBuilder是因为String是immutable,只要多次操作后的最终结果,不需要中间结果时用的就只是少new几次,最终toString还是个new这跟好坏无关,需要不存在的String物件就是得new至于你说不new的大概是指"string",只是加载class时就已经建立好并intern,主要是内容事先已确定,跟执行期才知道内容所以不得不new是不同的,常数和变量的差别除非会建立大量由变量产生、但内容相同的String,不然不用去想intern↑建立持续存在内存,如果用完就要GC也不用intern了