博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中数据的传递方式到底是怎样的!
阅读量:6679 次
发布时间:2019-06-25

本文共 1356 字,大约阅读时间需要 4 分钟。

今天早上我了一道有关java的题。主要考点是考java中值得传递方式。

之前我在javaoo里总结的是:基本数据类型中保存的是实际的值,引用数据类型保存的是被引用的内存地址,那么基本数据类型就是按值传递,引用数据类型就是按地址来传递的。(难道我一开始就错了)

题是真样的:

1 public class SendValue{ 2     public String str="6"; 3     public static void main(String[] args) { 4         SendValue sv=new SendValue(); 5         sv.change(sv.str); 6         System.out.println(sv.str); 7     } 8     public void change(String str) { 9         str="10";10     }11 }

输出的结果是:?6

 有解释说:change方法里面是将传入的参数修改成10,但是并没有对SendValue的属性str就行修改,要修改必须指明this.str="10",所有答案还是6。

 

还有一题是这样的:

1 public class Example{ 2     String str=new String("hello"); 3     char[]ch={'a','b'}; 4     public static void main(String args[]){ 5         Example ex=new Example(); 6         ex.change(ex.str,ex.ch); 7         System.out.print(ex.str+" and "); 8         System.out.print(ex.ch); 9     }10     public void change(String str,char ch[]){11         str="test ok";12         ch[0]='c';13     }14 }

输出的答案是 : ?   hello and cb;

有的解释说:String类是final类型的,不能继承和修改这个类。str=“tesk ok”,其实是隐含的让Java生成一个新的String对象,那么就与原来的“Hello”没有任何关系,当函数结束,str作用结束,所以输出的还是“Hello”。 char ch[] 是传递引用,修改了原内容。

 

然后我上网查,java是按值传递还是引用传递,有的说:

按值传递:指的是在方法调用时,传递的参数是按值的拷贝传递。就是说传递的是拷贝后的值,与前面那个值无关了。

引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。传递前后都是同一个引用。

但是又有人说这是不对的,他说Java中只有按值传递,没有按引用传递!

各位大神们,给我解释解释嘛!

 

转载于:https://www.cnblogs.com/hellokitty1/p/5040805.html

你可能感兴趣的文章
strtus2的xml文件配置
查看>>
Error:No suitable device found: no device found for connection
查看>>
SCCM 2016 为客户端分发管理组件Configuration Manager(一)
查看>>
CentOS 7 多网卡绑定
查看>>
HIVE创建HBASE表
查看>>
k3cloud单据插件
查看>>
MaridDB主从复制,双主模型,半同步的配置
查看>>
麒麟开源堡垒机功能版本说明及升级方式说明
查看>>
交换机SPAN功能配置
查看>>
关于ssh的问题
查看>>
作业 rh124
查看>>
Docker创建tomcat镜像
查看>>
Restful学习随笔
查看>>
2018区块链学习路线及大纲附Java,Python,初级高级,深入浅出视频教程
查看>>
[Algorithms] Longest Common Subsequence
查看>>
常见排序算法总结(含C/C++代码)
查看>>
CurrentRowColor 选中行 颜色改变
查看>>
内容溢出显示省略号
查看>>
二维码(支持arc,苹果自带扫描,zbar扫描,二维码生成)
查看>>
更改matlab默认工作路径
查看>>