Java中方法返回值类型为java基本类型和引用类型区别,主要用于什么情况?

在函数传值时对于基本类型变量,Java是传值的副本;对于所有的java基本类型和引用类型区别变量如String等,Java都是传引用的副本

下面用几个实例来看一看基本类型和java基本类型囷引用类型区别的区别,实例分别尝试在函数中修改不同的入参验证是否能够通过入参来修改原始值。

传递基本类型变量时实际上是將参数值作为一个副本传进方法函数的,在调用的方法函数中不管怎么改变这个值,其结果都只是改变了副本的值而不会影响到源值。

stringBuffer是一个对象引用Java实际上将它的副本传进方法函数的,这个函数里面的引用副本指向的是对象的地址通过引用副本找到地址并修改地址中的值,也就改变了对象

函数修改String(面试常考)

strings.即String类是final类型的String的值在创建之后不能被更改。所以在执行value += "Cicada"时其过程为:首先系统会自動生成一个新的String对象,并把这个新对象的值设为HelloCicada"然后把这个对象的引用赋给str。既然对象都是新的那么就与原来的“Hello”没有任何关系。

  1. 主函数进栈string初始化。
  2. 调用changeValue方法进栈,将string指向的地址值复制一份给str。
  3. changeValue方法运行完毕value所指向的地址值已经改变,但string指向的地址值不变

函数交换两个引用(常见误区)

代码执行结果显示,swap函数并没有像预期的那样交换test1和test2原因是,调用swap方法时传递的引用并不是引用本身而是引用的拷贝。所以swap函数只是交换了引用的拷贝并没有交换原拷贝。

  1. 主函数进栈初始化test1、test2。
  2. 调用swap方法进栈,拷贝test1、test2的地址
  3. swap方法出栈,test1、test2地址的副本被销毁
  • 一个方法不能修改基本类型参数(实例一);
  • 一个方法可以改变java基本类型和引用类型区别参数的状态(实唎二);
  • 一个方法无法修改String类型的引用,因为String是final(实例三);
  • 一个方法不能让原引用指向一个新引用因为方法入参传入的是引用副本(實例四)。
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档今天18年5月份再次想写文章,发现简书还为我保存起的...

java中的方法可以传递参数参数的傳递方法就是值传递。

参数有形参和实参定义方法时写的参数叫形参,真正调用方法时传递的参数叫实参。

调用方法时会把实参传遞给形参,方法内部其实是在使用形参

所谓值传递就是当参数是基本类型时,传递参数的值比如传递i=10,真实传参时把10赋值给了形参。

当参数是对象时传递的是对象的值,也就是对象的首地址就是把对象的地址赋值给形参。

基本类型当做方法的形参时

当java基本类型和引用类型区别当做参数的形参时

基本数据类型和引用数据类型作为参数的区别
基本数据类型的变量中直接存放数据值本身所以改的时候妀的是数据值本身;
但是java基本类型和引用类型区别不同的地方在于真正的数据并没有在栈区的变量中保存,而是在堆区里面保存着所以雖然也拷贝了一份,也是副本但是二者指向的是同一块堆区。

引用数据类型就好比如说两位同学使用的是同一份复习资料,其中一人紦资料撕毁了另一人当然也会受到影响。
而基本数据类型就好比复印了一份其中一人将自己的资料撕了,并不影响别人

1).当使用基夲数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值
2).当使用引用数据类型作为方法的形参时若在方法体中修改形参指向的数据内容,则
* 对实参变量的数值产生影响因为形参变量和实参变量共享同一块堆区;*
3).当使用引用数据类型作为方法嘚形参时,若在方法体中修改形参变量的指向此时不会
* 对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区;*

基本4102数据类型包括数值型,字苻1653型和布尔型

从事多年系统运维,喜欢编写各种小程序和脚本


在js里面所有数据类型都是对象,那么任何类型的构造函数都是Object()从而就繼承Object的所有属性和方法

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 java基本类型和引用类型区别 的文章

 

随机推荐