zoukankan      html  css  js  c++  java
  • [Java]第一章-数据类型

    一、基本的数据类型

    • byte
    • int 4
    • short 2
    • long 8
    • float 4
    • double 8
    • char 2
    • boolean
      booleans是没有初始化,JVM编译的时候将其转化成int,JVM支持boolean,但是通过读写byte数组实现的

    二、包装类型

    Integer x=2;        //此处装箱操作,Integer.valueOf
    int y=x;              //此处拆箱操作,intvalue
    
    1. 封装类和封装类==比较相等的时候比较的是:是否引用同一个对象,即缓存池里查找。
    2. 基本类型和基本类型比较的时候,比较的是:值。
    3. 封装类和基本类型比较的时候:将封装类先进行拆箱,再比较。
    4. equals是等价比较,对于基本类型不可使用,因此会先将其包装成封装类再比较。
    5. equals比较的是引用对象的值是否相等。
    6. 对于封装类+封装类这一类的操作,会将其拆箱后再进行运算。

    三、==和equals的比较

    public static void main(String[] args){
            Integer a=1;
            Integer b=2;
            Integer c=3;
            Integer d=3;
            Integer e=300;
            Integer f=300;
            Long g=3L;
            Long h=2L;
            System.out.println(c==d);//t
            System.out.println(e==f);//f
            System.out.println(c==(a+b));//t
            System.out.println(c.equals(a+b));//t
            System.out.println(g==(a+b));//t
            System.out.println(g==(a+h));//t
            System.out.println(g.equals(c));//f
            System.out.println(g.equals(a+h));//t
        }
    1. 比较的是引用对象,由于3在缓存池中所以T
    2. 比较的是引用对象,因为Integer的缓存池大小-128—127,所以F
    3. 右边拆箱,所以左边也拆箱,比较值。T
    4. 右边先拆箱相加,再装箱,比较值。T
    5. 右边拆箱,左边拆箱,比值。
    6. 同上,比值T
    7. 两个封装类型不同,所以比值也是F
    8. 右边拆箱相加变long,再装箱和左边封装类型相同所以T

    四、缓存池

    new Integer(123)
    

    是创建一个新对象,创建在堆中。

    Integer.valueOf(123)
    

    装箱,会先到缓存池中寻找,如果缓存池没有,就new一个新对象放进去,池子里只有一份相同字面量。
    缓存池可以结合字符串常量池一起理解。

  • 相关阅读:
    给列表项标记添加自定义图像
    双飞翼布局与圣杯布局
    CSS3 calc()
    CSS滚动视差
    应用层层面面试题汇总
    Linux下OpenSSL 安装
    深入理解:Android 编译系统
    ios 好去处
    IBOutlet & IBAction
    ar技术序章-SDK介绍和选择
  • 原文地址:https://www.cnblogs.com/k-will/p/12687987.html
Copyright © 2011-2022 走看看