栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础易错点——方法引用类型参数和基本类型参数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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编程思想这本书,这个书可以在你学完框架入职后进行进阶基础使用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号