`
simonhoo
  • 浏览: 70906 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

回顾JAVA值传递和引用传递

 
阅读更多

今天在做code review时,想到了JAVA值传递和引用传递的问题,长时间没有看基础的东西了,都忘了,顺便摆了个例子:

package com.cottsoft.test.java;

import java.math.BigInteger;

public class Function {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Function f = new Function();
		
		int number = 100;
		String str = "china-loong.com";
		String str1 = new String("Hello,Everyone!");
		BigInteger itg = BigInteger.ZERO;
		Data data = new Data("80080088.com");

		//Q1?
		f.addTest(number);
		System.out.println("number: "+number);
		
		//Q2?
		f.addTest(str);
		System.out.println("str: "+str);
		
		//Q3?
		f.addTest(str1);
		System.out.println("str1: "+str1);
		
		//Q4?
		f.addTest(itg);
		System.out.println("itg: "+itg);
		
		//Q5?
		f.addTest(data);
		System.out.println("Data Str:"+ data.getDataStr());
	}

	public void addTest(Data data){
		data.setDataStr("ooo3oo.com");
	}
	
	public void addTest(int number){
		number = 500;
	}
	
	public void addTest(String str){
		str = "cottsoft.com";
	}
	
	public void addTest(BigInteger itg){
		itg = BigInteger.TEN;
	}
}

 

package com.cottsoft.test.java;

public class Data {
	private String dataStr;

	public Data(){}
	public Data(String dataStr){
		this.dataStr = dataStr;
	}
	public String getDataStr() {
		return dataStr;
	}

	public void setDataStr(String dataStr) {
		this.dataStr = dataStr;
	}	
}

 

问:

Q1/Q2/Q3/Q4/Q5分别打印出什么值?

 

number: 100
str: china-loong.com
str1: Hello,Everyone!
itg: 0
Data Str:ooo3oo.com

 

值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。



 

 

  • 大小: 22.9 KB
0
0
分享到:
评论

相关推荐

    Java参数传递PPT

    当讨论方法参数时,有两种术语经常被提及:值传递(Call by Value)和引用传递(Call by Reference)。Java参数传递的规则是:**Java只使用值传递,但这种值传递对于对象参数表现为类似引用传递的行为。** 在值传递...

    JNI中C和Java参数传递详细例子

    ### JNI中C和Java参数传递详解 #### 一、引言 Java Native Interface (JNI) 是Java平台标准的一部分,用于让Java代码与其他语言写的代码进行交互。本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,...

    JAVA中传值与引用问题

    在Java中,所有的数据类型可以分为两大类:基本类型(如int, double等)和引用类型(如Object, String等)。这两类数据类型的处理方式有所不同: 1. **基本类型**:当传递基本类型时,实际上是传递了该类型的值的...

    java 面向对象编程(csdn)————程序.pdf

    值传递和引用传递是Java中参数传递的两种方式。在`Demo03`中,展示了值传递的例子。当传递基本类型如`int`时,实际传递的是变量的副本,对副本的修改不会影响原始变量。因此,`change(a)`方法内部对`a`的改变不会...

    《HEAD-FIRST-JAVA》第一次回顾和整理.doc

    - Java 中 `integer` 和 `boolean` 类型不兼容,这意味着无法将整数值直接赋给布尔变量。 - 尽管 Java 与 C 有相似之处,但作者强调两者之间存在重要区别。 #### 第二章:拜访对象村 - **面向对象编程**: - ...

    java基础知识及框架平时工作总结

    JMS(Java Message Service)API是Java中处理消息传递的标准接口,常用于实现异步通信和解耦系统组件。消息队列(Message Queue)如ActiveMQ、RabbitMQ等,可以缓存消息并确保其可靠传输。JMX(Java Management ...

    JavaThe method

    Java有两类数据类型:原始类型(如int、char、boolean等)和引用类型(如类、接口和数组)。`setAttribute`方法只接受引用类型的值,因此需要将原始类型转换为它的包装类形式。 此外,错误处理和类型转换是Java编程...

    java 编程入门思考

    14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 ...

    Java初学者入门教学

    14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 ...

    java联想(中文)

    14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 ...

    Thinking in Java 中文第四版+习题答案

    A.1.3 传递和使用Java对象 A.1.4 JNI和Java违例 A.1.5 JNI和线程处理 A.1.6 使用现成代码 A.2 微软的解决方案 A.3.1 @dll.import引导命令 A.3.2 com.ms.win32包 A.3.3 汇集 A.3.4 编写回调函数 A.3.5 其他J/Direct...

    java复习讲义ppt12讲

    3. **数据类型和变量**:涵盖基本数据类型(整型、浮点型、字符型、布尔型)和引用数据类型,以及变量的声明、初始化和作用域。 4. **运算符和控制流**:包括算术、比较、逻辑、位运算符,以及条件语句(if-else)...

    JavaJava%BEE软件工程师就业求职手册.doc

    - **4.2.1 理解参数传递**:解释了Java中参数传递的基本机制,包括值传递和引用传递的概念。 - **4.2.2 注意final参数传递**:探讨了在方法签名中使用`final`关键字的含义及其影响。 - **4.3 类型转换** - **...

    JAVA_Thinking in Java

    14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 ...

    java面试宝典

    Java的基本数据类型、值传递和引用传递的区别,以及全局变量和局部变量的不同也是面试中的常见问题。 ### 排序算法、内存管理、工具类打包 排序算法的实现、内存管理机制、如何打包个人工具类供他人使用,这些知识...

    java in 24 hours

    - **Java简史**:回顾Java的发展历程。 - **Java的应用场景**:探讨Java在不同领域的实际应用案例,如Food Network、NASA等。 - **商业应用**:讲解Java在企业级应用中的角色。 - **开源社区**:介绍SourceForge等...

    面向对象程序设计Java听课笔记

    - 变量与数据类型:包括基本类型(如int、float、boolean等)和引用类型(如类、接口、数组)。 - 控制结构:如if语句、for循环、while循环、switch语句,以及break和continue关键字。 - 函数:定义函数进行逻辑...

    Thinking in Java简体中文(全)

    14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable 14.5.1 过多的线程 14.6 总结 14.7 练习 第15章 网络编程 15.1 机器的标识 15.1.1 服务器和客户机 ...

    java ee 复习笔记

    Java EE,全称为Java Platform, Enterprise ...复习笔记可以帮助我们系统地回顾和整理这些知识,加深理解,从而更好地应用于实际项目中。通过学习和实践,我们可以不断提升自己的技能,成为优秀的Java EE开发者。

Global site tag (gtag.js) - Google Analytics