Java "="(赋值过程)

基本类型赋值

int a = 3;

int a声明 int 型的引用a, 存储在栈中
3 查找堆栈中是否存在为3的字面值,若不存在,在堆栈中开辟一个地址存放3字面量
= 将引用a指向存储3字面量的地址

String类型赋值

String s = "hello";

String s 声明 String 类型的引用 s,存储在栈中
"hello" 存储在String 常量池中
= 将引用s指向存储hello的地址

类赋值

StringBuffer buffer = new StringBuffer("hello");

new StringBuffer("hello") 在堆中创建一个对象
StringBuffer buffer 声明StringBuffer类型的引用buffer
=buffer指向创建的对象的地址


总结

= 左边声明某类型的引用,存储在栈中
= 右边将存储在内存中,基本类型值存储在栈中,常量值存储在常量池中,对象存储在堆中
= 连接引用指向存储的地址


参数传递

理解为引用的传递
但是在效果上基本数据类型和类的参数传递有区别
这是为什么呢?

你可能感兴趣的:(Java "="(赋值过程))