本笔记来源于:尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)
b站视频
1.针对于方法内变量的赋值举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| System.out.println("***********基本数据类型:****************"); int m = 10; int n = m;
System.out.println("m = " + m + ", n = " + n);
n = 20;
System.out.println("m = " + m + ", n = " + n);
System.out.println("***********引用数据类型:****************");
Order o1 = new Order(); o1.orderId = 1001;
Order o2 = o1;
System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
o2.orderId = 1002;
System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " +o2.orderId);
|
规则:
如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。
2.针对于方法的参数概念
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传递给形参的数据
3.java中参数传递机制:值传递
规则:
- 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
- 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。
推广:
如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。
注意: Integer属于引用数据类型,其进行值传递的时候是数据的地址值,但是修改之后,你却发现其数据值没有改变,这是为什么呐!!?
答案见此链接: https://blog.csdn.net/SICAUliuy/article/details/88554649
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class test{ public void add3(Integer i){ System.out.println("i赋值前的地址:"+System.identityHashCode(i)); i=3; System.out.println("i赋值后的地址:"+System.identityHashCode(i)); } @Test public void test(){ Integer a=5; System.out.println("a赋值前的地址:"+System.identityHashCode(a)); add3(a); System.out.println("a赋值前的地址:"+System.identityHashCode(a)); a=10; System.out.println("a修改值后的地址:"+System.identityHashCode(a)); System.out.println(a); }
———————————————— 版权声明:本文为CSDN博主「站在风口的猪猪侠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https:
|
结果
1 2 3 4 5
| a赋值前的地址:352359770 i赋值前的地址:352359770 i赋值后的地址:243745864 a赋值前的地址:352359770 a修改值后的地址:69978035210
|
通过测试,返现Integer每次改变值,都回发生地址的变化。
还需要注意的一点是:
在Integer源码中,int值是final修饰的,不可以改变
1
| class Integer{final int value; //一旦赋值,就不能改变。}
|
4.典型例题与内存解析:
【例题1】

【例题2】
