`
talentluke
  • 浏览: 604534 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java传参是传值还是传引用

 
阅读更多

个人觉得java是传值,当参数类型是基本类型,复制的是值,而当参数是引用类型时,复制的也是值,只不过这个值是地址。如下例调用change(A a)有几个过程:

(1)创建一个临时变量

(2)将实参的值复制给临时变量,由于是引用变量,实参的值是一个地址,故存的也是同一个地址

(3)方法中改变了临时变量所指向的地址,而实参指向的地址没变

 

change(String str)同理,改变的是临时变量所指向的地址,实参指向的地址没变。

 

public Demo

{

   public static void main(String[] args)

    {

        A a = new A();

System.out.println(a.x);//10

change(a);

System.out.println(a.x);//依然是10

 

   }

   public static void change(A a)

    {

a = new A();

a.x = 20;

    }

   public static void change(String str)

    {

str = "new string value in string pool";

        //str = new String("new string in heap");

    }

}

 

class A

{

    public int x = 10;    

   

}

分享到:
评论

相关推荐

    python 函数传参之传值还是传引用的分析

    Python不支持像C++或Java那样的纯粹的值传递或引用传递,而是采用了独特的“传对象引用”方式。这种方式结合了值传递和引用传递的特点,但又有所不同。 在Python中,所有的变量都是对象的引用。当我们传递一个变量...

    引用类型传值方法

    本篇文章将详细探讨引用类型的传值方式。 首先,理解引用类型的概念至关重要。引用类型包括类(classes)、接口(interfaces)、数组以及委托(delegates),它们在内存中的存储方式与值类型截然不同。对于引用类型...

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

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

    浅析Java方法传值和传引用问题

    在Java编程语言中,方法参数传递机制涉及到两个主要概念:传值和传引用。了解这两个概念对于编写高效、可靠的代码至关重要。本篇文章将深入探讨Java中的方法传值和传引用问题。 首先,让我们理解什么是传值。在Java...

    frame之间进行参数传递例子

    在IT行业中,尤其是在软件开发领域,参数传递是一个基础但至关重要的概念。参数传递是指在不同程序组件、函数或方法之间共享数据...无论是前端的frame交互,还是后端的业务处理,参数传递都是构建高效应用程序的基础。

    Kotlin 实现页面互相跳转和互相传值源代码

    Kotlin 实现页面互相跳转...这里的`this`代表当前Activity的上下文,`TargetActivity::class.java`则是目标Activity的类引用。 2. 添加额外的数据(如果需要): ```kotlin intent.putExtra("key", "value") ``` 这里

    java和jsp之间的request传值方法

    本文将详细讲解如何利用`HttpServletRequest`对象在Java和JSP之间进行request传值。 首先,我们需要了解`HttpServletRequest`对象。它是Servlet API中的一个接口,用于获取HTTP请求的相关信息,包括请求参数、请求...

    数组参数学习内容

    2. **传引用**:与传值相反,传引用方法使函数能够直接访问并修改原始数组。在Java或C#中,通过传递数组的引用(如`void func(int[] arr)`),函数可以改变数组的内容。在C++中,可以使用指针或者`const`关键字来...

    JNA 复杂结构体传递

    JNA通过`ByReference`和`ByValue`类来区分传值和传引用。如果C函数接收一个结构体指针,如: ```c void processStructPtr(MyStruct* ptr); ``` 我们可以这样调用: ```java MyStruct myStruct = new MyStruct(); // ...

    Java面试总结.docx

    Java中方法传参有两种主要方式:基本类型传值、引用类型传引用。 1. **基本类型传值:** - 当方法接收一个基本类型参数时,实际上传递的是该值的一个副本。 - 修改不会影响到原始数据。 2. **引用类型传引用:**...

    Java基础语法一PPT学习教案.pptx

    引用型变量存储的是数据内容的地址,赋值和传参时传递的是这个地址的副本。引用数据类型的相等性比较,既可以通过比较地址("=="),也可以通过调用equals()方法比较内容。 对于字符类型char,它是简单数据类型,其...

    教师信息资源管理系统报告

    例如,上述报告中提到的一个训练题目,通过三种不同的传参方式——传值、引用和指针,来判断输入的年份是否为闰年。传值方式会复制变量的值给函数,函数内部的修改不会影响原变量;引用方式传递的是变量的引用,函数...

    jasperreport一个子报表的例子

    JasperReport是一个强大的Java报告库,它允许开发者创建复杂、美观的报表,广泛应用于企业级应用中。在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。...

    Fragment跳转时传递参数及结果回传的方法(推荐)

    创建一个ViewModel,然后在两个Fragment中都引用它: ```java public class SharedViewModel extends ViewModel { private final MutableLiveData<String> selected = new MutableLiveData(); public void ...

    c#面向对象知识点总结

    - **传引用**:传递变量的引用。 - `ref`:用于修改变量。 - `out`:用于输出结果。 - **`ref` 与 `out` 传参的区别**: - `ref` 参数传参时必须初始化,`out` 则不需要。 - `out` 参数必须在方法内得到赋值后...

Global site tag (gtag.js) - Google Analytics