Java中只有按值传递,没有按引用传递!
package test;
public class TestOne {
public static void name(int x){
x++;
}
public static void main(String[] args) {
int x = 0 ;
name(x);
System.out.println("------>x的值为: " + x);
}
}
运行结果 : ------>x的值为: 0
public class PassbyValue {
public void increment(String t) {
t = "meili";
System.out.println(t); // 输出为1
}
public static void main(String[] args) {
String t = "美丽";
PassbyValue ps = new PassbyValue();
ps.increment(t);
System.out.println(t);
}
}
运行结果:meili
美丽
package test;
class Cat{
int x = 0;
}
public class TestTwo {
public static void name(Cat cat){
cat.x++;
}
public static void main(String[] args) {
Cat c = new Cat();
name(c);
System.out.println("------>x的值为: " + c.x);
}
}
运行结果 : ------>x的值为: 1
在Java只有按值传递,可能有人会奇怪传递进来如是对象,它会改变对象的值,例如:
Java代码
public class Test{
int i;
public void increment(Test t){
t.i++;
System.out.println(i); //输出为1
}
public static void main(String[] args){
Test t = new Test();
t.increment(t);
System.out.println(t.i); //输出也为1
}
}
这的确是
改变了对象的值,但它并没有改变对象引用的值,它还是指向原来的对象,我们传递进来的是对象引用并不是对象,造成这种错误的认识主要是没有理解对象和对象引用的区别,我们可以将对象理解为气球,而对象引用可理解为拉着气球的线,所以这还是按值传递;
如果在方法中把对象(或数组)作为参数,方法调用时,参数传递的是对象的引用(地址),即在方法调用时,实际参数把对对象的引用(地址)传递给形式参数。这是实际参数与形式参数指向同一个地址,即同一个对象(数组),方法执行时,对形式参数的改变实际上就是对实际参数的改变,这个结果在调用结束后被保留了下来。
一般面试题中都会考Java传参的问题,并且它的标准答案是
Java只有一种参数传递方式:那就是按值传递,即Java中传递任何东西都是传值。如果传入方法的是基本类型的东西(值传递适用于Java中的八大基本数据类型和String),你就得到此基本类型的一份拷贝。如果是传递引用,就得到引用的拷贝。
总结:java中只要按值传递,参数是八大基本数据类型和String,值不改变,如果是其他,会改变
[/size]
分享到:
相关推荐
在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点并非完全对立,而是根据不同的角度来描述Java中的参数传递...
Java编程语言中有两种参数传递方式:按值传递和按引用传递。理解这两种方式对于编写高效、无误的代码至关重要。 1. **按值传递(Pass by Value)** - Java中的基本类型(如int, double, char等)是按值传递的。这...
总结,C++中的按值传递和按引用传递各有优缺点,程序员需要根据具体需求权衡选择。在编写高效且安全的代码时,理解并熟练运用这两种传递方式至关重要。同时,注意在处理复杂对象或数据结构时,按引用传递通常更为...
### 值传递和引用传递详解 #### 一、引言 在计算机编程中,值传递和引用传递是两种常见的参数传递方式。这两种传递方式在不同的编程语言中有不同的实现细节,但其核心概念是相似的。本文将详细介绍值传递和引用传递...
另一方面,值传递由于形参和实参内存地址不一样,有些功能并不能实现(swap()),因此,除了极为简单的函数会使用值传递外,大多数会采用引用传递。而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给...
Js引用类型按值传递的题目:两个变量间赋值时,以及作为变量给函数传参时,只是将原变量中的值复制一个副本给对方变量或形参变量 i. 对于原始类型的值,修改新变量,不影响原变量 ii. 对于引用类型的值的值,因为...
在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。 首先,我们来理解什么是值传递。在Java中,基本数据类型(如int、double、...
C语言中的函数调用机制包括值传递(value passing)和地址传递(address passing),通常被称为按值传递和按引用传递。C语言默认使用的是值传递机制,但是可以通过传递指针来实现类似地址传递的效果。下面将详细介绍这两...
Java中的按值传递和按引用传递的代码详解 本文通过实例代码详细解释了Java中的按值传递和按引用传递的相关知识。通过实验,我们可以了解Java中基本类型和引用类型的传递机制。 按值传递 在Java中,基本类型的变量...
在Java编程语言中,函数参数的传递方式有两种:值传递和引用传递。理解这两种机制对于编写高效、无误的代码至关重要。以下是对这两种传递方式的详细解析。 首先,值传递是指函数调用时,实际参数的值被复制一份传给...
首先,我们需要了解在编程中,按值传递和按引用传递的基本概念: 1. **按值传递**:当函数或方法接收到一个参数时,会创建该参数的一个副本。任何对副本的修改都不会影响原始变量。在.NET中,基本类型如int、bool等...
Java 面向对象值传递和引用传递 Java 面向对象编程中,参数传递是非常重要的一个概念。参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值...
在JavaScript中,参数传递主要有两种形式:按值传递和按共享传递,但这种分类并不完全准确。JavaScript的基本数据类型(如数字、字符串、布尔值、null、undefined)是真正意义上的按值传递,而对象类型则更接近于一...
在C#编程语言中,了解值传递和引用传递的概念至关重要,因为这直接影响到函数或方法如何处理参数。本文主要探讨这两个概念以及与之相关的知识点。 首先,值传递是指当一个方法或函数调用时,实际参数(即调用时提供...
在VI间传递值,通常有三种方式:按值传递、按引用传递和按共享变量传递。按值传递是最常见的,但会创建数据副本,可能导致性能下降。相比之下,按引用传递能避免这种问题,因为只有引用本身被传递,而不是实际数据。...
了解并熟练掌握值传递和引用传递的原理和使用场景,是每个Delphi程序员的基本功。通过实践和分析具体实例,例如提供的"zhichuandi"文件中的代码,可以更深入地理解这两种传递方式的差异和应用。