C++,JAVA存储类型

存储类型

什么是?

存储类型影响对象在内存区域位置生命周期
虽然 C++ 和 Java 中的存储类型有所不同,但它们都是为了管理程序中的内存分配和释放而设计的。

有哪些?

C++

中的存储类型包括自动存储、静态存储、动态存储和线程存储四种存储类型。

  • 自动存储
    函数内部定义的变量。
    生命周期:它们在函数调用时分配内存,在函数返回时释放内存;
    位置:栈
  • 静态存储
    全局变量和静态变量
    生命周期:它们在程序运行期间一直存在,直到程序结束才释放内存;
    位置:静态区域
  • 动态存储
    使用 newdelete 运算符动态分配和释放内存。
    生命周期:程序员通过new delete亲自管理
    位置:堆
  • 线程存储
    在线程局部存储区中分配的变量,它们只能在所属线程中访问。

Java

中只有栈内存和堆内存两种存储类型。栈内存用于存储基本数据类型和对象的引用变量,它们在方法调用时分配内存,在方法返回时释放内存;堆内存用于存储对象本身,它们在使用 new 关键字创建对象时分配内存,在对象没有被引用时由 Java 垃圾回收机制自动回收。

这是因为 C++ 是一种底层语言,需要手动管理内存,因此需要更多的存储类型来管理内存的分配和释放;而 Java 是一种高级语言,具有自动内存管理机制,因此只需要栈内存和堆内存两种存储类型来管理内存即可。

如何决定存储类型

  • 关键字
  • 或者对象申明的位置,例如类外,函数内,以及new关键字

存储类型关键字

C++ 中的存储类型关键字包括:

  1. auto:用于自动推导变量的类型。

  2. register:用于声明寄存器变量,建议使用 register 关键字的变量不要取地址。

  3. static:用于声明静态变量,静态变量在程序运行期间只会被初始化一次。

  4. extern:用于声明外部变量或函数,表示该变量或函数在其他文件中定义。

  5. mutable:用于声明类的成员变量,表示该变量可以在 const 成员函数中被修改。

  6. thread_local:用于声明线程局部变量,表示该变量在每个线程中都有一份独立的副本。

这些存储类型关键字可以用于指定变量或函数的存储类型,从而影响它们在内存中的存储位置和生命周期。

Java 中的存储类型关键字包括:

  1. static:用于声明静态变量,静态变量在程序运行期间只会被初始化一次。

  2. final:用于声明常量,表示该变量的值在初始化之后不可更改。

  3. transient:用于声明对象的成员变量,表示该变量不会被序列化。

  4. volatile:用于声明变量,表示该变量可能会被多个线程同时访问。

  5. synchronized:用于声明方法或代码块,表示该方法或代码块在执行时会获取对象的锁。

这些存储类型关键字可以用于指定变量或方法的存储类型,从而影响它们在内存中的存储位置和访问方式。需要注意的是,Java 中没有类似 C++ 中的自动变量和寄存器变量的概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值