`
kgdso
  • 浏览: 87944 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java的参数传递原理

阅读更多

java传参数的原理:

1. 对于基本类型 int, long, char, float, double等,是传值的。就是

int a = 0;

func(a);

这里无论func对参数a做了什么操作,在函数体外a都不受任何影响。

 

2. 对于对象类型,如StringBuffer, String,Integer等,在作为函数的参数的时候传过来的是一个对象实例的引用。说白了就是复制了一个对象的地址进来。比如:

String a = "ABC";

func(a);

 

void func(String s){

   s="BCD";

}

这里的话,当a作为参数传给func的时候,func里面的初始化类似会做一步:String s=a的操作,那么一个新的String对象引用s将会被创建,而s指向的是原来a指向的内容。那么s和a都会操作同一个堆里面的对象了。但是为什么s="BCD"以后,外面的a的值还是"ABC"呢?那是因为执行完 s="BCD"之后,s已经指向另外一个字符串常量了,当然不会对a造成影响。

 

其实出现这样的误会很大程度在于String类型的特殊性。其实一个string的对象被new出来以后,它的这块内存里面的内容是不会被改变的了(其实String类压根没有提供方法给你修改,你看到的replace和concat方法都没有改变这个String本身)。所以你把这块内存的引用放到函数里面去,其实都是没有办法修改的,只能新建立 一些string的内存引用。而其它类型,因为是能够操作堆里面的对象的内容的,所以使用引用对这些对象进行修改的时候,就能影响到函数外面的另外一个引用了。

 

 

0
0
分享到:
评论
2 楼 kgdso 2011-04-02  
qqdwll 写道
呵呵, 前几天也刚好写了一遍文章关于java值传递的。  但我感觉楼主还不是真正了解了。 你可以参考我的那篇文章 http://qqdwll.iteye.com/admin/blogs/970001。  有机会大家可以一起讨论讨论。

一样的意思。。。当object作为参数的时候,就是传了个对象的遥控器(引用)过来。你使用这个遥控器操作对象,或者指向另外一个对象,结果当然是不一样的了。
1 楼 qqdwll 2011-03-24  
呵呵, 前几天也刚好写了一遍文章关于java值传递的。  但我感觉楼主还不是真正了解了。 你可以参考我的那篇文章 http://qqdwll.iteye.com/admin/blogs/970001。  有机会大家可以一起讨论讨论。

相关推荐

    Java方法参数传递机制原理解析

    Java方法参数传递机制原理解析 Java方法参数传递机制是指在Java中,方法调用时传递参数的机制。参数传递机制可以分为两种:值传递和引用传递。 值传递是指基本数据类型的参数传递,值传递的体现是数值的传递。在值...

    java参数传递

    根据题目要求,我们将详细解析如何使用Java Applet来接收HTML文件中的参数,并计算矩形的面积与周长,最后将结果展示在...但理解Java Applet的基本原理仍然有助于我们更好地理解和学习软件工程中的参数传递等概念。

    Java参数传递及值传递实现原理详解

    Java参数传递及值传递实现原理详解 Java语言中,参数传递是方法调用过程中的一种机制,讲述了Java参数传递及值传递实现原理详解。参数传递有两种方式:按值传递和按引用传递。 1. 按值传递(Call by Value) 按值...

    利用ASP实现JAVA动态参数的传递

    ### 利用ASP实现JAVA动态参数的传递:深入解析与实践 #### 引言 ...通过深入理解ASP的功能及其与Java参数传递的机制,开发者能够构建出更加智能、响应迅速的Web服务,满足日益增长的互联网需求。

    浅析Java引用类型和方法参数传递

    ### 浅析Java引用类型和方法参数传递 #### 一、引言 在Java编程语言中,理解数据类型的处理方式对于编写高效、可维护的代码至关重要。本文将深入探讨Java中的引用类型及其如何影响方法参数的传递机制。通过具体实例...

    JAVA语言中参数传递的深入剖析.pdf

    了解Java语言中参数传递机制的原理对于初学者来说非常重要,可以帮助他们更好地理解Java语言的工作机制。 Java语言中参数传递机制是一个复杂的主题,需要深入地剖析Java语言的变量内存分配机制和参数传递机制,以便...

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

    - **理解参数传递的基本原理**:了解Java方法调用过程中如何将参数传递给被调用的方法。 - **掌握基本类型参数传递的特点**:识别和分析基本类型参数在传递过程中的行为模式。 - **了解引用类型参数传递的工作机制**...

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

    例如,你可以创建一个shell脚本来执行DataX的同步任务,并将where条件作为参数传递。当条件包含特殊字符(如单引号 `'`、双引号 `"`、反斜杠 `\` 或者管道符号 `|` 等)时,必须正确转义以防止shell解释器错误解析。...

    androidNDK编程java传递参数到c

    通过上述步骤,我们就完成了Java到C/C++的参数传递。需要注意的是,不同类型的数据在Java和C/C++之间传递时,需要进行适当的类型转换,比如Java的`String`需要转换为C的`const char*`,而Java的`int`在C/C++中对应`j...

    JS与Java交互,Java与JS 交互(参数)

    在Android开发中,JavaScript(JS)与Java的交互是一个...综上所述,Java与JS的交互涉及多个层面,从简单的调用和参数传递到复杂的数据交换和状态管理。理解这些原理和实践,将有助于开发出功能丰富的Android混合应用。

    Java的可变参数讲解代码(使用方式、原理、结合泛型、使用元组或列表进行参数传递、 使用默认值、缓存计算结果、实战构建动态日志)

    在方法声明中使用省略号(...) 表示,可以将不定数量的参数传递给方法。可变参数使得方法更加灵活,可以接受任意数量的参数,并以数组形式访问这些参数。 适用人群: Java可变参数适用于所有使用Java编程语言的...

    Xfire调用webservice无法传递参数问题

    总之,解决Xfire调用Web服务时参数传递问题需要对Web服务原理、Xfire框架以及Java编程有深入理解。通过逐步排查上述可能出现的问题,通常可以找出问题的根源并采取相应的解决方案。在实际开发中,保持良好的编程习惯...

    String作为形式参数传递给方法的情况

    Java 中 String 作为方法参数的传递机制详解 在 Java 语言中,String 类型的变量作为方法参数时,表现出了...同时,在 Java 中,基本类型和对象类型的参数传递机制是不同的,前者是“值传递”,后者是“引用传递”。

    使用一般参数传递方式,实现简单计算器的加减乘除后端接口功能。

    本主题聚焦于使用“一般参数传递方式”来创建一个能够处理加、减、乘、除运算的后端接口。这里我们将深入探讨如何实现这个功能,并通过具体的HTTP请求地址`Http://localhost:8080/simplecalculator`来演示其工作原理...

    java可变参数

    实际参数传递 当我们使用可变参数调用方法时,编译器会自动将这些参数封装成一个数组,然后传递给方法。因此,上述`printNumbers`方法内部的`numbers`实际上是`int[]`类型,可以像处理普通数组一样操作。 ### 3. ...

    java课程讲义(java入门与提高)

    内容可能包括Java的跨平台特性(Write Once, Run Anywhere,WORA),JVM(Java虚拟机)的工作原理,以及如何安装和配置Java开发环境。 2. **Java基本语法**: 这是学习任何编程语言的基础,会涉及到变量声明、数据...

    JNI学习二:字符串参数传递与返回值

    JNI(Java Native Interface)是Java平台的标准组成部分,它允许Java代码和其他语言写的代码...这个示例中的"JNI学习二:字符串参数传递与返回值"就是一个很好的起点,通过实践可以深入理解JNI的工作原理和使用技巧。

    Java调用存储过程--传入集合参数

    在Java应用中,调用数据库存储过程时,往往需要处理复杂的参数传递,特别是当参数为集合类型时,这一过程变得更加具有挑战性。本文将深入探讨如何在Java中有效地调用存储过程,并向其传递集合参数,主要聚焦于Oracle...

    java反射原理详解

    这使得我们能够在运行时调用未知的方法,传递参数并获取返回值。 5. **创建实例**:`Class`对象的`newInstance()`方法用于创建类的新实例,前提是类有默认构造器。如果需要调用特定构造器,可使用`Constructor`类的...

    JAVA过滤器及原理

    本教程将深入讲解Java过滤器的工作原理、基本用法以及如何创建一个简单的过滤器。 一、过滤器的原理 Java过滤器基于Servlet规范中的Filter接口,该接口定义了三个关键方法:doFilter、init和destroy。当用户向Web...

Global site tag (gtag.js) - Google Analytics