java基本类型引用类型_Java 基础 - 基本类型vs引用类型,传值vs传引用

传值 vs 传引用

传值

就是把实参(a)这个值复制给传参(b),因此之后的修改都是对传参的修改,和实参无关。

public void main(){

int a = 1;

change(a);

}

public void change(int b){

b = 2;

}

2003a64f057f27def43d419719422f9f.png

传引用

依然是把实参(a)的引用复制给传参(b).

Integer,Double,String特殊引用类型

由于Integer, String等类中,代表value的变量被声明为final,也就是说一旦被初始化value,则不能再被改变。

所以,一旦当传参b被赋予一个新的Integer,或者“试图改变”它的值,实际上都是赋予b一个新的Integer Object.

public void main(){

Integer a = new Integer(1);

change(a);

}

public void change(Integer b){

b = 2;

}

69f1c7da8da09266f3da81b28609db28.png

普通引用类型

public void main(){

User a = new User("cx");

change(a);

}

public void change(User b){

b.setName("gh");

}

835fefe8565bd09102e802188c28583e.png

基本概念

ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2

这里再给大家普及一个概念,在 Java 中基本类型和引用类型的区别。

在 Java 中数据类型可以分为两大类:基本类型和引用类型。

基本类型也称为值类型,分别是字符类型 char,布尔类型 boolean以及数值类型 byte、short、int、long、float、double。

引用类型则包括类、接口、数组、枚举等。

Java 将内存空间分为堆和栈。基本类型直接在栈中存储数值,而引用类型是将引用放在栈中,实际存储的值是放在堆中,通过栈中的引用指向堆中存放的数据。

48dc136630fae3001fd7409abb7e8952.png

上图定义的 a 和 b 都是基本类型,其值是直接存放在栈中的;而 c 和 d 是 String 声明的,这是一个引用类型,引用地址是存放在 栈中,然后指向堆的内存空间。

下面 d = c;这条语句表示将 c 的引用赋值给 d,那么 c 和 d 将指向同一块堆内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值