zoukankan      html  css  js  c++  java
  • int值类型的ToString()方法是否装箱

    先说答案,没有装箱!

    首先,我说一点题外话,什么是装箱

    N无论是值类型还是引用类型,他们都继承自Object,只不过,值类型是孙子,引用类型是儿子,值类型是先继承自ValueType,ValueType继承自Object。

    我之前也说过装箱和拆箱,两种不同的类型本身就不能划等号,要想把一种类型变成另一种类型,我们必须做一些操作,使得这种类型通过某种手段添加或删除某些类型特征,变成另外一种类型。

    值类型,就是单纯的在栈上开辟一块内存空间,把数据直接放进去。引用类型是在堆上开辟一块空间,也把数据放进去,但除了数据成员,他还有另外一些默认成员:类型对象指针和同步索引块(同步索引块就先不说了,他是表线程同步的。)

    但引用类型这些箱子,是随机摆放的,所以他不仅在堆上开辟空间,他还在栈上有一块空间,用来存放堆地址,指向堆中数据的位置。而装箱,就是把值类型从栈上把数据复制一份,同时在堆上开辟一块空间,把数据放进去(同时还有类型对象指针和同步索引块),从而形成一个“箱子”,并把地址指针返回到栈上,同时栈开辟空间把这个地址存进去,至此,装箱完成。

    到这,我们就能明白下面说的了,所有类型都能用ToString(),因为他是Object的虚方法,但是在int32类型中,他重写了Object的虚方法:

     所以,我们用int32的ToString()方法时,JIT(即时编译器)会直接调用,将此实例的数值转换为其等效的字符串表示形式,这只是一种表示形式的转换,并没有涉及到类型的转换,也就没有装箱。

  • 相关阅读:
    Linux下安装Apache2.4.43踩坑记录
    网络代理条件下配置git
    docker存储驱动的选择
    Python列表排序
    解决apache无法启动No space left on device
    Flask匹配url使用正则表达式
    Web安全-客户端脚本安全
    springboot中的一些好用注解
    基于cdn方式的vue+element-ui的单页面架构
    干货网站
  • 原文地址:https://www.cnblogs.com/lvqiang/p/12123288.html
Copyright © 2011-2022 走看看