唐永康 发表于 2013-3-16 14:44
老实说,就你这句话String s = new String("678"); 是创建了两个对象,首先有一个new 关键字就表示创建了 ...
假设在最后一个所有线程都创建字符串前,前边的线程都还没死,且常量池中 的“678”未成垃圾被收回,那么个人认为是 线程个数+1个对象 个人认为是 如楼上所说 当第一个线程String str = “678”;的时候就也会创建对象,但这个字符串对象会放在常量池中,供以后访问同样的字符串时调用。 再有个线程来执行String str = “678”;语句时,由于常量池里已经有了 “678”这个字符串常量了,所以就不必在创建该对象,只需指向就行了 ,而String s = new String("678");是每个线程必须创建一次 放入堆内存中去的 所以 说是线程数+1次
个人见解 |