`
yexinwinners
  • 浏览: 595 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中的参数传递

    博客分类:
  • JAVA
阅读更多

今天我一哥们遇到一纠结的面试题,是有关于java 中的参数传递方面的。

        代码如下:

 

public class Test {
	public static void clear(Student dummyParam) {
		dummyParam = null;
	}

	public static void main(String[] args) {
		Student factParam = new Student();
		factParam.setStudentName("studentname");
		clear(factParam);
		System.out.println(factParam.getStudentName());
	}
}

class Student {
	private String studentName;

	public String getStudentName() {
		return studentName;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
}
 

 

 问最后输出什么?为什么? 我那哥们没答出来,回来就到处求救。我帮他分析了一下。

最后输出 "studentname" 。给我那哥们面试的面试官给出的答案是会出现NullPointerException。我想连那个面试官也没弄清楚这个问题吧。

java方法中原始数据类型中的参数都是传值,当然String也是一样,即传给方法形参的是内存中真实值的一个副本。剩下的复合类型即引用类型都是传址,即传给方法形参的是指向真实对象内存空间的地址。在这个问题里面面试官可能没弄清楚一个细节。在 clear方法参数列表中 dummyParam 也是一个 Student 类型的引用。当 main 方法中调用 clear(factParam); 方法时, dummyParam这个形参的引用指向了 factParam引用指向的内存地址。当在方法 clear 中执行 dummyParam = null; 语句时,并不是象那个面试官想象的那样将传入的实参内存地址指向了Null,而是dummyParam 引用的指向从原来的实参内存地址改变成了Null。这里发生的只是形参引用指向的改变,而factParam的指向并没有受影响。故最后能正常输出factParam的studnetName属性值,而不是那个面试官所说的的NullPointerException。

 

分享到:
评论

相关推荐

    java中参数传递的演示

    java中参数传递的演示,分析传值与传引用的区别

    java中参数传递方式详解

    Java中参数传递方式详解 Java 中参数传递方式详解是 Java 新手入门面临的一个经典的话题。本文意在终结这个话题,Java 中有说法:Java 里面参数传递都是按值传递,怎么理解这句话? 按值传递和按引用传递是来自 ...

    浅议JAVA语言中的参数传递.pdf

    浅议JAVA语言中的参数传递 在 Java 语言中,参数传递的方式一直存在一定的争论。一些书中认为,在 Java 中参数传递都是按值传递的,但是这种说法存在一定的模糊性。本文将对 Java 语言中的参数传递进行详尽的说明。...

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

    Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...

    11.java参数传递.zip

    11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...

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

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

    58.java参数传递机制.zip

    58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...

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

    本文旨在深入解析Java语言中的参数传递机制。作为一门广泛使用的编程语言,Java提供了多种参数传递的方式,这其中包括了基本类型的值传递以及引用类型的地址传递。同时,文章还涵盖了可变参数列表(varargs)的使用...

    java参数传递(经典).docx

    Java参数传递机制是一个经常引起讨论的话题,尤其是在初学者和经验丰富的开发者之间。Java中参数传递的基本原则可以总结为:对于所有类型的参数,Java总是进行值传递。然而,对于基本类型和对象引用,"值传递"的概念...

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

    在Java编程语言中,参数传递方式是一个经常引起讨论的话题。标题“Java是值传递,传对象引用也是通过值”揭示了Java中参数传递的核心概念。Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,...

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

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

    JAVA反射参数传递概略

    在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将变量的副本传递给方法,而引用传递则是传递变量指向的对象引用。对于基本类型,Java总是使用值传递;而对于对象,实际上是引用的复制,但仍然保持...

    Java参数传递PPT

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

    Java参数传递的经典示例

    Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...

    java传递参数的方法

    java传递参数的方法 很的东西 大家下载学习一下

    Jni中C++和Java的参数传递

    在涉及到C++和Java之间的参数传递时,有一些特定的规则和技巧需要注意。 首先,我们要理解Java对象和C++数据类型的映射关系。在JNI中,Java的基本数据类型如`boolean`, `byte`, `char`, `short`, `int`, `float`, `...

    Jni中C和Java的参数传递.doc

    总结一下,JNI 参数传递的关键点包括: 1. **类型映射**:Java 和 C++ 的数据类型不同,需要使用 JNI 提供的类型映射,如 `jint`、`jstring` 等。 2. **字段访问**:使用 JNI 的 `GetFieldID` 和 `GetObjectField`...

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

    Java语言中参数传递的深入剖析 Java语言中参数传递的机制是一个复杂的主题,对于初学者来说,参数传递机制是一个难点。许多教材、论文和帮助手册对Java语言中参数传递的机制进行了探讨,但这些说法不一,有些模糊带...

    java参数传递

    这里详细的说明了,java参数传递的过程,引用传递,值传递

    java参数的传递与返回值

    #### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用传递(Pass-by-reference)。...

Global site tag (gtag.js) - Google Analytics