从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. java基础07 循环结构

    public class While02 { public static void main(String[] args) { /** * while(循环条件){ * 循环体(循环操作) * } * ...

  2. MYSQL--表分区、查看分区(转)

    一.       mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间, ...

  3. Spark官方3 ---------Spark Streaming编程指南(1.5.0)

    Design Patterns for using foreachRDD dstream.foreachRDD是一个强大的原语,允许将数据发送到外部系统.然而,了解如何正确有效地使用该原语很重要.避免 ...

  4. 【pentaho】【kettle】【Data Integration】试用

    要做数据分析,领导让研究一下kettle. 先占个坑. 这里有个3.0的文档: http://wenku.baidu.com/link?url=hvw_cOBIXLXSGvftkGhXQic3CLC7 ...

  5. 优秀Python学习资源收集汇总--强烈推荐(转)

    原文:http://www.cnblogs.com/lanxuezaipiao/p/3543658.html Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的 ...

  6. (4.2)动态管理视图DMV

    以下是一些您应该熟悉的更有用的DMV: 1.sys.dm_exec_cached_plans - 可用于SQL Server的缓存查询计划 2.sys.dm_exec_sessions - SQL S ...

  7. Spring源码解析(一)开篇

    前言 Spring源码继承结构比较复杂,看过以后经常会忘记.因此,记录一下源码分析的过程,方便以后回顾.本次分析的Spring源码版本为3.2.15. 另外,一提Spring就是IOC.DI等等,我们 ...

  8. 文件传输(xmodem协议)

    https://www.menie.org/georges/embedded/ 需要移植如下两个基础的硬件读写函数 int _inbyte(unsigned short timeout); void ...

  9. TensorFlow学习笔记(二)-- MNIST机器学习入门程序学习

    此程序被称为TF的 Hello World,19行代码,给人感觉很简单.第一遍看的时候,不到半个小时,就把程序看完了.感觉有点囫囵吞枣的意思,没理解透彻.现在回过头来看,感觉还可以从中学到更多东西. ...

  10. linux环境上运行.net core 初探

    1.安装 .net core 环境 rpm --import https://packages.microsoft.com/keys/microsoft.ascsh -c 'echo -e " ...