• 一.基本数据类型和引用数据类型的区别


    一、基本数据类型:

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0

    short:短整型,在内存中占16位,即2个字节,取值范围-32768~32767,默认值0

    int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0

    long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L

    float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0

    double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0

    char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,默认值为空

    boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false

    二.类、接口类型、数组类型、枚举类型、注解类型。

    区别:

    基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

    引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

    三.String作为参数传递

            1.基本数据类型的值传递,不改变其值

             2.引用数据类型的值传递,改变其值

             3.String类虽然是引用数据类型,但它当做参数传递时和基本数据类型是一样的

          

     分析:当change方法执行完弹栈时,s(0x0022)值被当做垃圾回收消失,再输出s是0x0011地址的String类型值

    四.StringButter作为参数传递

    分析:StringButter传递的是引用对象sb的地址值,两个sb均在栈内存中,而都指向堆内存同一个new StringButter()[0x0011]

              故能改变字符串值

  • 相关阅读:
    退背包
    杜教筛BM
    Petya and Array CodeForces
    AC自动机模板
    KMP模板
    Docker系列器九:docker-compose与docker-compose.yml语法
    Fabric的简单Web应用
    ubuntu防火墙
    ubuntu16.04 HyperLedger Fabric 1.2.0 开发环境搭建
    crypto-config.yaml
  • 原文地址:https://www.cnblogs.com/zjm1999/p/9696018.html
Copyright © 2020-2023  润新知