Java究竟是通过值传递还是引用传递呢?
来源:互联网 发布:电商视觉人工智能 编辑:程序博客网 时间:2024/06/01 10:35
这个问题困惑了许多初学Java的开发者,也是面试经常被问到的。现在,我用一些小例子,以及图示来说明并强调一下,Java是通过值传递的。
1.定义:
值传递:对传入的实参的真实值在内存中进行一份拷贝。
引用传递:对传入的实参的地址做一份拷贝。
2.传递原始类型(如Type类型,有8种,byte,short ,char,int ,long ,float,double,boolean)变量
因为Java是值传递的,并不难理解下面这些代码并不会交换什么。
swap(Type arg1, Type arg2) { Type temp = arg1; arg1 = arg2; arg2 = temp;}
3.传递Object类型的变量
Java通过引用来操作对象,且所有的对象变量都是引用。然而,Java在方法中传递的参数并不传递引用,是通过值传递。
那么问题来了,为什么传进去对象的成员变量的值会改变呢?
例如下面的代码:
package test;class Apple{public String color="red";}public class test {public static void main(String args[]) {Apple apple=new Apple();System.out.println(apple.color);changeApple(apple);System.out.println(apple.color);}public static void changeApple(Apple apple){apple.color="green";}}
因为原始的引用和拷贝的引用指向同样的对象,所以对象的成员变量的值会改变!
输出:
red
green
0 0
- Java究竟是通过值传递还是引用传递呢?
- Java到底是值传递还是引用传递呢?(只有值传递)
- java是值传递,还是引用传递?
- java是值传递还是引用传递?
- java是值传递还是引用传递
- java 是值传递还是引用传递
- java是值传递还是引用传递。
- java是值传递还是引用传递
- JAVA是值传递还是引用传递
- java是值传递还是引用传递?
- Java 是值传递还是 引用传递?
- JAVA是引用传递还是值传递
- Java是值传递还是引用传递?
- java是值传递还是引用传递
- Java中参数传递是值传递,还是引用传递
- Java参数传递到底是值传递还是引用传递?
- Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?
- java参数传递究竟是按值呢,还是引用?
- 8086汇编指令手册
- 第一阶段测试基础知识总结(2)
- VS2015常用快捷键
- 解决Jersey中使用@Resource注解无法获取bean
- JAVA堆栈操作
- Java究竟是通过值传递还是引用传递呢?
- Unity 3d 基本概念
- 我所了解的cgi
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习 _ 创建多维钻取分析
- JAVA中IP和整数相互转化
- Embedded数据库比较:Access、SQLite、HSQLDB、Sybase、MySQL、DB4O
- R-3.1.1 编译安装
- DirectX11 顶点和顶点布局
- 推荐算法概述