1700442460
1700442461
例如,我们写这样一段代码:new String(“abc”),该对象没有任何引用,对JVM来说就是个垃圾对象。JVM的垃圾回收器线程第一次扫描(扫描时间不确定,在系统不繁忙的时候执行)时把它贴上一个标签,说“你是可以被回收的”,第二次扫描时才真正地回收该对象,并释放内存空间,如果我们直接调用System.gc,则是在说“嗨,你,那个垃圾回收器过来检查一下有没有垃圾对象,回收一下”。瞧瞧看,程序主动招来了垃圾回收器,这意味着正在运行着的系统要让出资源,以供垃圾回收器执行,想想看吧,它会把所有的对象都检查一遍,然后处理掉那些垃圾对象。注意哦,是检查每个对象。
1700442462
1700442463
不要调用System.gc,即使经常出现内存溢出也不要调用,内存溢出是可分析的,是可以查找出原因的,GC可不是一个好招数!
1700442464
1700442465
1700442466
1700442467
1700442469
编写高质量代码:改善Java程序的151个建议 第4章 字符串
1700442470
1700442471
Although the world is full of suffering, it is full also of the overcoming of it.
1700442472
1700442473
虽然世界充满了苦难,但总是能战胜的。
1700442474
1700442475
——Hellen Keller(海伦·凯勒,美国作家)
1700442476
1700442477
在Class的班级里,Object班主任问道,“大家知道谁是我们班最受欢迎的同学吗?”
1700442478
1700442479
大家面面相觑,不解其意,既而交头接耳,窃窃私语,猛然间,所有的目光都投向了String同学,时光仿佛戛然而止,String诧异地左顾右盼,然后羞红了脸,慢慢地低下了头,同时右手缓缓地举起来,直至胳膊完全伸直,形成一个大大“1”字。
1700442480
1700442481
1700442482
1700442483
1700442485
编写高质量代码:改善Java程序的151个建议 建议52:推荐使用String直接量赋值
1700442486
1700442487
一般对象都是通过new关键字生成的,但是String还有第二种生成方式,也就是我们经常使用的直接声明方式,比如Str str=“a”,即是通过直接量“a”进行赋值的。对于String对象来说,这种方式是极力推荐的,但不建议使用new String(“a”)的方式赋值。为什么呢?我们来看一段程序:
1700442488
1700442489
public class Client{
1700442490
1700442491
public static void main(String[]args){
1700442492
1700442493
String str1=“中国”;
1700442494
1700442495
String str2=“中国”;
1700442496
1700442497
String str3=new String(“中国”);
1700442498
1700442499
String str4=str3.intern();
1700442500
1700442501
//两个直接量是否相等
1700442502
1700442503
boolean b1=(str1==str2);
1700442504
1700442505
//直接量和对象是否相等
1700442506
1700442507
boolean b2=(str1==str3);
1700442508
1700442509
//经过intern处理后的对象与直接量是否相等
[
上一页 ]
[ :1.70044246e+09 ]
[
下一页 ]