java基础易错点———方法对象参数和基本类型参数
2022/1/18 20:05:29
本文主要是介绍java基础易错点———方法对象参数和基本类型参数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
易错点:
在我们学习基础的过程中,基本上所有的教程都会告诉你,方法内参数的修改和方法外的对象不相关,修改了方法内的参数并不会修改到方法外变量。
例如:
public void test(){
int test=0;
test1(test);
System.out.println("test="+test);
}
public void test1(int test){
test=1;
System.out.println("test1="+test); }
打印结果中,test并不相同,与教程所教相同 (注意这里的变量是基本类型,并非基本类型的包装类)
然而
public class TestObject{
private String action;
getter+setter 重写toString方法
}
public void test(){
TestObject testObject=new TestObject();
test1(testObject);
System.out.println(testObject);
}
public void test1(TestObject testObject){
testObject.setAction("陈皮");
System.out.println(testObject); }
发现打印的结果testObject对象是一模一样的! 不重写toString方法,他们的内存地址也是一模一样的!
这是为什么呢?
首先,方法内的参数,他的存储区在在方法栈中,方法外的那个变量则是放入堆内存中,两者的内存地址不同,自然不是同一个东西,可以理解成进击的巨人一样,墙里面的人和墙外面的人是不一样的,外面是巨人,里面的人没有变成巨人。
当方法内参数声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。
类中的引用类型,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。
所以你可以发现他们的内存地址时一模一样的,也就是说方法外和方法内的引用类型用的都是一个内存地址,自然他的修改就会同步了。
小结:
很多东西都是很细节的,需要你去发现,这个是我刚入职时才发现区别,所以不要焦虑,很多东西都是入职才能发现精彩哦!
最后,安利一本java编程思想这本书,这个书可以在你学完框架入职后进行进阶基础使用
这篇关于java基础易错点———方法对象参数和基本类型参数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?