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 }

 

结果分三段:

目录
相关文章
|
12月前
|
存储 Java
Java 中的值传递与拷贝机制详解
本文深入解析了Java中的值传递与拷贝机制,澄清了“值传递”和“引用传递”的概念混淆。Java仅支持值传递,对象变量传递的是引用的副本,导致方法内可修改对象内容但不会改变引用地址。同时探讨了浅拷贝与深拷贝的区别,前者仅复制引用,后者创建全新对象以确保独立性。文章结合实例分析基本数据类型、对象、数组及集合在传递和复制时的行为,帮助读者全面理解Java内存管理与对象操作原理。
277 10
|
12月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
531 0
|
Java Linux 定位技术
Minecraft配置文件参数说明(JAVA服务器篇)
Minecraft JAVA版服务器启动后会生成server.properties配置文件,位于minecraft_server/根目录下。该文件包含多项关键设置,如游戏模式(gamemode)、最大玩家数(max-players)、难度(difficulty)等。此文档详细说明了各配置项的功能与默认值,帮助用户高效管理服务器环境。
3294 60
|
Java
实现java执行kettle并传参数
实现java执行kettle并传参数
344 1
在Java中定义一个不做事且没有参数的构造方法的作用
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
|
存储 算法 Java
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
这篇文章是关于如何在Java中使用Graphics2D的RenderingHints方法来提高海报制作的图像质量和文字清晰度,包括抗锯齿和解决文字不清晰问题的技术详解。
670 0
java制作海报六:Graphics2D的RenderingHints方法参数详解,包括解决文字不清晰,抗锯齿问题
|
Java
java构造方法时对象初始化,实例化,参数赋值
java构造方法时对象初始化,实例化,参数赋值
434 1
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
1534 0
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
295 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
314 1