Java参数是值传递还是引用传递?
先来看看参数是如何传递的。
参数的传递
1.基本类型的参数传递
public static void main(String[] args) {
int a = 1;
fun(a);
}
private static void fun(int x) {
}
基本类型的参数传递,是直接将实参的值传递给形参。

2.复杂类型的参数传递
public static void main(String[] args) {
User user = new User();
fun(user);
}
private static void fun(User x) {
}


Java中参数的传递方式只有一种:值传递。所谓值传递就是将实参值的副本传入方法内,而参数本身不会受到任何影响。
1.参数为基本类型
public class PassValue {
public static void main(String[] args) {
int a = 6, b = 9;
swap(a, b);
System.out.println("交换后a=" + a + " b=" + b);// 6,9
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
}
下面是分析图:


2.参数为复杂类型
public class PassValue {
public static void main(String[] args) {
Swap s1 = new Swap(1);
Swap s2 = new Swap(2);
swap(s1, s2);
System.out.println("交换后s1.value=" + s1.value + " s2.value=" + s2.value);//2,1
}
public static void swap(Swap x, Swap y) {
int temp = x.value;
x.value = y.value;
y.value = temp;
}
}
class Swap {
public int value;
public Swap(int value) {
this.value = value;
}
}
下面是分析图:

面试题
public class PassValue_string {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("hello");
change(sb);
System.out.println(sb);//"hello world"
}
public static void change(StringBuffer sb) {
sb.append(" world");
}
}
分析如下:

Java参数是值传递还是引用传递?的更多相关文章
- 【Java】 参数的传递:值传递与引用传递讨论
内容稍多,可直接看第4点的讨论结果 前言 在涉及到传递参数给方法时,容易出现一些参数传递错误的问题,这就涉及到了参数的传递问题,必须搞清楚:参数是如何传递到方法中的?一般来说,参数的传递可以分为两种: ...
- Java调用函数传递参数到底是值传递还是引用传递
今天翻看微信上有关Java技术的公众号时,看到了一篇关于Java中值传递的问题,文章讨论了在Java中调用函数进行传参的时候到底是值传递还是引用传递这个面试时会问到的问题.之前也接触过类似的问题,但只 ...
- 辨析Java方法参数中的值传递和引用传递
小方法大门道 小瓜瓜作为一个Java初学者,今天跟我说她想通过一个Java方法,将外部变量通过参数传递到方法中去,进行逻辑处理,方法执行完毕之后,再对修改过的变量进行判断处理,代码如下所示. publ ...
- JAVA方法中参数到底是值传递还是引用传递
当一个对象被当作参数传递到一个方法后,在此方法内可以改变这个对象的属性,那么这里到底是值传递还是引用传递? 答:是值传递.Java 语言的参数传递只有值传递.当一个实例对象作为参数被传递到方法中时,参 ...
- Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义
一.Java中什么叫做引用类型变量?引用:就是按内存地址查询 比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...
- java中值传递和引用传递
最近工作中使用到了值传递和引用传递,但是有点懵,现在看了下面的文章后清晰多了.一下是文章(网摘) 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: public clas ...
- Java中的值传递和引用传递
这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...
- java的值传递和引用传递
昨天博主在对于值传递和引用传递这里栽了一个大坑啊,导致一下午时间都浪费在这里,我们先说下值传递和引用传递java官方解释: 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对 ...
- java中方法的参数传递机制(值传递还是引用传递)
看到一个java面试题: 问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参 ...
- java 对象传递 是 值传递 还是 引用传递?
这个问题说实话我感觉没有太大的意义. 按第一印象和c++的一些思想去理解的话对象传递是引用传递,因为传递过去的对象的值能被改变. 但是又有很多人,不知道从哪里扣出来一句,java中只有值传递,没有引用 ...
随机推荐
- SpringBoot整合模板引擎
一.SpringBoot整合freemarker: 1.引入freemarker模板依赖: <dependency> <groupId>org.springframework. ...
- LeetCode算法题-Sum of Two Integers(Java实现)
这是悦乐书的第210次更新,第222篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第78题(顺位题号是371).计算两个整数a和b的总和,但不允许使用运算符+和 - .例 ...
- 设计模式のBuilderPattern(创建者模式)----创建模式
一.产生背景 要组装一台电脑,它的组装过程基本是不变的,都可以由主板.CPU.内存等按照某个稳定方式组合而成.然而主板.CPU.内存等零件本身都是可能多变的.将内存等这种易变的零件与电脑的其他部件分离 ...
- c#窗体获取系统时间、回车触发按钮事件、实现验证码功能
1.窗体上显示时间: 1)首先新建一个Timer,命名为timer,并在属性中修改Interval为1000: 2)在需要显示时间的地方添加一个label(假设设置名称为:timerLabel): 3 ...
- selenium之frame
https://blog.csdn.net/huilan_same/article/details/52200586
- pytorch visdom可视化工具学习—1—详细使用-2-plotting绘图
3)plotting绘图 我们已经包装了几种常见的plot类型,以便轻松创建基本的可视化.这些可视化是由Plotly驱动的. Visdom支持下列API.由 Plotly 提供可视化支持. vis.s ...
- day2-安装python以及基本使用
安装Python windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机]- ...
- Spring Security(十一):4. Samples and Guides (Start Here)
If you are looking to get started with Spring Security, the best place to start is our Sample Applic ...
- selenium:断言
在编写自动化测试脚本时,为了使“机器”去自动辨识test case的执行结果是True还是False,一般都需要在用例执行过程中获取一些信息,来判断用例的执行时成功还是失败. 判断成功失败与否,就涉及 ...
- adaboost-笔记(1)
1 - 加法模型 加法模型,就是通过训练集不断的得到不同的分类器(回归),然后将这些分类器组合成一个新的分类器的过程. 假设有\(N\)个样本,且我们的加法模型如下: \[f(x)=\sum_{m=1 ...