由于最初的代码过于臃肿,所以上午改了下,结果却发生了空指针的情况
查找原因后发现是参数传递的问题
上网翻了资料后得出结论,java中只有值传递,下面举个例子:
class A { } class Test { public static void main (String[] args){ A a = new A(); System.out.println("main:" + a); // 输出a的初始地址 change(a); System.out.println("main:" + a); // 输出change之后a的地址 } private static void change (A a){ System.out.println("change:" + a); // 输出参数a的地址 a = new A(); System.out.println("change:" + a); // 输出参数a的地址 } }
结果是:
main:A@677327b6 change:A@677327b6 change:A@14ae5a5 main:A@677327b6
可见change中无法改变main中a对象的引用地址,因为传入的只是a对象的引用地址的值,而不是a这个引用变量本身
以上仅仅只是个人见解;
相关推荐
Java 中只有按值传递的原因是因为 Java 程序设计语言的设计理念。在 Java 中,方法参数的传递方式是按值传递的,而不是按引用传递的。这意味着,当方法接收到参数时,实际上是接收到参数的副本,而不是原始参数本身...
### Java中的按值传递与按引用传递详解 #### 一、引言 在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点...
我们先看一下值传递和引用传递的概念...值传递的函数中无法改变原始对象,引用传递中函数 可以改变原始对象 我们通过例子理解一下Java的值传递: public static void main(String[] args) { int a = 10; int b = 20;
基础知识点/面试题总结:(必看):Java基础常见知识点&面试题总结(上)Java基础常见知识点&面试题总结(中)Java基础常见知识点&面试题总结(下)重要知识点详解:为什么Java中只有值传递?Java序列化详解泛型&...
为什么 Java 中只有值传递? Java 序列化详解 泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java ...
为什么 Java 中只有值传递? Java 序列化详解 泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java...
基础知识点/面试题总结:(必看):Java基础常见知识点&面试题总结(上)Java基础常见知识点&面试题总结(中)Java基础常见知识点&面试题总结(下)重要知识点详解:为什么Java中只有值传递?Java序列化详解泛型&...
为什么 Java 中只有值传递? Java 序列化详解 泛型&通配符详解 Java 反射机制详解 Java 代理模式详解 BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结: Java ...
为什么 Java 中只有值传递 Java中所有的参数传递本质上都是值传递。这是因为Java传递的是对象的引用而非对象本身,但这个引用被视为值的一部分。 #### 29. 简述线程、程序、进程的基本概念。以及他们之间关系是...
特殊的是,String虽然是一种引用类型,但在参数传递中表现得像是值传递。这是因为String是不可变的,当我们对String对象进行赋值操作时,实际上创建了一个新的String对象。例如,在例子3中,change()方法中param = ...
方法的返回值用于返回计算结果,Java中只有值传递,没有引用传递。方法的重载和重写是多态性的体现,深拷贝和浅拷贝则关乎对象复制的深度。 面向对象编程是Java的核心,包括类、对象、封装、继承和多态。类是对象的...
Java 中只有值传递,因为 Java 中的参数传递是值传递的。 3. 重载和重写的区别: 重载是方法名相同、参数列表不同的方法,而重写是子类对父类方法的重写。 4. 深拷贝 vs 浅拷贝: 深拷贝是将对象完全复制,而浅...
一些书中认为,在 Java 中参数传递都是按值传递的,但是这种说法存在一定的模糊性。本文将对 Java 语言中的参数传递进行详尽的说明。 参数传递是指在方法调用时,传递参数的方式。在 Java 中,参数传递可以分为按值...
在 C++ 语言中,这两种传递方式都是合法的,而在 Java 语言中,只有按值传递是一种合法的传递方式。 知识点: * 按值传递和按引用传递是两种不同的参数传递方式 * 按值传递是指函数参数是通过值来传递的 * 按引用...
总结来说,Java只有值传递,这确保了方法不能直接修改对象,只能通过返回值或全局变量间接影响。C++则提供了值传递、引用传递和指针传递,让程序员可以根据需求选择最适合的方式来操作函数参数。值传递确保了函数的...
有说有值传递和引用传递两种,也有说只有值传递的,这里只说下个人见解 先看一个例子 public class Test1 { public static void main(String[] args) { int a = 10; changeNum(a); System.out.println("main...
**值传递与引用传递**:Java中只有值传递,对于引用类型,传递的是对象引用的副本,而不是对象本身。 32-34. **equals与hashCode**:equals比较对象内容,hashCode用于哈希表定位,重写equals必须重写hashCode,...
毕业设计电商网站源码 ...中只有值传递、==与equals、 hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?....
- **函数式接口**:为了支持 Lambda,Java 8 引入了函数式接口,即只有一个抽象方法的接口。例如,`Runnable`、`Callable` 和新的 `Function`、`Predicate` 等接口。 - **Stream API**:Java 8 提供了 Stream API...