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基础易错点———方法对象参数和基本类型参数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程