码迷,mamicode.com
首页 > 其他好文 > 详细

GC Object

时间:2016-08-21 00:42:56      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

GC:  垃圾回收机制

  java中的垃圾回收  不需要开发人员手动地清理   jvm虚拟机会不定时清理垃圾
  
  垃圾: 指在堆内存中没有任何的引用对象
  
  System.gc();  可以建议虚拟机进行清理 
  
  
Object:

  基本数据类型的包装类: 包装类有自己的方法和属性
   byte     Byte
   short     Short
   int       Integer
   long       Long
    
   float      Float
   double    Double
    
   char      Character
    
   boolean   Boolean
   
   hashCode() ; 哈希码 表示的是  通过一系列的计算 对象在内存中的地址
       哈希码不是严格意义上的地址,而是通过地址计算出的值
       
       
   自动装箱 拆箱:  1.5以后的新特性   基本数据类型和包装类之间的转换

    自动装箱:  Integer n1=100;  //基本数据类型 自动转换成包装类
       底层:  调用了Integer的valueof方法  Integer n1=Integer.Valueof(100);
       
    拆箱:  Integer n2=n1; 自动拆箱  把包装类转换成基本数据类型
    
    
   Integer要特别注意他的缓存问题: 如果数不在[-128,127]之间 那么就自动new一个Integer对象   看源码

  测试代码:

public class Test {
    public static void main(String[] args) {
        Integer n1=20;
        Integer n2=20;
        System.out.println(n1==n2);
        
        Integer m1=200;
        Integer m2=200;
        System.out.println(m1==m2);
    }
}

  结果:

true
false

String:
   equals  如果没重写就是==
   
   string是重写了equals的  string里的equals比较的是值
   
   如果要比较对象要用==
   
   char 能否存储一个汉子?  能  在java中汉字由2个byte组成 正好占16位
   

  

public static void main(String[] args) {
        String s1=new String("abc");
        String s2="abc";
        String s3="abc";
   String s4="abcdf";
      String s5=s2+"df"; System.out.println(s1==s2); System.out.println(s2
==s3);
     System.out.println(s4==s5); }

结果:false  true false
  当使用+号拼接的时候其实是重新创建了一个对象         但是常量池中的值其实只有一份

技术分享

StringBuffer和StringBuilder
   StringBuffer是线程安全的
   StringBuilder是线程不安全的
   
   StringBuffer和StringBuilder是可变的字符序列(动态的)
   String是不可变的
   
   当系统中有很多拼接字符串行为时  用StringBuffer和StringBuilder 避免创建过多的String对象

 

GC Object

标签:

原文地址:http://www.cnblogs.com/cch-java/p/5791597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!