值传递和引用传递

来源:互联网 发布:贝克汉姆 帅 知乎 编辑:程序博客网 时间:2024/06/09 09:05

在java中,值类型分为整型,字符型,浮点型,逻辑型

整型:byte(1个字节),short(2个字节),int(4个字节),long(8个字节)

字符型:char(2个字节)

浮点型:float(4个字节),double(8个字节)

逻辑型:bolean(1个字节)

在java中除了八大基本类型其余都是引用类型:

例如:数组,字符串,类,接口。

值传递:基本类型的赋值都属于值传递(数据存储在栈中,优点是读取速度快,但是存储量小)

引用传递:传递的都是引用,也就是在内存中的地址(引用存储在堆中,优点是存储量大,但是由于存的是地址,所以每次访问该引用都会通过栈去寻找该变量的内容,然后根据内容再去堆中找到实际存储的地址取得真实的值,所以读取速度较慢)。

public class Transmit {public static void main(String[] args) {int a = 20;int b = a;a = 10;System.out.println(b);int[] c = { 0, 1, 2, 3, 4 };int[] d = c;System.out.println(d[2]);c[2] = 5;System.out.println(d[2]);}}
输出结果为:20,2,5。

由于值传递存的是a的值,所以a的改变并不会影响b。

而引用传递b存的是地址。当a的值在内存中变了,b的值也会跟着改变。




原创粉丝点击