`
simonhoo
  • 浏览: 68075 次
  • 性别: 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 编程入门思考

    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 服务器和客户机 ...

    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 服务器和客户机 ...

    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入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    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入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    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 服务器和客户机 ...

    Think in Java(中文版)chm格式

    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实现地球系动画完整实现实例(第3部分).pdf

    2、EarthPlanetApplet 程序代码如下 (1)回顾 Java 中的数组 数组也是一个对象,并且数组也是作为方法的对象引用值来传递的。 Image allImagesArray[]= new Image[NUMBER_IMAGES]; 但在创建数组的时候不使用小括号...

    Java语言的科学与艺术(国外计算机科学经典教材)

    本书使用传记简介、引用以及哲学片段来突出计算的历史和理性背景,着重强调算法和问题解决,而今天的初级教科书通常忽略了这一点。 内容简介 自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    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语言的科学与艺术 斯坦福大学经典教材

    11.11 编程练习 第12章 搜索与排序 12.1 搜索 12.2 排序 12.3 评估算法效率 12.4 使用数据文件 12.5 小结 12.6 复习题 12.7 编程练习 第13章 数组与ArrayList类 13.1 ArrayList类回顾 13.2 HashMap类 13.3 Java集合...

    《Java程序设计案例教程》教学课件05深入Java面向对象.pptx

    08 了解基本数据类型变量和引用数据类型变量在数值传递上的区别。 《Java程序设计案例教程》教学课件05深入Java面向对象全文共47页,当前为第2页。 技能目标 1.能够在MyEclipse IDE中定义子类继承父类。 2.能够在...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境...

    ThinkInJava

    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之方法(6).md

    本人的笔记,关于Java基础中方法的内容。 包括 1.作业回顾 2.方法的定义 3.向方法传递参数 4.方法返回值 5.方法重载 6.变量的作用域 7.使用类常量和类方法 8.练习

    thinkinjava

    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 服务器和客户机 ...

    JavaProgrammer1

    Java程序员1 练习练习以准备Oracle考试主题二作业1.2甲部创建一个Java程序,该程序在命令提示符处传递两个参数。 参数应代表您最喜欢的水果的名称,并存储在args数组中。 使用args数组中存储的参数,在控制台中显示...

Global site tag (gtag.js) - Google Analytics