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一个新对象放进去,池子里只有一份相同字面量。
    缓存池可以结合字符串常量池一起理解。

  • 相关阅读:
    vue(5)
    vue(4)
    vue(3)-防止闪烁
    vue(2)
    bootstrap 模态框
    2017年上半年工作总结和计划
    vue(1)
    文本框数量加减功能
    meta 控制移动端页面的缩放
    题解 P1550 【[USACO08OCT]打井Watering Hole】
  • 原文地址:https://www.cnblogs.com/k-will/p/12687987.html
Copyright © 2011-2022 走看看