java和c#值类型和引用类型
java数据类型分为基本数据类型和引用类型
基本数据类型:int float double bool char byte
引用数据类型:string array class interface list
为什么区分是基本数据类型还是引用数据类型?
基本数据类型和引用数据类型在内存的存储方式是不同的,这会导致代码的运行速度不同。基本数据类型数据值直接存储在内存栈上;引用数据类型数据值放在内存堆上,在栈中存放数据值的地址(引用),以访问数据值。
那么栈和堆究竟哪个更好?栈的存取速度优于堆的存取速度,栈中数据可以共享。那为什么不都放到栈上,还要引入堆?
栈的主要的缺点是数据的生命周期太短。比如新建一个方法,定义了一些局部变量,为其分配了内存栈,而当这个方法运行结束时,数据所占内存立刻被释放。
引用类型,比如一个Color类,引用color,color可以指向blue,red等对象 Color color=new Color('red'), 或者 Color color=new Color('blue'),color被存放在内存堆,而red对象被存放在内存栈。为什么引用类型要将其分开存储?因为像类、数组、字符串等,他们的对象很可能被重复使用,比如color_1指向了红色,而color_2同样指向了红色,这样会增加程序的可拓展性。
c#数据类型分为值类型和引用类型
值类型:结构和枚举
引用类型:类、接口、委托、字符串
引用类型存储在托管堆,值类型存储在线程栈,其实java存储非常类型,引用都是存储在堆上,基本类型在栈上。
然后在很多时候值类型和引用类型会相互转化,也就是所说的装箱和拆箱。进而带来内存的不安全问题,引入的泛型,比如可以指定类型用List<T>代替ArrayList。
java和c#值类型和引用类型的更多相关文章
- JAVA初学(1):值类型和引用类型的区别
JAVA值类型和引用类型的区别(转) [定义] 引用类型表示你操作的数据是同一个,也就 ...
- java中值类型和引用类型的区别
[定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变. 值类型表示复制一个当前变量传给方法,当你 ...
- 学习记录 java 值类型和引用类型的知识
1. Java中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变 ...
- JAVA值类型和引用类型的区别
java这两种数据类型分别有哪些? java 中的数据类型分为两大类:值类型(基本数据类型)和引用类型(复合数据类型) 一:值类型: 整数类型(byte,short,int,long) 浮点类 ...
- JAVA中值类型和引用类型的不同(面试常考)
转载:https://www.cnblogs.com/1ming/p/5227944.html 1. JAVA中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个 ...
- Java的值类型和引用类型
一.问题描述 前几天因为一个需求出现了Bug.说高级点也挺高级,说白点也很简单.其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别.只是开发的时候由于自己的问题,导致小问题的出现.还好 ...
- C# 值类型和引用类型及参数传递
值类型和引用类型: C#数据类型分为两大类:值类型和引用类型. 值类型数据主要有:结构体struct,枚举体enum,布尔型bool,浮点型,整型. 引用类型数据主要有:数组,字符串,接口,委托,类. ...
- go语言关于值类型和引用类型
前言:关于值类型和引用类型确实是个比较绕的问题,之前在学校的时候学习C语言的时候,就感觉没有看太懂,后面看java,关于引用也是模模糊糊,这个东西也确实比较抽象,估计好多写了好几年代码的人有也有些迷惑 ...
- C#值类型和引用类型与Equals方法
1. C#的值类型和引用类型 C#的对象里面有两种类型,一个是引用类型,一个是值类型,值类型和引用类型的具体分类可以看下面的分类. 在C#中,不管是引用类型还是值类型,他们都隐式继承Object类 ...
随机推荐
- cuda编程视频资料
胡文美教授 http://www.gpuworld.cn/article/show/463.html
- Reading Text from Images Using C#
Introduction By using Optical Character Recognition (OCR), you can detect and extract handwritten an ...
- Qt setStyleSheet
Qt中设置按钮或QWidget的外观是,可以使用QT Style Sheets来进行设置,非常方便.可以用setStyleSheet("font: bold; font-size:20px; ...
- [Codeforces1132G]Greedy Subsequences——线段树+单调栈
题目链接: Codeforces1132G 题目大意:给定一个序列$a$,定义它的最长贪心严格上升子序列为$b$满足若$a_{i}$在$b$中则$a_{i}$之后第一个比它大的也在$b$中.给出一个数 ...
- 为什么Elasticsearch查询变得这么慢了?
参考内容:https://mp.weixin.qq.com/s/RTpBaFpNELQCO6VE0KMfsw
- bzoj 2131 : 免费的馅饼 (树状数组优化dp)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2131 思路: 题目给出了每个馅饼的下落时间t,和位置p,以及价值v,我们可以得到如下状态 ...
- hibernate中持久化对象的生命周期(转载)
三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2 ...
- EMM386和UMBPCI 区别
EMM386和UMBPCI 区别 1,SupportCD-ROM[HIMEM+EMM386NOEMS].支持光驱(EMM386模式)2,SupportCD-ROM[HIMEM+UMBPCI].支持光驱 ...
- Failed to load package MonoAndroidDesignerPackage
from : https://developercommunity.visualstudio.com/content/problem/160124/failed-to-load-package-mon ...
- Hdoj 1846.Brave Game 题解
Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中 ...