说错了 我重说一遍 intern的作用是 判断当前字符串是否在常量池中? 1、在的话,就直接返回常量池地址 2、不在的话,直接返回当前字符串的地址。 你的str1样例:常量池中有javv 和 aa。但是没有javvaa所以 判断的时候两次返回的都是堆中javvaa的地址,结果为tr ue。 你的str2样例:同理也是true 但是!!!你在判断之前,又加入了str3使得常量池出现了javvaav。所以判断为false。 所以,str1执行正确。str2由于你加了别的因素,导致结果出现问题。