`
申公子
  • 浏览: 1996 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java中值类型和引用类型

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

[值类型]:à也就是基本数据类型
    基本数据类型常被称为四类八种
四类:     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比孤儿还要惨,因为没有什么能找的到它,除了位高权重的‘垃圾回收器’,不过被当官的找到往往没什么好事,尤其是这个‘垃圾回收器’,它会豪不留情把‘垃圾’们清理走,并且无情的销毁,以便释放内存。
[装箱与拆箱]

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

相关推荐

    抽象类与接口的区别-java中值类型和引用类型的区别.docx

    ### Java中值类型和引用类型的区别 #### 值类型 1. **存储位置**:值类型通常被分配在栈上。当声明一个值类型变量时,实际的值会被直接存放在该变量的内存空间中。 2. **实例化**:值类型变量直接包含了实例的数据...

    JAVA中值类型和引用类型的区别

    在Java编程语言中,值类型和引用类型是两种基本的数据类型分类,它们在内存管理和数据处理上有显著的差异。理解这些区别对于编写高效且无错误的代码至关重要。 **值类型**,也称为基本数据类型,包括四类共八种:...

    Java中值类型和引用类型的比较与问题解决

    Java中值类型和引用类型的比较与问题解决 Java 中的值类型和引用类型是两种不同的数据类型,它们在存储和比较时有着很大的区别。值类型是将值直接存储在变量中,而引用类型是将内存地址存储在变量中。 值类型 值...

    c#语言程序设计中值类型课件

    值类型是C#中的基本构建块,它们在内存中直接存储其值,而不是像引用类型那样存储对内存位置的引用。值类型包括整型(如int、byte)、浮点型(如float、double)、字符型(char)、布尔型(bool)以及结构(struct)...

    java与C#区别详细介绍1.docx

    - C#支持装箱和拆箱操作,用于在值类型和引用类型之间转换,Java则没有直接的对应概念。 总的来说,C#和Java各有优势,选择使用哪种语言取决于项目需求和个人喜好。C#在Windows开发和现代编程特性上有优势,而Java...

    Java Language to IDL Mapping Java Language to IDL Mapping

    - **值类型映射**:定义了Java中值类型的IDL表示形式,使得自定义的数据结构可以通过IDL被其他语言理解。 - **数组映射**:规定了如何将Java中的数组映射到IDL中,以支持复杂数据结构的远程传递。 - **异常映射**:...

    Java值传递的一些理解 1

    这一点,对于理解Java中值传递的特性至关重要。 在具体讨论基本类型和对象类型时,我们可以看到不同的行为。对于基本类型(如int, double等),它们在栈内存中有具体的值,因此当进行值传递时,这些值被复制到方法...

    java 各公司面试题

    在第一个问题中,涉及到字符串变量`str`的作用域以及Java中值传递与引用传递的概念。Java中,基本数据类型是值传递,而对象(如字符串)则是引用传递。然而,由于字符串在Java中是不可变的,即使在方法中改变了`str`...

    Java当中的内存分配.pdf

    这个例子展示了Java中值传递的特点,即使对象的属性在方法内部被修改,原始对象的属性也会受到影响,这是因为传递的是对象引用的副本,而不是对象本身。这种行为与某些其他语言(如C++或C#)中的引用传递不同,后者...

    Java软件开发实战 Java基础与案例开发详解 20-4 练习题 共4页.pdf

    - **数据的分类**:Java 中的数据类型分为基本数据类型和引用数据类型两大类。 - **标识符、关键字和常量**:这些是构成 Java 程序的基本元素。标识符用于命名变量、方法等;关键字是具有特殊含义的保留字;常量是在...

    java 空指针异常(NullPointerException)

    Java中的空指针异常(NullPointerException)是编程过程中常见的错误类型,尤其对于新手开发者来说更为常见。这个异常通常在试图访问或操作一个值为null的对象引用时抛出。下面将详细探讨这一异常的原因、表现形式、...

    Python中 传递值 和 传递引用 的区别解析

    接下来,我们详细分析Python中不可变类型和可变类型在传递值和传递引用时的行为: 1. 不可变类型: 在Python中,不可变类型包括数字(Number)、字符串(String)和元组(Tuple)等。不可变类型的对象一旦创建,它...

    详解Java对象的强、软、弱和虚引用+ReferenceQueue

    强引用是Java中的默认引用类型,任何一个对象在被创建时,都是强引用的。 二、软引用(SoftReference) 软引用是Java中的第二种引用类型。如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;...

    Java基础笔记-基础部分

    - 引用类型:如数组、类对象等。 - **基本类型详解**: - **字符和字符串**: - **字符**:单个可输出的符号,如`'a'`。在Java中,字符是基本数据类型。 - **字符串**:双引号括起来的一系列字符,如`"hello"`...

    Java基础知识点总结

    - 引用数据类型:类、数组等。 8. **数据类型转换** - **默认转换**:从低精度向高精度自动转换。 - **强制转换**:需要显式地使用括号指定目标类型进行转换。 - **注意事项**:可能会导致数据精度丢失或溢出等...

    Java变量常量声明和定义原理解析

    Java变量类型可以分为两类:基本类型和引用类型。基本类型包括整数类型、浮点数类型、字符类型、布尔类型等。引用类型包括数组、类、接口等。 四、变量作用域 变量作用域是指变量可以被访问的范围。Java变量可以...

    JAVA图形图象处理(论文+系统)【毕业论文】.zip

    1. **基本概念**:首先,论文可能会介绍图像的基本类型,如位图和矢量图,以及它们在Java中的表示。还会讲解像素、色彩模式(如RGB、CMYK)和图像格式(如JPEG、PNG)等基础知识。 2. **Java 2D API**:Java 2D API...

    java基础技术

    总结来说,Java集合框架提供了丰富的接口和类来处理数据结构问题,而实用类如枚举、包装类、Math类以及String类则增强了语言的功能性和灵活性。理解和掌握这些基础知识对于成为一名合格的Java开发者至关重要。

    c#经典面试题(自己整理)

    装箱和拆箱是.NET中值类型和引用类型之间的转换过程。装箱是将值类型转换为对应的System.Object引用类型,而拆箱则是从Object类型转换回原始的值类型。 `final`、`finally`和`finalize`在Java中各有不同的用途: - ...

Global site tag (gtag.js) - Google Analytics