从C++转java,在使用函数传对象时,碰到一点问题,今天特意验证了一下:

public class App
{
public static void doubleTest(double d) {
d=8.0;
System.out.println( "[INNER doubleTest]double:"+d);
}
public static void DoubleTest(Double dd) {
dd=8.0;
System.out.println( "[INNER DoubleTest]Double:"+dd);
}
public static void ObjectTest(ObjectChange obj) {
obj = new ObjectChange(5);
System.out.println( "[INNER ObjectTest]Object:"+obj.getTT());
obj.setTT(8);
System.out.println( "[INNER ObjectTest]Object:"+obj.getTT());
}
public static void ObjectChangeTest(ObjectChange obj) {
obj.setTT(8);
System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
obj = new ObjectChange(5);
System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
obj.setTT(6);
System.out.println( "[INNER ObjectChangeTest]Object:"+obj.getTT());
} public static void main( String[] args )
{
System.out.println( "Source:" );
double d1=1;
Double d2=2.0;
ObjectChange obj1 = new ObjectChange(1);
System.out.println( "double:"+d1+" Double:"+d2 +" Object:"+ obj1.getTT()); System.out.println( "After:" );
doubleTest(d1);
DoubleTest(d2);
ObjectTest(obj1);
System.out.println( "double:"+d1+" Double:"+d2 +" Object:"+ obj1.getTT());
ObjectChangeTest(obj1);
System.out.println( "Object:"+ obj1.getTT());
}
}

程序输出结果:

总结:

obj在函数体内作为临时变量,可读取对象内容,采用“=”(赋值运算符)改变的是临时对象的内容,赋值后,再操作的也是临时对象的内容;

只有在赋值前调用对象的成员方法(setTT())才能真正改变obj对象的内容;

java中函数传值与引用问题的更多相关文章

  1. java中函数传值和传地址的问题

    记录一下这个难过的双休,2019.3.16-2019.3.17,16号上午字节跳动笔试,四道题只做出1道半,输入输出搞的半死,第三题类似于leetcode上的分糖问题,数组初始化的时候全部赋为0了,要 ...

  2. Java中的基本类型和引用类型变量的区别

    Java中的基本类型和引用类型变量的区别   学了一年多,说实话你要我说这些东西我是真说不出来是啥意思     基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: ...

  3. java 中函数的参数传递详细介绍

    java中函数的参数传递 总结: 1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的对象.  2.当将基本类型或基本类型的包装集作为参数传递时 ...

  4. JAVA中值传递,引用传递

    刚在写一个用例,需要在方法中改变传递的参数的值,可是java中只有传值调用,没有传址调用.所以在java方法中改变参数的值是行不通的.但是可以改变引用变量的属性值. 可以仔细理解一下下面几句话: 1. ...

  5. JAVA中MESSAGEBOX,静态类直接引用

    原文:JAVA中MESSAGEBOX,静态类直接引用 package cisdi.mes.wrm.mcode.serviceImpl; import javax.persistence.Entity; ...

  6. JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

    简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用) ...

  7. Java中的四种引用

    引用定义 实际上,Java中存在四种引用,它们由强到弱依次是:强引用.软引用.弱引用.虚引用.下面我们简单介绍下这四种引用: 强引用(Strong Reference):通常我们通过new来创建一个新 ...

  8. java中的传值与传引用

    java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中 ...

  9. java中函数是值传递还是引用传递?

    相信有些同学跟我一样,曾经对这个问题很疑惑.在网上也看了一些别人说的观点,评论不一.有说有值传递和引用传递两种,也有说只有值传递的,这里只说下个人见解 先看一个例子 public class Test ...

随机推荐

  1. 剑指Offer——数组中重复的数字

    题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度 ...

  2. Scala函数特性

    通常情况下,函数的參数是传值參数:即參数的值在它被传递给函数之前被确定.可是,假设我们须要编写一个接收參数不希望立即计算.直到调用函数内的表达式才进行真正的计算的函数. 对于这样的情况.Scala提供 ...

  3. CS224n(一)

    个人博客地址: https://yifdu.github.io/2018/10/30/CS224n%E7%AC%94%E8%AE%B0%EF%BC%88%E4%B8%80%EF%BC%89/#more

  4. su 与 su - 区别

    su与su -都是用来切换用户的命令,简单说它们之间的区别就是:su -切换的干净彻底,而su 切换用户却拖泥带水. su su username,切换到指定用户,但是当前目录不会变化,环境变量还是上 ...

  5. Linux系统常用命令汇总

    命令格式:命令 -选项 参数,例如:ls -la /usr:当有多个选项时,可以写在一起.ifconfig:查看当前机器的IP信息service network restart:重启网络服务servi ...

  6. Jenkins节点配置页面,启动方法没有"Launch agent via Java Web Start"解决方法?

    Jenkins的配置从节点中默认没有Launch agent via JavaWeb Start,解决办法: 步骤: 1:打开"系统管理"——"Configure Glo ...

  7. postgresql 建模文件 LDM 转成PDM 生成 SQL问题

    LDM 转成 PDM (Tool --- GPDM ) 生成 SQL,查看全部SQL 详细步骤见下图. 1.postgresql 没有 VARCHAR2 只有 VARCHAR. 2.LDM 生成 PD ...

  8. PL/SQL编程—函数

    SQL> select * from mytest; ID NAME PASSWD SALARY ----- -------------------- -------------------- ...

  9. cdoj1633 去年春恨却来时,落花人独立,微雨燕双飞

    地址:http://acm.uestc.edu.cn/#/problem/show/1633 题目: 去年春恨却来时,落花人独立,微雨燕双飞 Time Limit: 3000/1000MS (Java ...

  10. loadrunner:设置检查点的几种方法

    判断操作是否成功,检查点是必不可少的.loadrunner中可以设置文本检查点和图片检查点,下面记录一下loadrunner设置检查点的几种方法. 前言:在回放脚本时,必须确定run-time set ...