`
齐在
  • 浏览: 11792 次
社区版块
存档分类
最新评论

值传递和引用传递总结

 
阅读更多

值传递和引用传递总结

<!--[if !supportLists]-->1.<!--[endif]-->基本数据类型 

JAVA有八种数据类型,包括:

字符型 char     1字节

浮点型float 4字节

double    8字节

整型  short 2字节

int 4字节

long  8字节

布尔型 boolean  只有falsetrue,并不能用0和非零数来代替falsetrue

在这里要注意的是String并不是基本的数据类型,而是一个类,注意不要将String写成string

下面是对基本数据类型和String存放地址的描述:基本数据类型是存放在栈上,而String类型的话,是在栈上开辟一个空间,在堆上存放内容,然后返回给栈上空间一个地址。

String str1=abc;

String str2=str1;

尽管内容是一样的,但实际上已经为str2在堆上再开辟了一个新的存储空间。

<!--[if !supportLists]-->2.<!--[endif]-->值传递和引用传递

首先,让我们来看一段代码,通过分析输出结果来引出今天的问题。

 

 

public class Manager {

public static void main(String[] args) {

	int number1=1;
	System.out.println("number是"+number1);
        int number2=number1;
	System.out.println("number是"+number2);
	number2=2;
	System.out.println("number是"+number1);
	System.out.println("number是"+number2);

	Outman outman1=new Outman();
	outman1.set("张三",1000);
	outman1.show();
	Outman outman2=outman1;
	outman2.show();
	outman2.set("李四", 2000);
	outman2.show();
	outman1.show();
}
}

 

 

public class Outman {
        public String name;
        public int blood;
        public void set(String name,int blood){
	this.name=name;
	this.blood=blood;
}

public void show(){
	System.out.println("名字是"+name);	
        System.out.println("血量是"+blood);
}
}

 

 

 

 

为什么第三、四次输出的number分别是12,而第三、四次输出的名字和血量全都变成1000,“李四”了呢?

这是因为,基本数据类型和String的传递是值传递。在这个例子中,相当于把number1的值1复制了一份之后传递给number2number2的值就是1,但接下来对number2再赋值时,只改变number2,而不改变number1

classinterfaceabstract class是引用传递。就是说outman1outman2共用同一个地址,因此改变其中任何一个都会影响到另外一个。

<!--EndFragment-->

  • 大小: 5.3 KB
分享到:
评论

相关推荐

    值传递和引用传递

    ### 值传递和引用传递详解 #### 一、引言 在计算机编程中,值传递和引用传递是两种常见的参数传递方式。这两种传递方式在不同的编程语言中有不同的实现细节,但其核心概念是相似的。本文将详细介绍值传递和引用传递...

    值传递,指针传递,引用传递的区别,内含可运行代码和详细解释

    另一方面,值传递由于形参和实参内存地址不一样,有些功能并不能实现(swap()),因此,除了极为简单的函数会使用值传递外,大多数会采用引用传递。而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给...

    java值传递与引用传递

    在Java编程语言中,函数参数的传递方式有两种:值传递和引用传递。理解这两种机制对于编写高效、无误的代码至关重要。以下是对这两种传递方式的详细解析。 首先,值传递是指函数调用时,实际参数的值被复制一份传给...

    LabVIEW中引用的概念及在VI间传递值

    总结来说,理解并熟练运用LabVIEW中的引用和通过引用传递值是优化程序性能的关键。正确使用引用可以显著提高代码效率,减少内存占用,特别是在处理大量数据或需要实时更新的场景下。在实际项目中,应根据需求选择...

    面向对象语言中的值传递与引用传递

    总结来说,值传递和引用传递是Java中处理参数传递的两种机制。理解这两者的差异对于正确处理方法调用和对象状态至关重要。值传递适用于基本数据类型,而引用传递则适用于对象类型,允许方法直接修改对象的状态。在...

    java按值传递还是按引用传递详细解说

    在Java中,所有的参数传递都是按值传递,但这并不意味着Java没有引用传递的概念。实际上,Java通过传递对象引用的方式,实现了类似引用传递的效果。以下是对这两种传递方式的详细解释。 1. 按值传递 按值传递是指...

    java中的值传递和引用传递[汇编].pdf

    Java编程语言中,参数传递的方式主要有两种:值传递和引用传递。然而,由于Java不支持指针,所以严格意义上的引用传递并不存在。但是,通过对象的传递,Java实现了类似引用传递的效果。 值传递是Java中基本类型的...

    Java中的值传递和引用传递的区别.doc

    根据传递的数据类型不同,Java中有两种主要的参数传递方式:值传递(Value Passing)和引用传递(Reference Passing)。这两种方式决定了函数内部如何处理传入的参数,进而影响到函数外部的原始数据是否会发生变化。...

    C++单向按值传递(产生临时对象) 双向按引用传递(不产生临时对象不占任何内存).rar

    总结,C++中的按值传递和按引用传递各有优缺点,程序员需要根据具体需求权衡选择。在编写高效且安全的代码时,理解并熟练运用这两种传递方式至关重要。同时,注意在处理复杂对象或数据结构时,按引用传递通常更为...

    数组总结(概念、定义、默认值、可变长参数、值传递与引用传递等)

    数组总结(概念、定义、默认值、可变长参数、值传递与引用传递等)。1.冒泡排序: ​ 两两相比(两个相邻的数进行比较) 条件成立 互换位置 ​ 外层循环控制比较的轮数 **轮数永远是 长度 -1 (n - 1)** ​ 内层循环...

    Java中的值传递和引用传递实例介绍

    我们将详细探讨Java中的值传递和引用传递的概念,以及它们之间的区别。 首先,值传递是Java中最基本的参数传递方式。当一个变量作为参数传递给方法时,实际上是传递了该变量存储值的一个副本。这意味着在方法内部对...

    java 之方法调用 方法传参 值传递还是引用传递字节码

    本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们来看方法调用。在Java中,方法是一组完成特定任务的代码块,可以通过方法名来调用执行。方法调用的基本语法...

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

    在Python编程语言中,理解传递值(值传递)和传递引用(引用传递)的区别对于编写高效且符合预期的程序是非常重要的。Python中的参数传递机制与一些其他语言(如C++或Java)中的机制不同,这导致了在传递变量时可能...

    C#编写的一个高级语言程序——值传递2

    6. **性能影响**:值传递相比引用传递通常有更快的执行速度,因为它不需要额外的内存管理和引用跟踪。然而,对于大对象或复杂结构,值传递可能会导致性能下降,因为需要复制大量数据。 7. **结构体和类的差异**:...

    一文秒懂java到底是值传递还是引用传递

    首先,需要明确的是,在程序设计语言中,参数传递方式通常分为按值传递(call by value)和按引用传递(call by reference)。按值传递意味着方法接收的是实际参数值的副本,而按引用传递则是方法接收的是实际参数的...

    Java 值传递和引用传递详解及实例代码

    Java中的值传递和引用传递是编程中非常重要的概念,它们涉及到函数或方法调用时参数的传递方式。值传递指的是函数或方法接收到的是变量的一个副本,而引用传递则是函数或方法接收到的是变量内存地址的副本。这两种...

    Remoting简单例子(按值和按引用传递的比较)

    .NET Remoting是微软.NET框架提供的一种通信机制,...总结来说,理解.NET Remoting中按值和按引用传递的概念对于优化远程通信性能和确保正确的行为至关重要。在实际开发中,应根据具体需求和场景来选择合适的传递方式。

    深入理解python中函数传递参数是值传递还是引用传递

    在探讨Python函数传递参数的方式时,很多人会陷入“值传递”与“引用传递”的概念之中。实际上,这两种说法在Python中并不完全适用,因为Python有自己的特殊机制来处理参数传递。本文将通过具体的代码示例和内存地址...

    Java中的按值传递和按引用传递的代码详解

    Java中的按值传递和按引用传递的代码详解 本文通过实例代码详细解释了Java中的按值传递和按引用传递的相关知识。通过实验,我们可以了解Java中基本类型和引用类型的传递机制。 按值传递 在Java中,基本类型的变量...

Global site tag (gtag.js) - Google Analytics