每日一测4(装箱与拆箱)

 

1、定义

装箱:用于在垃圾回收堆中存储值类型。装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。 
拆箱:从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。

 

2、为什么要装箱:

(1)调用一个类型为Object的参数的方法,Object可支持任意为型,当你需要将一个值类型(如Int32)传入时,需要装箱。 
(2)一个非泛型的容器 ,同样是为了保证通用,而将元素类型定义为Object。同样的,要将值类型数据加入容器时,需要装箱。

 

3、操作:

(1)装箱: 

  对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。 

  (1)新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex)。 
  (2)将值类型的实例字段拷贝到新分配的内存中。 
  (3)返回托管堆中新分配对象的地址(对象的引用)。 
 
(2)拆箱:
  检查对象实例,确保它是给定值类型的一个装箱值。将该值从实例复制到值类型变量中。

4、执行效率:

  从原理上可以看出,装箱时,生成的是全新的引用对象,这会有时间损耗,也就是造成效率降低, 

所以应尽快避免装箱操作。

转载于:https://www.cnblogs.com/jolins/p/4153599.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flex 正则表达式匹配规则

正则表达式扫描的优先级 1. 先根据空格,tab,回车分割字符串,作为正则表达式匹配的基础 2. 找到完全匹配的正则表达式,以排列在前面的优先级为高 3. 如果找不到匹配的表达式,那么从头开始截取字符串来查找合…

笔记本多硬盘win7下U盘安装Cnetos7引导问题!

CentOS7出来的时间已经不算短了,前段时间一直在虚拟机上使用,最近闲下来了,就像在自己的笔记本上装一个win7和Centos7的双系统体验以下实体机的效果,几经波折之后终于顺利的装上了WIN7和CentOS7的双系统!在这里主要是想…

QString转char*的问题

QString tmp"abc"; char *p tmp.toLatin1().data()); QString tmp"abc"; char *p new char[1strlen(tmp.toLatin1().data())]; strcpy(p, tmp.toLatin1().data()); 运行模式两种方法都可以,调试模式,第一种方式无法得到QString的…

hdu 1870

水题。。。。 AC代码&#xff1a; #include <iostream> #include <queue> using namespace std; int main() {char str[1010];int i,k;while(scanf("%s",&str)!EOF){queue<char>q;for(i0;str[i]!B;i){if(str[i]()q.push(str[i]);if(str[i]))q.…

Linux Apache php MySQL 安装配置(Centos 6.4 yum安装)

一、yum准备 1.Yum&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。 基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安…

QComboBox 样式设置

QComboBox QAbstractItemView::item:hover {color: black;background-color: lightgreen; } 上面理论上是对鼠标划过的项目的样式设置&#xff0c;实际不管用 QComboBox QAbstractItemView { color:black; selection-background-color:yellow; background-color:white; } 上…

函数IsValid()

函数IsValid() 功能&#xff1a;检查对象变量是否已经实例化&#xff0c;即实例变量的值是否是个有效的对象句柄。 语法&#xff1a;IsValid(objectname) 参数&#xff1a;objectname:要检查的对象名。 返回值&#xff1a;Boolean。如果指定对象已经创建了对此案实例&#xff0…

获取场景中指定类的实例

for (TActorIterator<类名> It(GetWorld()); It; It) {UE_LOG(LogTemp, Warning, TEXT("%s"), *It->GetName()); }

公司用章知识

最近在走公司的财务报销流程&#xff0c;了解公司财务运作过程中的一些用到的章&#xff0c;现在把公司用章之类的知识点搜集起来&#xff0c;汇总在这里&#xff0c;留以备用。 了解总喜欢刨根问底&#xff0c;那就开始刨起来。 印章的历史 印章是融合了雕刻、书法和绘画等多种…

可变参数模板

【导读】&#xff1a;C 可变参数模板对参数进行了高度泛化&#xff0c;它能表示0到任意个数、任意类型的参数。相比C98/03&#xff0c;类模版和函数模版中只能含固定数量的模版参数&#xff0c;可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象&#xff0c;使用…

职业生涯起步不要去顶级公司

很多人都希望自己能够去世界顶级的公司工作&#xff0c;比如像宝洁、IBM、沃尔玛、微软等等这些可以在全球范围内 形成垄断的巨无霸&#xff0c;按常规来说就是财富500强排名在前100名的公司&#xff0c;这些公司实力台&#xff0c;业务增长都非常惊人&#xff0c;所以很多求职…

BAT批处理中的字符串处理

1、截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了&#xff0c;能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能&#xff1a; 复制代码 代码如下: echo off   set ifoabcdefghijklmnopqrstuvwxyz0123456789   echo 原字符串&…

【LeetCode】44. Wildcard Matching (2 solutions)

Wildcard Matching Implement wildcard pattern matching with support for ? and *. ? Matches any single character. * Matches any sequence of characters (including the empty sequence).The matching should cover the entire input string (not partial).The functi…

ANTLR 4(一)Getting Started

1. 配置java环境 安装jdk1.7以上版本&#xff0c;我装的是“jdk-8u181-windows-x64.exe”。 设置 “C:\Program Files\Java\jdk1.8.0_181\bin" 到path环境变量。 设置 "C:\Program Files\Java\jdk1.8.0_181" 到 JAVA_HOME 环境变量。 设置 "%JAVA_HOME%\l…

ThreadPoolExecutor源码学习(2)-- 在thrift中的应用

thrift作为一个从底到上除去业务逻辑代码&#xff0c;可以生成多种语言客户端以及服务器代码&#xff0c;涵盖了网络&#xff0c;IO&#xff0c;进程&#xff0c;线程管理的框架&#xff0c;着实庞大&#xff0c;不过它层次清晰&#xff0c;4层每层解决不同的问题&#xff0c;可…

ANTLR VS FLEXBISON

1. ANTLR可以一站式的解决词法与语法解析器的生成。 FLEX&BISON需要配合使用&#xff0c;一个实现词法解析器&#xff0c;一个实现语法解析器。 2. ANTLR通过在文法文件中的设置&#xff0c;可以生成多个语言代码。 options {languageCpp;} options {languageCSharp;} op…

[POJ 1742] Coins 【DP】

题目链接&#xff1a;POJ - 1742 题目大意 现有 n 种不同的硬币&#xff0c;每种的面值为 Vi &#xff0c;数量为 Ni &#xff0c;问使用这些硬币共能凑出 [1,m] 范围内的多少种面值。 题目分析 使用一种 O(nm) 的 DP &#xff08;据说这是类多重背包&#xff1f;&#xff09;&…

ubuntu 18.04 显卡驱动

1. 禁用ubuntu默认显卡驱动&#xff0c;在/etc/modprobe.d/目录下创建blacklist-nouveau.conf文件并添加以下内容 blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatu 2. 刷新内核&#xff0c;重启 update-initramfs -u reboo…

UE4 查看打包文件内容

UnrealPak.exe pak文件 -list -cryptokeys工程下Crypto.json文件 >输出文件

【iOS】Quartz2D图片剪切

一、使用Quartz2D完成图片剪切1.把图片显示在自定义的view中  先把图片绘制到view上。按照原始大小&#xff0c;把图片绘制到一个点上。  代码&#xff1a; 1 - (void)drawRect:(CGRect)rect 2 { 3 UIImage *image2[UIImage imageNamed:"me"]; 4 [image2…