/** * String pool in Kotlin (and Java) * Program constants are put into String pool * String objects are NOT */ fun main() { val aa = "aa"; val aaa = "aa"; val asb = StringBuffer() asb.append(aa); println("aaV===aaaV %b".format(aa === aaa)); // use === to get pointer equality val bb = asb.toString(); // or new String(asb) println("aaV===bbV %b".format(aa === bb)); // not the same pointer val cc = bb.intern(); println("aaV===ccV %b".format(aa === cc)); // same pointer!! val a5=aa+aaa val a55=aa+aaa println("a5V===a55V %b".format(a5 === a55)); }