个人觉得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不支持像C++或Java那样的纯粹的值传递或引用传递,而是采用了独特的“传对象引用”方式。这种方式结合了值传递和引用传递的特点,但又有所不同。 在Python中,所有的变量都是对象的引用。当我们传递一个变量...
本篇文章将详细探讨引用类型的传值方式。 首先,理解引用类型的概念至关重要。引用类型包括类(classes)、接口(interfaces)、数组以及委托(delegates),它们在内存中的存储方式与值类型截然不同。对于引用类型...
本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们来看方法调用。在Java中,方法是一组完成特定任务的代码块,可以通过方法名来调用执行。方法调用的基本语法...
在Java编程语言中,方法参数传递机制涉及到两个主要概念:传值和传引用。了解这两个概念对于编写高效、可靠的代码至关重要。本篇文章将深入探讨Java中的方法传值和传引用问题。 首先,让我们理解什么是传值。在Java...
在IT行业中,尤其是在软件开发领域,参数传递是一个基础但至关重要的概念。参数传递是指在不同程序组件、函数或方法之间共享数据...无论是前端的frame交互,还是后端的业务处理,参数传递都是构建高效应用程序的基础。
Kotlin 实现页面互相跳转...这里的`this`代表当前Activity的上下文,`TargetActivity::class.java`则是目标Activity的类引用。 2. 添加额外的数据(如果需要): ```kotlin intent.putExtra("key", "value") ``` 这里
本文将详细讲解如何利用`HttpServletRequest`对象在Java和JSP之间进行request传值。 首先,我们需要了解`HttpServletRequest`对象。它是Servlet API中的一个接口,用于获取HTTP请求的相关信息,包括请求参数、请求...
2. **传引用**:与传值相反,传引用方法使函数能够直接访问并修改原始数组。在Java或C#中,通过传递数组的引用(如`void func(int[] arr)`),函数可以改变数组的内容。在C++中,可以使用指针或者`const`关键字来...
JNA通过`ByReference`和`ByValue`类来区分传值和传引用。如果C函数接收一个结构体指针,如: ```c void processStructPtr(MyStruct* ptr); ``` 我们可以这样调用: ```java MyStruct myStruct = new MyStruct(); // ...
Java中方法传参有两种主要方式:基本类型传值、引用类型传引用。 1. **基本类型传值:** - 当方法接收一个基本类型参数时,实际上传递的是该值的一个副本。 - 修改不会影响到原始数据。 2. **引用类型传引用:**...
引用型变量存储的是数据内容的地址,赋值和传参时传递的是这个地址的副本。引用数据类型的相等性比较,既可以通过比较地址("=="),也可以通过调用equals()方法比较内容。 对于字符类型char,它是简单数据类型,其...
例如,上述报告中提到的一个训练题目,通过三种不同的传参方式——传值、引用和指针,来判断输入的年份是否为闰年。传值方式会复制变量的值给函数,函数内部的修改不会影响原变量;引用方式传递的是变量的引用,函数...
JasperReport是一个强大的Java报告库,它允许开发者创建复杂、美观的报表,广泛应用于企业级应用中。在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。...
创建一个ViewModel,然后在两个Fragment中都引用它: ```java public class SharedViewModel extends ViewModel { private final MutableLiveData<String> selected = new MutableLiveData(); public void ...
- **传引用**:传递变量的引用。 - `ref`:用于修改变量。 - `out`:用于输出结果。 - **`ref` 与 `out` 传参的区别**: - `ref` 参数传参时必须初始化,`out` 则不需要。 - `out` 参数必须在方法内得到赋值后...