[定义]

引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变.
值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.
通俗说法: 值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。----(摘自网上)
[值类型]也就是基本数据类型

基本数据类型常被称为四类八种

四类:   1,整型 2,浮点型 3,字符型 4,逻辑型

八种:

1,整型3种 byte,short,int,long

2,浮点型2种 float,double

3,字符型1种 char

4,逻辑型1种 boolean

[引用类型]

除了四类八种基本类型外,所有的类型都称为引用类型

在弄清楚值类型与引用类型之后,最后一点就是值传递与引用传递,这才是关键
[值传递]
    基本数据类型赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的拷贝,值传递后,实参传递给形参的值,形参发生改变而不影响实参。
[引用传递]
引用类型之间赋值属于引用传递。引用传递传递的是对象的引用地址,也就是它的本身(自己最通俗的理解)。引用传递:传的是地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。

引用和我们的指针差不多,但是它不又不需要我们去具体的操作

 [内存分配]

一个具有值类型(value type)的数据存放在内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。值类型的数据具有较快的存取速度。

一个具有引用类型(reference type)的数据并不驻留在栈中,而是存储于中。即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。

[java 中的垃圾回收机制]

当一个堆内存中的对象没有被栈内存中表示地址的值“引用”时,这个对象就被称为垃圾对象,它无法被使用但却占据着内存中的区域,好比这样:

String s = new String(“person”); s = new String(“man”); s本来是指向堆内存中值为person的对象的,但是s突然讨厌person了,它指向了堆内存中的man对象了,person就像一个孤儿一样被s遗弃了,但是person比孤儿还要惨,因为没有什么能找的到它,除了位高权重的‘垃圾回收器’,不过被当官的找到往往没什么好事,尤其是这个‘垃圾回收器’,它会豪不留情把‘垃圾’们清理走,并且无情的销毁,以便释放内存。

[装箱与拆箱]

其实装箱就是值类型到引用类型的转化过程。将一个值类型变量装箱成一个引用类型变量,首先会在托管堆上为新的引用类型变量分配内存空间,然后将值类型变量拷贝到托管堆上新分配的对象内存中,最后返回新分配的对象内存地址。装箱操作是可逆的,所以还有拆箱操作。拆箱操作获取只想对象中包含值类型部分的指针,然后由程序员手动将其对应的值拷贝给值类型变量。

转载于:https://blog.51cto.com/lena9819/1704326

Java值类型与引用类型的不同相关推荐

  1. java 值类型与引用类型_JAVA 关于值类型和引用类型的区别

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

  2. java值类型和引用类型 == 比较,Java中值类型和引用类型的比较与问题解决

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

  3. java 值类型与引用类型_Java值类型和引用类型的区别

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  4. Java程序员必看!java值类型和引用类型的区别

    招聘职位需求套路摘举 以下几个公司的招聘需求:(from lagou) 1.Java开发岗位 职位诱惑: 福利好待遇佳,技术氛围浓,有大牛带成长快. 职位描述: 有赞2021校招官方网申地址(请在官网 ...

  5. java值类型和引用类型的区别

    毫无疑问,函数传值和传引用的区别是:传值是传一份数据拷贝,而传引用的话,是可以操纵对象. 但是,一般人容易忽略的是:传引用其实也是传一份引用的副本. 实例如下: class Number { publ ...

  6. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  7. Java 基础 —— Java 中的值类型与引用类型

    一.值类型与引用类型 在 Java 中类型可分为两大类:值类型与引用类型.值类型就是基本数据类型(如 int.double 等),而引用类型是指除了基本的变量类型之外的所有类型(如通过 class 定 ...

  8. .NET中的值类型与引用类型

    .NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别? TL;DR(先看结论) 值类型 引用类型 ...

  9. java原始类型和引用类型_Java中的8种原始类型

    java原始类型和引用类型 几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的. 这样,初学者的内容就更容易消化了. 首先,我将介绍有关Java的 ...

最新文章

  1. Dataset之RentListingInquries:RentListingInquries(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略
  2. 【学习笔记】21、随机数模快
  3. Json格式的netconf转成NormalizedNode
  4. 轨迹规划概念总结——Dubins曲线
  5. UML大战需求分析阅读笔记——02
  6. 提高服务器并发量,有关系统配置的常规方法
  7. Attachment assignment block里选择的文件是如何传到application server
  8. java队列_java集合入门和深入学习(详解),看这篇就差不多了
  9. hadoop和spark的区别和联系
  10. TabBar与下拉列表访问数据与刷新
  11. python保存列表到json_将json数据保存到python列表中时出现问题
  12. thymeleaf教程
  13. RxSwift PriorityQueue 优先级队列的实现
  14. et中计算机的快捷键,新手求助ET软件快捷键(求实用型的)
  15. c#如何实现叫号操作_C#开发银行叫号系统
  16. AAC 音频数据结构实例分析:
  17. 大英博物馆天猫开店,本王的宝贝都要被你们玩坏啦!
  18. xp电脑怎样连接无线网络连接服务器,xp笔记本电脑怎么连接无线网wifi呢
  19. jquery的事件命名空间详解
  20. 【iOS】越狱入门梳理

热门文章

  1. [导入][转]好企业是什么样?
  2. php拦截器配置,php 类中的各种拦截器
  3. 想自学Python却不知该如何入门?这篇文章带你轻松入门Python
  4. python保存模型与参数_如何导出python中的模型参数
  5. 微型计算机m3500q,拆分式一体机!联想ThinkCentre 超级Q 23
  6. vsftp匿名访问目录_vsftp 使用匿名帐号登陆
  7. jmeter csv参数化_运用Jmeter参数化来实现接口自动化测试
  8. 使用 Vagrant 在不同的操作系统上测试你的脚本
  9. 如何在FreeBSD中安装Nginx,MySQL,PHP(FEMP)
  10. SQL JOIN 中 on 与 where 有何区别