`
msalkill
  • 浏览: 2067 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java与javascript关于传参的一点体会

阅读更多
今天在学习的时候遇到了一个问题,JavaScript函数传参的问题,基本类型和引用类型都是传值!起初我找了本书看了下,上面是这么说的,总是觉得和java的传参方式是不同的,决定做个比较。先前我一直认为java是基本的传值引用的传引用,但是结果却与我想的完全不一样。
首先是js的示例代码:
var obj = {a:"aaa"};
function test(obj2){
    alert(obj2.a);
    obj2 = {a:"bbb"};
    alert(obj2.a);
}
test(obj);
alert(obj.a);

输出的结果是aaa,bbb,aaa。obj.a没有变化,也就是说test函数传进去的是值,不是引用本身。
本以为java不是这样的,会传递引用进入到方法中,故作了一个例子实验下,结果出乎意料。
以下是java的代码:
public class call {
	private String s = "this is call";

	public String getS() {
		return s;
	}

	public void setS(String s) {
		this.s = s;
	}
}

接下来是调用上面类:
public class run {
	
	public void testReferance(call cc){
		System.out.println(cc.getS());
		cc = new call();
		cc.setS("this is not call");
		System.out.println(cc.getS());
	}
	
	
	public static void main(String[] args) {
		run u = new run();
		call c = new call();
		u.testReferance(c);
		System.out.println(c.getS());
	}
}

结果是:
this is call
this is not call
this is call
实参中的内容的副本给了形参,这两个内容都指向了堆中的同一个对象,即便将形参的内容指向其他的对象,实参指向的对象也不会改变。
基本类型传递的的确是实实在在的“值”,而引用类型则是传递的是指向同一个对象的内容,从某种意义上说也是“值”,只不过不同于基本类型的是实实在在可以直接操作的值,其实争论到底叫什么,是没有意义的,只要理解了内存中的变化即可。
“在栈内存里面有两个指向堆内存中同一个对象的引用”
分享到:
评论
2 楼 msalkill 2012-05-24  
tabsuny 写道
,哥哥你在
public void testReferance(call cc){ 
        System.out.println(cc.getS()); 
        cc = new call(); 
        cc.setS("this is not call"); 
        System.out.println(cc.getS()); 
    } 

他能一样吗?

我的意思其实是想说明参数类型不论是基本类型还是非基本类型,调用方法时,传递的都是“值”,一个传的是是实实在在人类能理解的值,另外一个传的是人类不能理解的值,而这个值是用来指向操作的对象的。
很久以前我是认为传递的是对象本身。。。
1 楼 tabsuny 2011-08-22  
,哥哥你在
public void testReferance(call cc){ 
        System.out.println(cc.getS()); 
        cc = new call(); 
        cc.setS("this is not call"); 
        System.out.println(cc.getS()); 
    } 

他能一样吗?

相关推荐

    Java与Java Applet和JavaScript间的混编方法.pdf

    "Java与Java Applet和JavaScript混编方法" Java与Java Applet和JavaScript混编方法是指在网页开发中,通过灵活使用Java、Java Applet和JavaScript三种语言的优点,实现它们之间的互相补充,开发更完美的Web应用程序...

    Java/JavaScript专家门诊

    "Java/JavaScript专家门诊.pdf"可能包含了关于这两门语言的常见问题解答、调试技巧、性能优化建议、最新技术趋势分析等内容。对于Java开发者,可能会讨论JVM优化、Spring框架的应用、并发编程的最佳实践等。对于...

    Java执行JavaScript代码.pdf

    标题和描述中提到的“Java执行JavaScript代码”指向了一个特定的技术范畴,即在Java环境中执行JavaScript代码。这通常涉及到使用Java中的脚本引擎API,特别是那些支持JavaScript的实现。从提供的部分内容中可以提炼...

    Java与JavaScript交叉调用技术在Web开发中的应用.pdf

    "Java与JavaScript交叉调用技术在Web开发中的应用" 本文探讨了Java与JavaScript交叉调用技术在Web开发中的应用,并与单独使用Java、JavaScript编程进行了比较,该技术具有明显的优点。 Java语言是由Sun公司设计的...

    浅析页面中Java与JavaScript脚本的区别.pdf

    浅析页面中Java与JavaScript脚本的区别 Java 与 JavaScript 脚本是两种不同的编程语言,它们在 Web 开发中扮演着重要的角色。虽然它们都可以嵌入到 HTML 页面中,但是它们的表示方式、执行过程和应用场景都是不...

    Java 和 Javascript Bridge 封装.zip

    Java和JavaScript Bridge是一种技术,它允许Java代码与JavaScript代码之间进行通信,特别是在Android环境中,当在WebView中嵌入网页内容时,这种桥接技术尤为重要。这个开源项目"Java 和 Javascript Bridge 封装.zip...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    此外,为了提高可维护性和扩展性,你可以考虑使用更高级的脚本语言(如Groovy或JavaScript)作为DataX作业的配置,这样可以更好地处理动态逻辑。 总之,Java调用shell脚本向DataX传递参数,尤其是在where条件中包含...

    基于Java与JavaScript的海外寻亲系统设计与实现源码

    该项目是一个基于Java与JavaScript的海外寻亲系统设计与实现源码,包含296个文件,其中200个Java源文件、19个JavaScript脚本、16个XML配置文件、13个CSS样式表、12个PNG图片文件、5个YML配置文件、4个Class文件、4个...

    基于Java与JavaScript的疫苗接种预约系统设计源码

    该项目是一个基于Java与JavaScript的疫苗接种预约系统设计源码,包含31个文件,涵盖9个XML配置文件、7个Java源文件、7个JAR包文件、2个JSP页面、1个Git忽略文件、1个HTML页面、1个IML配置文件、1个Web视图目录、1个...

    Android-为WebView中的Java与JavaScript提供安全可靠的多样互通方案

    为了解决这个问题,我们需要采取更安全的方式来实现Java与JavaScript之间的通信。本文将探讨一种安全可靠的方案,通过包装JavaScript调用函数和回调函数,支持异步回调,以确保数据传输的安全性。 首先,我们要理解...

    可互操作的Java和JavaScript AES/128/192/256加密算法代码

    本主题主要关注的是如何在Java和JavaScript之间实现可互操作的AES(Advanced Encryption Standard)加密算法,这涉及到128、192和256位的密钥长度。AES是一种广泛应用的块密码,以其高效性和安全性著称,广泛用于...

    js直接调用exe传参

    ### js直接调用exe传参 #### 背景与目的 在Web开发过程中,有时候我们需要从HTML页面通过JavaScript(简称JS)来调用本地的应用程序,并传递参数给这些应用程序。这种需求通常出现在需要与本地资源进行交互或者执行...

    基于Java与JavaScript的智联自如链家等主流网站爬虫设计源码

    该项目为基于Java与JavaScript的综合性网站爬虫设计源码,包含133个文件,涵盖109个JavaScript文件、14个Java文件、3个XML文件、2个Markdown文件、1个Git忽略文件、1个许可证文件、1个Excel文件、1个HTML文件、1个...

    基于Java与JavaScript的医院病人信息管理系统设计源码

    该项目是一个基于Java和JavaScript的医院病人信息管理系统设计源码,包含157个文件,涵盖了后端Java类文件、前端JavaScript脚本、样式表CSS以及界面设计相关的JSP页面。具体文件类型包括55个JPG图片文件、17个JAR包...

    JAVA源码JavaScript万年历JAVA源码JavaScript万年历

    JAVA源码JavaScript万年历JAVA源码JavaScript万年历

    java转js工具

    1. **Java与JavaScript的差异** - Java是一种静态类型的、面向对象的语言,而JavaScript是动态类型的、基于原型的。这意味着Java在编译时需要确定变量类型,而JavaScript在运行时才确定。 - JavaScript主要用作...

    java与javascript之间json格式数据互转详解.docx

    java与javascript之间json格式数据互转详解.docx

    java与javascript之间json格式数据互转详解.pdf

    java与javascript之间json格式数据互转详解.pdf

    基于Java和Javascript的家教系统设计源码

    该项目是一个基于Java和Javascript的家教系统设计,旨在提供一个简洁、高效的家教管理解决方案。系统采用Java开发,项目结构清晰,采用的技术是经典的SSM框架,非常适合Java项目入门学习和企业级Java开发熟悉。

    Android实现java和javascript通信

    在Android开发中,Java和JavaScript之间的通信是一种常见的需求,特别是在构建混合应用或者利用Webview展示网页内容时。本文将深入探讨如何在Android中实现在Java和JavaScript之间建立桥梁,进行有效的数据交换和...

Global site tag (gtag.js) - Google Analytics