今天我一哥们遇到一纠结的面试题,是有关于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 中参数传递都是按值传递的,但是这种说法存在一定的模糊性。本文将对 Java 语言中的参数传递进行详尽的说明。...
Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...
11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java参数传递.zip11.java...
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递机制.zip58.java参数传递...
本文旨在深入解析Java语言中的参数传递机制。作为一门广泛使用的编程语言,Java提供了多种参数传递的方式,这其中包括了基本类型的值传递以及引用类型的地址传递。同时,文章还涵盖了可变参数列表(varargs)的使用...
Java参数传递机制是一个经常引起讨论的话题,尤其是在初学者和经验丰富的开发者之间。Java中参数传递的基本原则可以总结为:对于所有类型的参数,Java总是进行值传递。然而,对于基本类型和对象引用,"值传递"的概念...
在Java编程语言中,参数传递方式是一个经常引起讨论的话题。标题“Java是值传递,传对象引用也是通过值”揭示了Java中参数传递的核心概念。Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,...
在本文中,我们将讨论 Java 方法参数传递中的引用类型传递。 在 Java 中,引用类型包括类、接口、数组等,都是对象的引用。这些引用类型在传递过程中,会将对象的引用传递给方法体内的变量,而不是对象的副本。因此...
在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将变量的副本传递给方法,而引用传递则是传递变量指向的对象引用。对于基本类型,Java总是使用值传递;而对于对象,实际上是引用的复制,但仍然保持...
Java参数传递机制是编程中的重要概念,尤其是在Java中,它对于理解如何在方法间操作数据至关重要。本PPT深入探讨了这一主题,旨在帮助学习者彻底理解Java中的参数传递方式。 首先,我们要回顾面向对象的基本概念。...
Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...
java传递参数的方法 很的东西 大家下载学习一下
在涉及到C++和Java之间的参数传递时,有一些特定的规则和技巧需要注意。 首先,我们要理解Java对象和C++数据类型的映射关系。在JNI中,Java的基本数据类型如`boolean`, `byte`, `char`, `short`, `int`, `float`, `...
总结一下,JNI 参数传递的关键点包括: 1. **类型映射**:Java 和 C++ 的数据类型不同,需要使用 JNI 提供的类型映射,如 `jint`、`jstring` 等。 2. **字段访问**:使用 JNI 的 `GetFieldID` 和 `GetObjectField`...
Java语言中参数传递的深入剖析 Java语言中参数传递的机制是一个复杂的主题,对于初学者来说,参数传递机制是一个难点。许多教材、论文和帮助手册对Java语言中参数传递的机制进行了探讨,但这些说法不一,有些模糊带...
这里详细的说明了,java参数传递的过程,引用传递,值传递
#### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用传递(Pass-by-reference)。...