`
什么都不懂的孩子
  • 浏览: 27808 次
社区版块
存档分类
最新评论

关于参数传递----值传递和引用传递

 
阅读更多

 

    参数传递在我们设计程序写代码的时候经常用到的一个知识,它给我们带来了很大的方便,我们不需要再去写方法去返回一个参数的值,而且对于很多Java语言里面的类构造方法都需要传递值,这种传递是参数传递中的一种,就是值传递,值传递的一个最大的特点就是只传值,把值赋值过去以后,就算是完成了一次值传递,值传递适用于几大基本数据类型和String,在这里就不过多的介绍了。

    还有一种就是引用传递,这是一个非常容易出错的地方,引用传递适用于引用类型,包括用class、interface、adstract定义的类,但是不包括String,说到引用传递就要说到数据在内存中的存储方式了,内存分为栈内存和堆内存,栈内存是由编译器自动分配和释放,存放函数的参数的值,局部变量的值等。它的操作方式类似于数据结构中的栈,堆内存一般由程序员分配和释放,如果程序员不释放,程序结束的时候会被系统收回,这部分一般存储引用类型的数据,包括String,但是引用传递依然是除去String而把它放在了值传递上。

    对于参数传递,无非就是对两种方法进行传递参数:构造方法和普通方法,我们来看下面的例子。

    public class Student {

 

private String name = na;

private int score = 8;

 

public void Student(int score,String name){

 

this.name = name;

this.score = score;

}

 

public int getScore(){

 

return score;

}

 

public void setName(String name){

 

this.name = name;

}

 

public String getName(){

 

return name;

}

 

public void setScore(int score){

 

this.score = score;

}

 

 

public class test {

private String name = shan;

private int score = 90;

public static void main(String [] args){

 

Student sut = new Student(ui,87);

Student sut1 = new Student(ui1,57);

 

sut.setName(name);

 

sut1 = sut;

 

 

String sutname = sut.getName();

 

String sut1name = sut1.getName();

 

System.out.println("sut的名字是:"+sutname);

 

System.out.println("sut1的名字是:"+sut1name);

}

}

Student stu = new Student("haha",86);

Student stu1 = new Student("haha2",86);

Student stu2 = new Student("haha",86);

stu=stu2;

stu2=stu1;

 

这就是实例化对象利用到了值传递,前面的“haha”属于string类型,后面的是整形,这里是值传递。

后面的赋值操作,把stu2给了stu,这里就是引用传递,这个时候再内存中,变量名stu就指向了stu2的内存,而且stu2也指向的是自己的那一堆内存,这就是引用传递。

      

--------------------------------------------------------分割线----------------------------------------------------------

       其实说白了,引用传递是传递地址,值传递是吧内存中的具体内容传递,这个传递过去的内容事实上是你所要传递的值一份拷贝,把这个拷贝值传过去,对了,还有一个,就是数组,数组名其实代表着一个地址,所以当你传递整个数字的名字时,就是引用传递。

分享到:
评论

相关推荐

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

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

    值传递与引用传递-内存解析

    在编程语言中,值传递和引用传递是函数参数传递的两种基本方式,它们涉及到内存管理、数据安全以及程序效率等多个重要方面。这篇文章将深入探讨这两种传递方式,并通过内存解析来帮助理解它们的工作原理。 首先,...

    值传递和引用传递

    在计算机编程中,值传递和引用传递是两种常见的参数传递方式。这两种传递方式在不同的编程语言中有不同的实现细节,但其核心概念是相似的。本文将详细介绍值传递和引用传递的概念、用法以及它们之间的区别,并通过...

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

    在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点并非完全对立,而是根据不同的角度来描述Java中的参数传递...

    Java零基础-参数传递-2.md

    - **基本类型参数传递的误解**:有些人可能认为基本类型参数的传递也是引用传递,但实际上是值传递。这意味着在方法内对参数的修改不会影响到原始变量。 - **引用类型参数传递的误解**:虽然传递的是引用,但这并不...

    Java零基础-参数传递-1.md

    本文将重点讨论Java中方法调用时的基本类型和引用类型参数传递的区别,并通过具体的示例帮助读者更好地理解和掌握这一核心概念。 #### 学习目标 - **理解参数传递的基本原理**:了解Java方法调用过程中如何将参数...

    java 值传递和引用传递的比较

    在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。 首先,我们来理解什么是值传递。在Java中,基本数据类型(如int、double、...

    java值传递与引用传递

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

    Java语言中参数值传递和引用传递比较.pdf

    Java 语言中参数值传递和引用传递是两种不同的参数传递方式,它们在 Java 编程中扮演着重要的角色。参数值传递是指将实际参数的值复制给形式参数,形式参数的变化不影响实际参数的值。引用传递是指将实际参数的引用...

    13.java参数传递之引用传递.zip

    13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....

    C#中的参数传递 - ref, out比较

    在C#语言中,函数或方法的参数传递方式是一个重要的概念。本文将深入解析C#中涉及的几种关键...通过理解这些参数传递方式的区别,可以帮助开发者更灵活地处理程序中的变量传递问题,从而编写出更加高效和安全的代码。

    Java面向对象值传递和引用传递

    参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值传递是指将实际的内存中的值传递给另外一个变量。例如,int a = 3; a 就指向了内存中的...

    Delphi值传递和引用传递实例

    Delphi,作为一款基于Pascal语法的面向对象的编程环境,提供了两种主要的参数传递机制:值传递(ByValue)和引用传递(ByReference)。这两者在处理函数或方法的参数时有着显著的区别,对程序性能和数据安全有直接...

    Java的引用和函数参数传递

    对于对象的参数传递,Java采用的是引用传递的方式。这意味着当你传递一个对象作为参数时,实际上是传递了对该对象的引用,而不是对象本身的副本。因此,在方法内部对这个对象所做的任何改变都会反映到原始对象上。 ...

    java参数传递时到底是值传递还是引用传递分享.pdf

    Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...

    C#笔记值传递和引用传递

    在C#编程语言中,了解值传递和引用传递的概念至关重要,因为这直接影响到函数或方法如何处理参数。本文主要探讨这两个概念以及与之相关的知识点。 首先,值传递是指当一个方法或函数调用时,实际参数(即调用时提供...

    浅析Java引用类型和方法参数传递

    ### 浅析Java引用类型和方法参数传递 #### 一、引言 在Java编程语言中,理解数据类型的处理方式对于编写高效、可维护的代码至关重要。本文将深入探讨Java中的引用类型及其如何影响方法参数的传递机制。通过具体实例...

    java参数传递时到底是值传递还是引用传递[归类].pdf

    Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...

Global site tag (gtag.js) - Google Analytics