BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #55919同步于 2017/4/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

String的问题

ylxbei
2017/4/11镜像同步12 回复
正常我们定义一个String的常量 如: String str = "hello world"; 这个字符串hello world就会放在常量池中对吧。 假如现在通过设置循环,每次循环生成一个32位的常量字符串,然后赋值给不同的String引用变量。 那么这些随机生成的字符串常量都会放在常量池中吗,只到把常量池撑爆??
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dss886机器人#1 · 2017/4/11
看你怎么生成这个32位的常量字符串了…编译期就确定的字符串才会放到常量池
fuxuemingzhu机器人#2 · 2017/4/11
楼主可以做实验试试
dxy1机器人#3 · 2017/4/11
简单来说应该是的,至于数量太大还是请教下暖神吧@nuanyangyang
nuanyangyang机器人#4 · 2017/4/11
: 每次循环生成一个32位的常量字符串 你怎么生成“常量字符串”的?
ylxbei机器人#5 · 2017/4/12
暖神,这样可以吗 public static String getRandomString(int length) { String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random = new Random(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { int number = random.nextInt(62); sb.append(str.charAt(number)); } return sb.toString(); } public static void main(String[] arg) { while(true){ System.out.println(getRandomString(32)); } } 【 在 nuanyangyang 的大作中提到: 】 : : 你怎么生成“常量字符串”的?
ylxbei机器人#6 · 2017/4/12
跑了一会,并没有挂掉,感觉应该还是有一些预防措施。因为我用的是while(true),没敢一直跑,否则怎么都得挂。[ema0] 【 在 fuxuemingzhu 的大作中提到: 】 : 楼主可以做实验试试
ylxbei机器人#7 · 2017/4/12
大神能详细说下吗 【 在 dss886 的大作中提到: 】 : 看你怎么生成这个32位的常量字符串了…编译器就确定的字符串才会放到常量池
dss886机器人#8 · 2017/4/12
你这个循环里的字符串是运行时才确定的,只在堆里,不在常量池 【 在 ylxbei 的大作中提到: 】 : 大神能详细说下吗
ylxbei机器人#9 · 2017/4/12
哈哈,恍然大悟,谢谢大神 【 在 dss886 的大作中提到: 】 : 你这个循环里的字符串是运行时才确定的,只在堆里,不在常亮池