`
zxmzfbdc
  • 浏览: 47199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java值传递还是引用传递的验证

阅读更多

   java到底是值传递,还是引用传递?以前国内的java开发者有过很多争论,由于《Practical java》等书籍的引入,现在大家都知道java是严格的值传递,基本数据类型不会有什么问题,但是针对对象和数组,执行的结果,似乎应该是引用传递。

   在《Practical java》中,给出了说明,针对对象和数组,事实上,传递的内容,是引用的值,而不是引用本身。但是怎么验证,网上没有例子,书上也没有给,现在给出一个例子,可以很好的说明,java确实是值传递。例子如下:

public class Test{
	public void c(Model m1, Model m2){
		Model m = m1;
		m1 = m2;
		m2 = m;
	}

	public void cd(int[] a, int[] b){
		int[] c = a;
		a = b;
		b =c;
	}

	public static void main(String[] args){
		Model m1 = new Model();
		m1.setName("m1");
		Model m2 = new Model();
		m2.setName("m2");
		Test app = new Test();
		app.c(m1, m2);
		System.out.println(m1.getName()+"---" + m2.getName());

		int[] a = new int[]{1};
		int[] b = new int[]{2};
		app.cd(a, b);
		System.out.println(a[0] + "----" + b[0]);
	}
}

class Model{
	private String name;

	public void setName(String name){
		this.name = name;
	}

	public String getName(){
		return name;
	}
}
 

   打印的结果是

D:\>java Test
m1---m2
1----2

   这是因为,m1和m2本身是对象的引用没错,但是传入方法c的参数,实际上是m1和m2的副本,因此只是两个副本进行了交换,而m1和m2本身并没有被交换。交换数组的方法cd,原理与之相同。

0
0
分享到:
评论

相关推荐

    Java零基础-参数传递-1.md

    内容概要: 本文详细介绍了Java中的参数传递概念。...建议通过编写简单的Java程序,并使用不同的参数传递方式来验证理论和加深理解。 如有疑问,可以参考Java官方文档或搜索相关资料,进一步扩展学习。

    Java零基础-参数传递-2.md

    内容概要: 本文进一步介绍了Java中的参数传递概念。...建议通过编写简单的Java程序,并使用不同的参数传递方式来验证理论和加深理解。 如有疑问,可以参考Java官方文档或搜索相关资料,进一步扩展学习。

    Java服务器端+Android端(验证用户登录)

    Java服务器端:环境配置为(Tomcat7.0+jdk1.8+MySQL+javaEE平台)使用Java语言搭建的服务器,通过json传递数据。 Android端:用Eclipse开发的。 功能描述:首次安装APP具有启动页,点击启动页后,进去登录页面。...

    Java正则表达式 验证手机号码是否合法并脱敏的完整实例

    本案例我们介绍使用Java代码的正则表达式来验证手机号码其是否合法。 具体编写步骤: 1、封装一个工具类 2、验证手机号码的代码方法编写 3、如果验证通过,对该手机号码脱敏处理,并输出到控制台打印出来。

    java 直接调用python脚本,并传递参数代码实例

    主要介绍了java调用python脚本传递参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java实用程序设计100例(源代码)

     Java控件的相互控制与消息传递  Java圆形的按钮制作  密码验证框  视频播放程序  定时器的使用  Java建立Http连接  用RMS记录个人信息  Java建立与断开数据库的连接  Java创建和配置数据源  ...

    JAVA面试题最全集

    1.Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑) 2.简单介绍您所了解的MVC。 3.简单介绍所了解的XML。 4.文档和编码规范 5.Java中的分页、效率考虑。 6.简单介绍您所...

    RSA数字签名和验证

    用java写的RSA签名及其验证代码,密钥等传递可以使用编码格式,大家可以看看! 用java写的RSA签名及其验证代码,密钥等传递可以使用编码格式,大家可以看看! 用java写的RSA签名及其验证代码,密钥等传递可以使用...

    WebService 添加头部验证信息

    对WebService的调用方,添加头部验证信息

    java jdk实列宝典 光盘源代码

    java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;排序类; 3数字 数字类;格式化数字;转换数字进制;生成随机数; 4数组和集合 使用Arrays类;动态调整数组长度;java为数据结构中的...

    java 经典面试题 于网络分享

    5. Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的? A. 重写是父类与子类之间多态性的一种表现。 B. 重写是一个类中多态性的一种表现。 C. 重载是一个类中...

    Java核心技术II(第8版)

    7.13.6 使用本地剪贴板来传递对象引用 7.14 拖放操作 7.14.1 Swing对数据传递的支持 7.14.2 拖曳源 7.14.3 放置目标 7.15 平台集成 7.15.1 闪屏 7.15.2 启动桌面应用程序 7.15.3 系统托盘 第八章 JavaBean构件 8.1 ...

    java基础案例与开发详解案例源码全

    1.4.4 验证配置的正确性14 1.5 MyEcilpse工具介绍JavaSE环境安装和配置15 1.6 本章练习16 第2章 2.1 什么是程序18 2.2 计算机中的程序18 2.3 Java程序19 2.3.1 Java程序中的类型19 2.3.2 Java程序开发三步曲21 2.3.3...

    张孝祥Java就业培训教程.pdf

    内容简介 本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地...10.7 验证Applet对象在客户端如何存在 第11章 网络编程 11.1 网络编程的基础知识 11.2 Java编写UDP网络程序 11.3 Java编写TCP网络程序

    java数据库连接方法和实现

     JDBC-ODBC桥 这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。 类型2  本地API驱动 这种类型的驱动通过...

    Token验证的代码

    基于spring框架,数据交互是依据URLConnection进行数据传递的,参数在传递的过程使用RAS进行数据加密和MD5加密。

    Java经典编程源码基础例程300.zip

    实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 Eclipse开发工具 6 实例005 下载并运行Eclipse工具 7 实例006 为Eclipse安装中文包 8 实例007 使用Eclipse注释...

    password-validator:具有Java Micro Service的存储库,用于密码验证

    密码验证器 ... 要使用该API,必须在每个请求的标头(“ Authorization”)中传递一个身份验证令牌,该请求的值为“ admin”(使用招摇,只需通过页面开头的“ Authorize”选项对自己进行身份验证)在右

Global site tag (gtag.js) - Google Analytics