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#值类型和引用类型的更多相关文章

  1. JAVA初学(1):值类型和引用类型的区别

    JAVA值类型和引用类型的区别(转)                                                          [定义] 引用类型表示你操作的数据是同一个,也就 ...

  2. java中值类型和引用类型的区别

    [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变. 值类型表示复制一个当前变量传给方法,当你 ...

  3. 学习记录 java 值类型和引用类型的知识

    1. Java中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变 ...

  4. JAVA值类型和引用类型的区别

    java这两种数据类型分别有哪些? java 中的数据类型分为两大类:值类型(基本数据类型)和引用类型(复合数据类型) 一:值类型: 整数类型(byte,short,int,long)     浮点类 ...

  5. JAVA中值类型和引用类型的不同(面试常考)

    转载:https://www.cnblogs.com/1ming/p/5227944.html 1. JAVA中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个 ...

  6. Java的值类型和引用类型

    一.问题描述 前几天因为一个需求出现了Bug.说高级点也挺高级,说白点也很简单.其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别.只是开发的时候由于自己的问题,导致小问题的出现.还好 ...

  7. C# 值类型和引用类型及参数传递

    值类型和引用类型: C#数据类型分为两大类:值类型和引用类型. 值类型数据主要有:结构体struct,枚举体enum,布尔型bool,浮点型,整型. 引用类型数据主要有:数组,字符串,接口,委托,类. ...

  8. go语言关于值类型和引用类型

    前言:关于值类型和引用类型确实是个比较绕的问题,之前在学校的时候学习C语言的时候,就感觉没有看太懂,后面看java,关于引用也是模模糊糊,这个东西也确实比较抽象,估计好多写了好几年代码的人有也有些迷惑 ...

  9. C#值类型和引用类型与Equals方法

    1. C#的值类型和引用类型 C#的对象里面有两种类型,一个是引用类型,一个是值类型,值类型和引用类型的具体分类可以看下面的分类.   在C#中,不管是引用类型还是值类型,他们都隐式继承Object类 ...

随机推荐

  1. cuda编程视频资料

    胡文美教授 http://www.gpuworld.cn/article/show/463.html

  2. Reading Text from Images Using C#

    Introduction By using Optical Character Recognition (OCR), you can detect and extract handwritten an ...

  3. Qt setStyleSheet

    Qt中设置按钮或QWidget的外观是,可以使用QT Style Sheets来进行设置,非常方便.可以用setStyleSheet("font: bold; font-size:20px; ...

  4. [Codeforces1132G]Greedy Subsequences——线段树+单调栈

    题目链接: Codeforces1132G 题目大意:给定一个序列$a$,定义它的最长贪心严格上升子序列为$b$满足若$a_{i}$在$b$中则$a_{i}$之后第一个比它大的也在$b$中.给出一个数 ...

  5. 为什么Elasticsearch查询变得这么慢了?

    参考内容:https://mp.weixin.qq.com/s/RTpBaFpNELQCO6VE0KMfsw

  6. bzoj 2131 : 免费的馅饼 (树状数组优化dp)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2131 思路: 题目给出了每个馅饼的下落时间t,和位置p,以及价值v,我们可以得到如下状态 ...

  7. hibernate中持久化对象的生命周期(转载)

    三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2 ...

  8. EMM386和UMBPCI 区别

    EMM386和UMBPCI 区别 1,SupportCD-ROM[HIMEM+EMM386NOEMS].支持光驱(EMM386模式)2,SupportCD-ROM[HIMEM+UMBPCI].支持光驱 ...

  9. Failed to load package MonoAndroidDesignerPackage

    from : https://developercommunity.visualstudio.com/content/problem/160124/failed-to-load-package-mon ...

  10. Hdoj 1846.Brave Game 题解

    Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中 ...