JAVA中的参数按值传递与按引用传递

简介: 看着有点恼火,你说为毛JAVA不用C或C++一样的指针传递呢? C#和JAVA都号称取消了指针,但用户在编程时,不一样面对和学C/C++一样的变量及变量指针地址的问题么? 代码分三个: 1 public class TempTest{ 2 private void test1(int a) { 3 a++; 4 System.

看着有点恼火,你说为毛JAVA不用C或C++一样的指针传递呢?

C#和JAVA都号称取消了指针,但用户在编程时,不一样面对和学C/C++一样的变量及变量指针地址的问题么?

代码分三个:

 1 public class TempTest{
 2     private void test1(int a) {
 3         a++;
 4         System.out.println("The char A in test1 method value is :" + a);
 5     }
 6 
 7     public static void main(String[] args) {
 8         TempTest t = new TempTest();
 9         int a = 3;
10         t.test1(a);
11         System.out.println("The char A in main method value is :" + a);
12     }
13 }
 1 public class TempTest1 {
 2     private void test1(A a) {
 3         a.age = 20;
 4         System.out.println("The age in test1 method value is :" + a.age);
 5     }
 6 
 7     public static void main(String[] args) {
 8         TempTest1 t = new TempTest1();
 9         A a = new A();
10         a.age = 10;
11         t.test1(a);
12         System.out.println("The age in main method value is :" + a.age);
13     }
14 }
15 class A {
16     public int age = 0;
17 }

 

 1 public class TempTest2 {
 2     private void test2(A a) {
 3         a = new A();
 4         a.age = 20;
 5         System.out.println("The age in test2 method value is :" + a.age);
 6     }
 7 
 8     public static void main(String[] args) {
 9         TempTest2 t = new TempTest2();
10         A a = new A();
11         a.age = 10;
12         t.test2(a);
13         System.out.println("The age in main method value is :" + a.age);
14     }
15 }
16 class A {
17     public int age = 0;
18 }

 

结果分三段:

目录
相关文章
|
1月前
|
Java
实现java执行kettle并传参数
实现java执行kettle并传参数
30 1
|
1月前
|
Java
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
2月前
|
存储 算法 Java
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。
72 0
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
|
2月前
|
Java
java构造方法时对象初始化,实例化,参数赋值
java构造方法时对象初始化,实例化,参数赋值
86 1
|
4月前
|
Java
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
【Azure 应用服务】如何查看App Service Java堆栈JVM相关的参数默认配置值?
|
4月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
411 0
|
4月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
4月前
|
Java
java是值传递还是引用传递
本文澄清了Java中参数传递的常见误解,总结出Java采用“值传递”的方式。对于基本类型,传递其值的拷贝,方法内修改不影响原值;而对于对象类型,则传递其引用地址的拷贝,尽管是拷贝,但因指向同一对象,故方法内的修改会影响原对象状态。形参仅在方法内部有效,而实参则是调用方法时传递的具体值。通过示例和比喻(如复刻仓库钥匙),形象地解释了值传递、引用传递及Java特有的“共享对象传递”概念,帮助理解不同情况下参数传递的行为差异。
|
4月前
|
Java
java中的值传递和引用传递
【8月更文挑战第3天】在Java中,值传递用于基本数据类型,传递的是值的副本,因此方法内的修改不影响原值;而引用传递用于对象和数组,虽传递的是引用的副本,但对对象内容的修改会影响原始对象。理解这两者对于正确处理方法调用及参数至关重要。
|
4月前
|
Java
java中的值传递和引用传递
【8月更文挑战第2天】在Java中,基本数据类型如`int`、`double`等采用值传递,传递的是变量值的副本,因此方法内的修改不影响原变量。对象类型则通过引用传递,传递的是对象引用的副本,允许方法内修改原对象。例如,对`StringBuilder`对象的修改会影响原始对象。