分函数:
public class Atest {
private int t=0;
public void setValue(int t)
{
this.t=t;
}
public void talk()
{
System.out.println(t);
}
}
主函数:
public class Test {
public void test(Atest at) {
at = new Atest();
at.setValue(5);
at.talk();
}
public static void main(String[] args) throws Exception {
// new MyThread().start();
Atest at = new Atest();
Test test = new Test();
at.talk();
test.test(at);
at.talk();
}
}
运行结果:
0
5
0
问题:
很多开始学习java的童鞋可能会认为输出的结果为:
0
0
0
这其中牵涉到一个问题:
在public void test(Atest at) {
at = new Atest();
at.setValue(5);
at.talk();
}
中我们改变了传入参数引用的指向,但是跳出函数后该引用的指向没有变化
这里需要说明的是,我们传进来的引用并不是完全的引用,而是自己够早了一个引用,将传入的引用赋值给自己构造的引用,然后再函数里利用这个引用进行操作。这样做实际上有两个指向传入对象的引用,一个方法内一个方法外,而我们改变的只是方法内的引用,对于方法外的引用没有影响!
分享到:
相关推荐
Java 中的基本类型和引用类型变量的区别 Java 中的基本类型和引用类型变量是两个不同的概念,它们在内存分配、变量赋值和函数传递等方面有着本质的区别。 基本类型是 Java 中的八种基本类型,包括 byte、short、...
### Java中对象与引用 在Java编程中,深入理解对象与引用的概念对于掌握面向对象编程至关重要。本文将从以下几个方面详细解析对象与引用的基本概念及其相互间的关系。 #### 一、对象与引用的基础概念 **对象**: ...
通过上述分析,我们可以清楚地了解到Java中引用和函数参数传递的基本概念以及它们的具体应用。了解这些概念对于正确使用Java进行编程非常重要,尤其是在处理复杂的数据结构和对象交互时。希望本文能帮助读者更好地...
在Java中,为了更好地管理对象的生命周期,从JDK 1.2开始引入了四种不同级别的引用类型:强引用、软引用、弱引用和虚引用。每种引用类型都有其特定的应用场景,通过灵活运用这些引用类型,开发者可以在内存管理和...
总结来说,Java中函数参数传递的基本规则是: 1. 对于基本数据类型,参数是值的副本,函数内部对参数的修改不会影响原变量。 2. 对于引用类型,参数是引用的副本,函数可以修改对象的属性,但不能改变引用本身。...
### Java中的强软弱虚引用详解 #### 一、引言 在Java中,对象的生命周期与内存管理密切相关。为了更好地理解和控制对象的生命周期,Java提供了四种不同类型的引用:强引用(Strong Reference)、软引用(Soft ...
在Java中,对象的引用方式对于内存管理和对象生命周期的控制至关重要。从JDK 1.2版本开始,Java引入了四种不同级别的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚...
Java中的引用和C++中的引用在概念和使用上有显著的不同,这是由于两者设计哲学和语言特性的差异。首先,我们要明确一点,Java的引用更接近于C++的指针,而C++的引用则是一种完全不同的机制。 在Java中,引用可以...
### Java中的指针概念与引用解析 #### 一、引言 Java作为一种广泛使用的面向对象编程语言,在设计之初就摒弃了C/C++中的指针概念。然而,尽管Java没有传统意义上的指针,但仍然存在一种类似的概念——引用。本文将...
在 Java 中,引用可以分为四类:强引用、软引用、弱引用和虚引用(也称为精灵引用)。弱引用是其中的一种,它们允许垃圾回收器在某些情况下回收对象,而不是像强引用那样坚持对象的存在。 弱引用的工作原理是,当...
### Java中对象与对象引用的区别 #### 基础概念 在Java编程语言中,对象与对象引用是非常基础且重要的概念。理解它们之间的区别对于掌握Java面向对象编程至关重要。 #### 对象与引用定义 - **对象**:在Java中,...
java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度...
在Java中,引用是一种特殊的数据类型,用于存储对象在内存中的地址。当我们创建一个新的对象时,Java会在内存中分配一定的空间来存储该对象的数据,并返回一个指向该对象的引用。通过这个引用,我们可以访问和操作该...
62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....
Java中的四种引用类型是Java内存管理的重要组成部分,它们分别是强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference)。每种引用类型具有不同的特点和用途,...
本教程将深入探讨Java中的引用传递机制,并通过视频教程的形式帮助学习者更好地理解和应用这一概念。 首先,理解“引用”在Java中的含义至关重要。在Java中,当我们声明一个对象变量时,实际上我们得到的是指向对象...
理解Java中的对象与引用之间的区别至关重要,因为这涉及到如何管理和操作对象。 #### 二、对象与引用的创建过程 在Java中创建一个对象并对其进行引用通常涉及以下步骤: 1. **对象创建**:在堆内存中分配内存空间...
在Java中,除了基本数据类型外的所有类型(包括自定义类和接口实现)都是按引用传递的。然而,这里有一个关键点需要注意,Java并不支持真正的引用传递,而是使用"传对象的引用副本"来模拟引用传递的效果。 ```java ...
在Java编程语言中,引用是连接对象和内存空间的关键概念。本示例“java引用的demo”将深入探讨四种不同类型的引用:强引用、软引用、弱引用和虚引用。这些引用类型对于理解和优化内存管理至关重要,特别是在Android...
除了Lambda,Java 8还提供了方法引用和构造器引用,它们进一步简化了函数式编程。方法引用允许直接引用已有方法,如`List<String> list = Arrays.asList("a", "b", "c"); list.sort(Comparator.naturalOrder());`,...