千家信息网

Java中参数传递是怎样的

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"Java中参数传递是怎样的",在日常操作中,相信很多人在Java中参数传递是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java中参数传递是怎
千家信息网最后更新 2025年01月18日Java中参数传递是怎样的

这篇文章主要介绍"Java中参数传递是怎样的",在日常操作中,相信很多人在Java中参数传递是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java中参数传递是怎样的"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

Java中的参数传递:分为值传递引用传递
但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指针的东西。
值传递就是把基本变量的值拷贝一份,传递这个拷贝。引用传递则是传递的引用的地址,也就是该变量在内存空间的地址。

1.值传递

只有基本数据类型采用值传递,特点是传递的是值的拷贝,传递完后两者就没有关系了。也就是说方法内和方法外的值互不相干

基本数据类型:
·整型:int,long,byte,short
浮点型:float,double
字符型:char
布尔型:boolean
注:8种基本数据类型以外的数据类型都为引用类型。

2.引用传递

指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
传递的是一个拷贝,即副本。也就是说,对于一个参数传递,存在两个地址指向同一个内存空间。这里我们可以用内存分配示意图来体现

3.String类型传递

先说结论,String类型传递与基本数据类型的传递效果相似。

说明:
String类对象一旦创建,其内容不可更改:
String类的所有方法都不会改变String类对象内容,要改变String类对象的值就必须创建一个新的String对象。
也就是说,当进行参数传递时,如果方法内对String类对象的值进行了修改,那么实际上是创建了一个新的String类对象,然后让原来的变量指向它而已。但是这个"原来的变量"是一份拷贝副本,只是一开始创建的时候与主方法中的传递的值相同而已,现在改变之后,两者就毫无关系了。

4.举例

1)代码

public class TestTransOfValue {public static void main(String args[]) { doubleval;        StringBuffer sb1, sb2;        String sb3;        char s[]={'a','p','p','l','e'};        val = 5.8;        sb1 = new StringBuffer("apples");        sb2=new StringBuffer("pears");        sb3 = new String("pear");        modify(val, sb1, sb2,sb3,s);        System.out.println(val);        System.out.println(sb1);        System.out.println(sb2);        System.out.println(sb3);        System.out.println(s);}public static void modify(double a, StringBuffer r1,                                     StringBuffer r2,String r3,char s[] )  { a = 6.8;      r1.append(" taste good");    r2=null;    r3="banana";    s[2]='R';       }}

2)运行结果
5.8
apples taste good
pears
pear
apRle

3)解释:
①val是基本数据类型,值拷贝的两者直接互不影响。所以modify方法内对a的操作不影响主方法的val的值 因此val=5.8
②sb1为StringBuffer型,不属于基本类型,因此是引用传递。r1.append()修改了r1地址对应的内存空间的值,因此sb1的值改变了
③sb2同样是StringBuffer型,属于引用传递。但r2=null是修改的r2的地址的值而不是r2地址指向的内存空间的值,因此sb2指向的还是原来指向的内存空间,且内存空间的值未被改变。
④sb3为String类型,属于引用传递。但是String类型是一个特殊的类,在方法内改变String的值并不能改变主方法中的String的值,因此String仍然是pear
⑤char数组为引用传递,且s[2]=‘R’,确实修改的是内存空间的值,因此char数组的值被改变

到此,关于"Java中参数传递是怎样的"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

类型 方法 内存 参数 地址 空间 对象 拷贝 数据 也就是 变量 指向 学习 也就是说 内容 副本 只有 数组 更多 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库的安全性的授权 mc组件管理连接服务器失败 英语作文网络安全计划 长沙佳龙软件开发有限公司网站 交通行业网络安全风险有哪些 饥荒 开服务器 软件开发厂家代理商 智能照明系统数据库设计 高中升学数据库 北京美玲互联网科技有限公司 网络安全课程设计实验书 网络安全知识与设计 教育局网络安全攻防演练总结 云服务器没有续费服务还能用吗 电脑服务器旁边工作有辐射吗 samba服务器配置成功 yaf数据库操作 软件开发薪水能达到多少钱 松节油视频软件开发 税务总局网络安全 医院网络安全周实施活动方案 郴州市电脑软件开发培训 海南博思高科软件开发 汉阳专业的软件开发企业 linux中的数据库连接 idea离线安装数据库连接驱动 SQL更新数据导致数据库变大 关于数据库的数据结构与特点 软件开发服务招标规定 长宁区网络软件开发代理品牌
0