`
bo_hai
  • 浏览: 564582 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java 中的值传递讨论

 
阅读更多

1、请看代码如下:

public class LongTest {


	public static void main(String[] args) {
		System.out.println("--------------------------------");
        Long value = Long.valueOf(0L);
        System.out.println("value="+value);
        changeLongValue(value);
        System.out.println("value="+value);
	}
	public static void changeLongValue(Long value){
		value = Long.valueOf(1000L);
		System.out.println("change Long value ="+value);
	}

}

 

2、请先猜一下输出结果,我猜的输出结果是:

value=0
change Long value =1000
value=1000

 3、如果你和我想的是一样的,恭喜你,我们都错了。正确的结果是:

value=0
change Long value =1000
value=0

4、解释:

1)代码:

value = Long.valueOf(1000L);

等价于:

value = new Long(1000L);

 

value 的值在 changeLongValue 中重新分配了指向的地址,main 中的value 指向并没有被改变。等同于这个逻辑的还有String类型。

5、参考资料:

http://www.blogjava.net/junglesong/archive/2008/02/22/181246.html

3
3
分享到:
评论
6 楼 fourfireliu 2013-06-07  
alvin198761 写道
fourfireliu 写道
alvin198761 写道
建议这个兄弟先看看源码

虽然源码这么写没错,但他这句也没错,确实是执行return new

你看到了new 却没有看到他赋值给了谁

没明白你想说的意思
5 楼 alvin198761 2013-06-06  
fourfireliu 写道
alvin198761 写道
建议这个兄弟先看看源码

虽然源码这么写没错,但他这句也没错,确实是执行return new

你看到了new 却没有看到他赋值给了谁
4 楼 fourfireliu 2013-05-29  
alvin198761 写道
建议这个兄弟先看看源码

虽然源码这么写没错,但他这句也没错,确实是执行return new
3 楼 taosiquan 2013-05-28  
LZ,这种小问题就别发了。
2 楼 bo_hai 2013-05-28  
alvin198761 写道
建议这个兄弟先看看源码


    public static Long valueOf(long l) {
	final int offset = 128;
	if (l >= -128 && l <= 127) { // will cache
	    return LongCache.cache[(int)l + offset];
	}
        return new Long(l);
    }

1 楼 alvin198761 2013-05-28  
建议这个兄弟先看看源码

相关推荐

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

    标题“Java是值传递,传对象引用也是通过值”揭示了Java中参数传递的核心概念。Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,传递的是该变量所存储值的一个副本。然而,对于对象类型的...

    lotus domino java代理_获取传递值json

    今天,我们将讨论如何在 Lotus Domino Java 代理中获取传递值 JSON。 代理程序的作用 在 Lotus Domino 服务器上,代理程序可以用来处理用户请求,并返回相应的数据。代理程序可以用 Java 语言编写,具有很高的灵活...

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

    Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一...在面试或讨论中,理解这一点对于正确解释Java的行为至关重要。

    java按值传递还是按引用传递详细解说[收集].pdf

    在Java中,所有的参数传递都是按值传递,但这并不意味着对象变量也是如此。这是因为Java中对象的引用是按值传递的,而对象本身则是按引用访问的。以下是对这个概念的详细解释。 1. **按值传递**: 在Java中,当...

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

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

    Java参数传递PPT

    当讨论方法参数时,有两种术语经常被提及:值传递(Call by Value)和引用传递(Call by Reference)。Java参数传递的规则是:**Java只使用值传递,但这种值传递对于对象参数表现为类似引用传递的行为。** 在值传递...

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

    本文将深入探讨Java中的方法调用、值传递与引用传递,并通过字节码分析来进一步理解这些概念。 首先,我们来看方法调用。在Java中,方法是一组完成特定任务的代码块,可以通过方法名来调用执行。方法调用的基本语法...

    java中参数传递方式详解

    本文意在终结这个话题,Java 中有说法:Java 里面参数传递都是按值传递,怎么理解这句话? 按值传递和按引用传递是来自 C++ 语言的概念。引用不是汉语词典中的一个词,而是 C++ 的概念——“&”这个符号。为什么有...

    浅谈Java中真的只有值传递么

    Java中的参数传递方式一直以来都是一个讨论的热点,尤其是在学习编程初期,值传递和引用传递的概念可能会引起混淆。本文将深入探讨Java中参数传递的实质,以帮助理解和澄清这一问题。 首先,我们需要理解值传递和...

    java方法的参数传递其二.docx

    在本文中,我们将讨论 Java 方法参数传递中的引用类型传递。 在 Java 中,引用类型包括类、接口、数组等,都是对象的引用。这些引用类型在传递过程中,会将对象的引用传递给方法体内的变量,而不是对象的副本。因此...

    java参数传递 java 参数.doc

    Java 参数传递机制是编程中的重要概念,尤其是在Java中,它涉及到“值传递”和“引用传递”的理解。这里我们将深入探讨这两个概念,并结合给定的示例代码进行解析。 首先,我们看“值传递”。在Java中,基本类型...

    java 参数传递

    Java 中的参数传递机制是一个经久不息的讨论话题,究竟是“传值”还是“传引用”,双方各执一词,互不相让。本文将通过详细的分析和实例,揭开 Java 参数传递机制的奥秘。 基本类型作为参数传递 首先,我们来看...

    java学习参数传递 杨辉三角,大学java作业题

    实际上,Java中所有的参数传递都是按值传递,这意味着当你将一个变量传递给方法时,方法接收到的是该变量的副本,而非变量本身。对于基本类型(如int、double等),这个副本就是变量的值。而对于对象类型,副本是...

    探讨Java中函数是值传递还是引用传递问题

    根据标题和描述,本文将深入探讨Java中函数参数传递的机制,究竟是值传递还是引用传递。实际上,Java只支持值传递,但这种值传递对于引用类型(对象)的数据有着特殊含义。 首先,值传递是指当函数调用时,实际参数...

    220.218.JAVA基础教程_面向对象(上)-复习:值传递与递归方法(220).rar

    值传递是Java中最常见的方式,当一个变量的值被传入方法时,实际上是创建了该变量的一个副本。这意味着在方法内部对参数的任何修改都不会影响到原始变量的值。例如: ```java public class ValuePassing { public ...

    经典:值传递和引用传递.rar

    例如,在C++或Java等语言中,基本数据类型(如int、float)的参数传递就是值传递。下面是一个简单的示例: ```cpp void changeValue(int x) { x = 20; // 这里只是改变了局部副本的值 } int main() { int num = ...

    Java是传值还是传址引用

    Java在处理简单数据类型(如int、boolean等)时采用的是按值传递的方式。这意味着当你将一个简单类型的值作为参数传递给一个方法时,实际上传递的是这个值的一个副本。因此,即使在方法内部修改了这个值,也不会影响...

    java参数传递(经典).docx

    Java中参数传递的基本原则可以总结为:对于所有类型的参数,Java总是进行值传递。然而,对于基本类型和对象引用,"值传递"的概念有所不同。 首先,对于基本类型(如int、char、float等),Java会将变量的值直接复制...

    Java后台获取JSP页面多个复选框选中的值

    接下来,我们讨论如何在Java后台(控制器)接收这些值。由于复选框可以选中多个,所以后台通常使用数组或集合来接收。在Spring MVC框架中,我们可以创建一个方法来处理POST请求,参数是一个String数组: ```java //...

Global site tag (gtag.js) - Google Analytics