java基础——值传递和应用传递

public class StringTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
operate(a,b);
System.out.println(a.toString() + "," + b);
}

static void operate(StringBuffer x, StringBuffer y) {
// TODO Auto-generated method stub
y.append(x);
// System.out.println("=============");
// System.out.println("y=:"+y+"这是传入的b");
// System.out.println("x=:"+x+"这是传入的a");
y = x;
// System.out.println(y = x);
// System.out.println("-------------");
// System.out.println("y=:"+y);
// System.out.println("x=:"+x);
// System.out.println("=============");
}

}

结果:A,BA

比如string a=A这里字符"A"会开辟一个物理地址来储"A"这个值,引用a也会开辟一个物理地址用来存放字符"A"存储的所在地址。当你用string b = a来赋值的时候,是把a的物理地址传递给b而不是字符"A"的地址。这时候改变b引用的内容,丝毫不会影响到a引用的内容。然后方法结束后这两个临时的变量a和b都被抛弃了,这丝毫不会改变y所引用的对象。

时间: 2024-10-26 23:06:09

java基础——值传递和应用传递的相关文章

JAVA中值传递和引用传递,抽象,接口的概念

一.Java中的值传递和引用传递 值传递:方法调用时,实际参数把它的值传递给形式参数,方法执行过程中形参的改变和实参的改变会不影响. 这种传递是对于基础数据类型来说的. 引用传递:也称为传地址.方法调用的时候,实际参数的引用(地址,而不是参数的值)被传递给方法中相应的形式参数,在方法执行中,对形式参数的操作实际上就是对于实际参数的操作,方法执行过程中形式参数的改变将会影响实际参数的值.

这一次,彻底解决Java的值传递和引用传递

本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java只有值传递,有的博客说两者皆有:这让人有点摸不着头脑,下面我们就这个话题做一些探讨,对书籍.对论坛博客的说法,做一次考证,以得出信得过的答案. 其实,对于值传递和引用传递的语法和运用,百度一下,就能出来可观的解释和例子数目,或许你看一下例子好像就懂,但是当

堆栈详解 + 彻底理解Java的值传递和引用传递

本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨论的话题又是充满争议:有的论坛帖子说Java只有值传递,有的博客说两者皆有:这让人有点摸不着头脑,下面我们就这个话题做一些探讨,对书籍.对论坛博客的说法,做一次考证,以得出信得过的答案. 其实,对于值传递和引用传递的语法和运用,百度一下,就能出来可观的解释和例子数目,或许你看一下例子好像就懂,但是当

如何理解Java的值传递

结论 为了加深印象,先把结论放在文章开头. ++Java中只有值传递++. 形参与实参 在理解Java的值传递 实参Argument 实际参数,主调用函数传递给调用函数的参数 形参Parameter 形式参数,并非实际存在的变量,只在函数定义的函数内部使用.在调用函数时,实参将会给形参赋值,从而实现主调函数向调用函数传输数据的目的. 所谓的传递,就是实参给形参赋值的过程.这是我们理解值传递和引用传递的基础. 基本类型与引用类型 基本类型的变量保存值,即值就是变量自身. 而引用类型的变量的值表示对

Java中的值传递和引用传递

解释 1.Java中有没有引用传递? 答:Java中只有按值传递,没有按引用传递! 2.当一个对象被当作参数传递到一个方法中后,在此方法中可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递. Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言).如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的,如果在函数中改变了副本

Java 为值传递而不是引用传递

——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易混淆,特此总结一下 一.值传递和引用传递 首先这里我们先看下两者的异同: 值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值. 引用传递:也称为传地址.方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中

java中参数传递--值传递,引用传递

java中的参数传递--值传递.引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递. 在 Java 应用程序中永远不会传递对象,而只传递对象引用.因此是按引用传递对象.Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数.参数可以是对象引用,而 Java 应用程序是按值传递对象引用的. Java 应用程序中的变量可以为以下两种类型之一:引用类型或基本类型.当作为参数传递给一个方法时,处理这两种类型的方式是相同的.两

java中值传递和引用传递

本来今天刚学习的内容,然后去其他博客看了下,发现都吵起来了,就是名字原因,有的说java有值传递和引用传递,有的说引用传递本质就是值传递,我管你杂说的,只要自己理解好,代码知道运行结果就好了. 我用自己的话,自己的理解来解释下,反正都是自己写着玩,自己看的 值传递:传递的值,这个值以后怎么改变,源值不会发生改变的. 引用传递:将对象的引用地址传递过去,如果值发生改变,那么源值也发生改变. 代码如下: 值传递: public class Test1 { public static void mai

为什么 Java 只有值传递,但 C# 既有值传递,又有引用传递,这种语言设计有哪些好处?

为什么 Java 只有值传递,但 C# 既有值传递,又有引用传递,这种语言设计有哪些好处? http://www.zhihu.com/question/20628016 Java值传递的终极解释 http://developer.51cto.com/art/201103/251163.htm