`

Java中传值调用

阅读更多
1 基本类型作为参数,
当方法参数为基本类型时,它是通过传值方式进行调用的,这种传递的特点是
1 它所传递的实参的值是一个副本
2 单向传递,方法内部可以修改形参的值,但这种修改不会影响到对应的实参
直观来看,传值过程相当于一赋值的过程,实参是右值,形参是左值,它们发生联系只在调用的那一时刻,以后二者再无联系。
2 复合类型作为参数
如果实参是一个类的对象,那么在调用相应的方法时,系统会将该对象的地址值传递给形参。
在java中虽然没有指针这一概念,程序员也不需要掌握它,但在系统内部,仍然存在指针。
由于c++中提供了传值调用和应用调用两种情况,于是有些程序员也认为ijava的对象采用的是引用传递,这其实是一种误解。java采用的是传地址值的调用方式。在某些情况下虽然和引用调用效果相同,但在另外一些情况下还是可以看到两者的区别。
例如
class onlyTest{
private int x=0;
public void setX(int ix){
x=ix;
}
public int getX(){
return x;
}
}
public class BooleanTest {
public void swap( onlyTest one, onlyTest two){
onlyTest temp;
temp=one;
one=two;
two=temp;
}
public void showDiffer(){
onlyTest ox=new onlyTest();
onlyTest oy=new onlyTest();
ox.setX(100);
oy.setX(200);
System.out.println(" 调用swap方法之前的值");
System.out.println(" ox.x="+ox.getX()+", oy.x="+oy.getX());
swap(ox,oy);
System.out.println(" 调用swap方法之后的值");
System.out.println(" ox.x="+ox.getX()+", oy.x="+oy.getX());
}
public static void main(String args[]){
BooleanTest va=new BooleanTest();
va.showDiffer();
}
}

在方法swap()中形参是两个onlyTest的对象,如果是引用调用那么交换这两个对象的值,将对实参ox和oy产生影响,程序实际运行后输出的结果如下
调用swap方法之前的值
ox.x=100, oy.x=200
调用swap方法之后的值
ox.x=100, oy.x=200
由于Java使用的是地址值传值的方式,所以在参数传递时把地址值由ox传给one,oy传给two.此时对于ox和one指向内存中的同一区域,oy和two指向同一区域,交换中one和two的地址发生转化,但是ox和oy没有发生变化。
分享到:
评论

相关推荐

    对Java中传值调用的理解分析

    在Java编程语言中,"传值调用"是指在函数或方法调用时,参数的值被复制并传递到函数内部。这意味着,当一个变量作为参数传递时,函数内部的操作不会影响到函数外部的原始变量。这个概念与C++中的"传引用调用"有所...

    lotus domnio java代理传值

    "lotus domnio java代理传值"这个主题主要涉及如何在Java代码中创建和使用代理,并在代理之间传递参数。 首先,让我们了解一下Lotus Domino Java代理的基本概念。在Lotus Domino Designer中,Java代理是用Java语言...

    Android NDK底层和java代码相互传值调用(实用经典Demo)

    在C++中调用Java方法称为回调,这需要定义一个Java方法并传递其地址给C++,C++在合适的时候调用这个地址执行Java方法。 8. **异常处理** 在C++中调用Java方法时,需要注意异常处理。使用`ExceptionOccurred`检查...

    JAVA中传值与引用问题

    ### JAVA中传值与引用问题详解 #### 一、引言 在计算机编程领域,特别是对于面向对象语言如Java而言,“传值”与“传引用”的概念是理解数据传递机制的关键所在。Java作为一种广泛使用的高级编程语言,在设计之初就...

    java的传值与传值后的改变

    在Java编程语言中,"传值与传值后的改变"是一个关键的概念,涉及到函数调用时参数的传递方式。在Java中,有两种基本的数据类型:原始类型(如int, double, char等)和引用类型(如类实例、数组)。它们在函数调用时...

    java中传值还是传引用的的认识

    "java中传值还是传引用的认识" Java 中的参数传递是值传递还是引用传递?这是一个经常引发讨论的问题。在 Java 中,参数传递是按值传递的,也就是说,传递给方法的参数是一个副本,而不是原始值本身。 当一个对象...

    java中传值与传引用

    在Java编程语言中,函数调用时的参数传递方式有两种:传值(Passing by Value)和传引用(Passing by Reference)。虽然Java官方文档中并未明确指出有传引用这一概念,但在实际操作中,Java的行为类似于传引用,尤其...

    JSP中java代码与js之间的传值

    在JavaServer Pages (JSP) 中,我们经常需要在Java代码和JavaScript之间传递数据。这在构建动态网页时尤其重要,因为Java代码通常用于处理服务器端逻辑,而JavaScript则负责客户端交互。这篇博客将探讨如何在JSP中...

    flex与java远程传值demo

    Flex与Java远程传值是Web开发中的一个重要技术组合,它允许富互联网应用程序(RIA)如Flex客户端与服务器端的Java应用进行数据交换。本示例是一个综合性的项目,包括两个模块:一个基于Flex的前端应用和一个基于Java...

    java的传值与传引用详解

    在Java中讨论传值还是传引用的问题,其实是源自C语言中的概念。Java中没有指针,因此不能直接谈论传引用的概念。正确的理解应该是:对于简单类型而言,传递的是值的副本;对于对象而言,传递的是指向对象的引用的...

    分析java的传值问题

    ### 分析Java中的传值问题 在Java编程语言中,函数调用时参数传递的方式是理解程序行为的关键之一。本文将深入探讨Java中基本类型与引用类型的数据传递机制,并通过具体的示例代码来阐述这两者之间的区别。 #### ...

    fragment之间用eventbus进行传值调用方法

    在Android开发中,Fragment是应用界面的重要组成部分,它允许我们在一个Activity中展示多个可交互的视图。在处理复杂的用户界面时,Fragment之间的通信成为了一个关键问题。EventBus是一个发布/订阅事件总线库,它...

    Java语言的方法参数浅析

    通过对典型程序的研究与分析可以看出JAVA语言的参数传递总是传值调用的,但是对于基本类型的参数和对象类型的参数来说,参数传递的情况不完全相同.Java语言不能直接使用传引用调用,但是可以通过数组的方式模拟传引用...

    java及C++中传值传递、引用传递和指针方式的理解.docx

    ### Java及C++中传值传递、引用传递和指针方式的理解 在程序设计语言中,函数调用时参数的传递方式对理解程序的行为至关重要。本文将深入探讨Java与C++这两种广泛使用的编程语言中参数传递的方式,包括值传递、引用...

    Java传值还是引用

    它涉及到如何在方法调用中处理变量的值。根据标题和描述,我们将深入探讨Java中传值与引用的区别,以及它们在实际编程中的应用。 首先,Java是一种“总是按值传递”的语言。这意味着无论是基本类型还是引用类型,当...

    java 之方法调用 方法传参 值传递还是引用传递字节码

    在Java编程语言中,方法调用和参数传递是核心概念,理解它们的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们...

    引用类型传值方法

    引用类型的传值行为体现在函数调用和方法参数传递上。当我们把一个引用类型变量作为参数传递给函数时,并不会创建该对象的新副本,而是复制了这个引用。这意味着函数内部对对象的任何修改都会影响到原始对象,因为...

    Java中参数传值的代码清单.pdf

    在Java编程语言中,参数传递是一个关键的概念,它涉及到函数或方法调用时,值如何从调用者传递到被调用者的过程。Java只支持两种类型的参数传递:基本数据类型(如int、double等)的传值和引用类型(如类对象)的...

    Activity和Fragment之间相互传值和调用方法

    至于Activity调用Fragment中的方法,可以直接通过持有的Fragment实例来调用公开的方法。但需要注意,只有在Fragment的状态已知(如onActivityCreated()之后)并且与Activity的生命周期同步时,才能安全地调用...

    Java参数传递PPT

    Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...

Global site tag (gtag.js) - Google Analytics