`
rrsy23
  • 浏览: 186445 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA值传递与引用传递

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

package com.bobo;

/**
* Created by IntelliJ IDEA.
* User:<a href="mailto:g5x3l0@163.com">波波</a>
* QQ:15221860
* Date: 2006-12-17
* Time: 0:03:52
*/
public class User {
private int age;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

package com.bobo;


/**
* Created by IntelliJ IDEA.
* User:<a href="mailto:g5x3l0@163.com">波波</a>
* QQ:15221860
* Date: 2006-12-16
* Time: 23:51:14
*/
public class Value {


public static void main(String[] args) {
int testValue = 0;
changeValueFalse(testValue);
System.out.println(testValue);

String testValue1 = "0";
changeValueTrue(testValue1);
System.out.println(testValue1);

User user = new User();
user.setAge(0);
changeValueReference(user);
System.out.println(user.getAge());

}

public static void changeValueFalse(int value) {
value = 100;
}

public static void changeValueTrue(String value) {
value = "100";
}

public static void changeValueReference(User user) {
user.setAge(user.getAge() + 100);
}

}

IDEA运行结果是:

D:\ProgramJava\Java\jdk1.5.0_09\bin\java -Didea.launcher.port=7534 "-Didea.launcher.bin.path=D:\ProgramJava\JetBrains\IntelliJ IDEA 6.0\bin" -Dfile.encoding=UTF-8 -classpath "D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\charsets.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\deploy.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\javaws.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\jce.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\jsse.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\plugin.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\rt.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\ext\dnsns.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\ext\localedata.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\ext\sunjce_provider.jar;D:\ProgramJava\Java\jdk1.5.0_09\jre\lib\ext\sunpkcs11.jar;C:\Documents and Settings\bobo\IdeaProjects\untitled1\classes\test\untitled1;C:\Documents and Settings\bobo\IdeaProjects\untitled1\classes\production\untitled1;D:\ProgramJava\JetBrains\IntelliJ IDEA 6.0\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.bobo.Value


0
0
100

Process finished with exit code 0

所以可以看出:

changeValueFalse(testValue);

changeValueTrue(testValue1);
调用以后传入的值没有改变依旧啊0,”0“
changeValueReference(user);
传入前user对象的年龄是0执行以后是100,改变了

通过这三个希望大家理解:

JAVA基本类型

String类

以及其他类的方法调用的实质

其实与C语言类似,基本类型是值拷贝所以修改的是方法内部的值在方法结束以后拷贝的值虽然变化但是没有回带,所以原来值依旧

而User是引用传递其实可以理解是指针或者地址传递,修改的是指向,所以变化

String大家是怎么理解,希望大家思考啊,提示JAVA的String有点特殊哦

分享到:
评论

相关推荐

    java值传递与引用传递

    因此,尽管看似是引用传递,但对`String`类型的处理结果与值传递类似。 总结来说,Java中的参数传递主要有以下特点: 1. 基本数据类型按值传递,函数内部无法改变实际参数的值。 2. 引用类型看似按引用传递,实际上...

    java 值传递和引用传递的比较

    在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。 首先,我们来理解什么是值传递。在Java中,基本数据类型(如int、double、...

    Java:按值传递还是按引用传递详细解说

    ### Java中的按值传递与按引用传递详解 #### 一、引言 在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点...

    13.java参数传递之引用传递.zip

    13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....

    java值传递和引用传递详解

    Java中的参数传递方式主要有两种:值传递和引用传递。理解这两种机制是编程中至关重要的,因为它们直接影响到函数内部如何改变或操作传入的数据。 **值传递**在Java中是基本数据类型(如int, double, char等)的...

    Java面向对象值传递和引用传递

    Java 面向对象值传递和引用传递 Java 面向对象编程中,参数传递是非常重要的一个概念。参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值...

    值传递和引用传递

    #### 四、值传递与引用传递的区别 - **数据类型**:值传递通常用于基本数据类型(如int、double等),而引用传递则用于对象类型(如类实例)。 - **内存分配**:值传递时,系统会为形参分配新的内存空间;而引用传递...

    java学习java语言的值传递和引用传递

    java学习java语言的值传递和引用传递

    值传递与引用传递-内存解析

    与值传递不同,引用传递不创建参数值的副本,而是让函数直接访问原始变量。这样,函数对参数的任何操作都会反映到原始变量上。在C++中,引用是一个别名,它指向一个已存在的对象。在Python中,对象是通过引用传递的...

    java参数传递时到底是值传递还是引用传递分享.pdf

    Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...

    Java是值传递,传对象引用也是通过值

    总的来说,理解Java中的值传递和对象引用传递对于编写高效、无误的代码至关重要。无论是基本类型还是对象类型,参数传递都是以值的形式进行,但对象类型的值是其引用,允许我们在方法内修改对象的状态,而不影响方法...

    面向对象语言中的值传递与引用传递

    总结来说,值传递和引用传递是Java中处理参数传递的两种机制。理解这两者的差异对于正确处理方法调用和对象状态至关重要。值传递适用于基本数据类型,而引用传递则适用于对象类型,允许方法直接修改对象的状态。在...

    java参数传递时到底是值传递还是引用传递[归类].pdf

    Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...

    Java中的值传递和引用传递

    当一个变量为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。  值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值  引用传递的特点:方法内部对传...

    详解java的值传递、地址传递、引用传递

    详解java的值传递、地址传递、引用传递 java是一种面向对象的编程语言,它的参数传递机制是值传递的,而不是地址传递或引用传递。很多开发者对java的值传递和地址传递存在误解,认为java中的基本数据类型是值传递,...

    Java 值传递Visio资源

    在Java中,参数传递有两种方式:值传递和引用传递。这个“Java 值传递Visio资源”包含了几个Visio图形文件,帮助我们直观地理解这两种传递方式。 1. **值传递**: 当方法调用时,对于基本类型(如int, double, char...

    Java语言中参数值传递和引用传递比较.pdf

    Java 语言中参数值传递和引用传递比较 Java 语言中参数值传递和引用传递是两种不同的参数传递方式,它们在 Java 编程中扮演着重要的角色。参数值传递是指将实际参数的值复制给形式参数,形式参数的变化不影响实际...

    一文秒懂java到底是值传递还是引用传递

    究竟Java是值传递还是引用传递?本文将通过详细的例子来阐明这一概念,帮助大家清晰理解Java的参数传递机制。 首先,需要明确的是,在程序设计语言中,参数传递方式通常分为按值传递(call by value)和按引用传递...

Global site tag (gtag.js) - Google Analytics