`
鞠文婷
  • 浏览: 16795 次
  • 性别: Icon_minigender_2
  • 来自: 江苏南通
社区版块
存档分类
最新评论

传值&传址之异同小析

阅读更多

        传值or传址,这是一个问题,也是一个比较简单的问题。

        一般人们学习时,总喜欢把问题细节化,对于两个事物,非要追根究底,找出其不同之处。其实准确说来,传址也是一种传值,不过传的是地址的值而已,非人脑所能轻易识别,因此区别开来也是有理可循的。

       关于这个话题,首先必须说明的一点就是:String只传值不传址!

       值传递的一个简单例子:

public class swap {
	public void swap(int i,int j){
		int temp=i;
		i=j;
		j=temp;
	}
}
public class Manager {
	/**
	 * 入口点函数
	 * @param args
	 */
	public static void main(String[] args){
		swap st=new swap();//创建对象
		int i=100;
		int j=20;
		System.out.println("First:i ~ j = "+i+" ~ "+j);//第一次输出
		//调用方法,在changeInt中改变i的值
		st.swap(i,j);
		System.out.println("Second:i ~ j = "+i+" ~ "+j);//第二次输出
	}
}

 输出结果:

First:i ~ j = 100 ~ 20
Second:i ~ j = 100 ~ 20

       在这个例子中,swap的作用就是将 i 和 j 的值互换,而从结果来看并未做到这点。 因为基本数据类型int传的是值。其实想要理解这个例子的话,可以将swap函数添加int返回值,返回 i ,并在此函数中输出 i ,就会发现在First和Second中间会输出一个:i = 20;这便可充分说明调用了swap(i,j);只是改变了其在class swap中的值,对Manager中的参数并无影响。

       而若要证明String只传值不传址,只需定义一个String str=new String("abc");然后再定义一个类将str值赋给属性str,代码如下;

String str=new String("abc");
		test2 te=new test2(str);
		te.print();
		str="def";
		System.out.println("str2 = "+str);

 test2类中

String str;
	public test2(String str){
		this.str=str;
	}
	public void print(){
		System.out.println("str = "+str);
	}

 由String传值可知结果:

str = abc
str2 = def

 在此不多做赘述。

 

址传递又称引用传递,所有用class,interface,abstract class定义的类和接口以及数组都属于引用类型。想看址传递的具体表现形式,只需自定义一个函数,然后用其创建对象,结果显而易见。举例如下:

public static void main(String[] args){
		Student st1=new Student();
		st1.setName("A");
		Student st2=new Student();
		st2.setName("B");
		Student st3=new Student();
		st3.setName("C");
		//进行交换
		st1=st2;
		st2=st3;
		st3=st1;
		String name=st3.getName();
		System.out.println("The name of st3 now is: "+name);

结果为“The name of str3 now is: B”, 从结果可看出,st3最终指向了st2对象,此处为传址。

分享到:
评论

相关推荐

    小析绩效审计发展态势.doc

    小析绩效审计发展态势.doc

    基于极小析取范式的属性约简算法 (2012年)

    属性约简是粗糙集理论的核心问题之一,针对求取决策表所有决策约简集的NP问题,化繁为简将问题转化为对象动态增加下的决策约简求取问题。在深入分析了可辨识矩阵中可辨识集的特点及相互关系的基础上,优化改进决策辨识...

    渗透与WEB安全小析

    渗透测试和安全测试入门相关,扫盲安全测试;安全事,无大小;也许你的一个提醒,可以挽回公司的巨大损失

    滞销楼盘问题小析.doc

    在房地产行业中,滞销楼盘是一个严重的问题,往往与多种因素有关,其中户型设计不合理是导致房源滞销的主要原因之一。户型设计对于购房者来说至关重要,因为它是影响居住舒适度和生活品质的关键因素。本文将深入探讨...

    美术中的信息化应用小析(全文).docx

    【美术中的信息化应用小析】 在当今信息化时代,教育领域也开始积极探索如何将信息技术融入传统教学,以提升教学质量,激发学生兴趣。美术教育也不例外。美术课程的信息化应用旨在打破传统教学模式,利用网络资源...

    小析火力发电企业物流成本管理.doc

    【火力发电企业物流成本管理】是电力行业中一个关键的议题,尤其对于降低运营成本和提升企业竞争力至关重要。当前,火力发电企业在物流成本管理上存在一些主要问题: 1. **物流成本管理意识薄弱**:尽管现代物流...

    光伏并网微逆变器核心技术小析.pdf

    光伏并网微逆变器是太阳能发电系统中的关键设备,尤其在近年来,随着技术进步和市场需求,微逆变器逐渐受到广泛关注。与传统的集中式、串式和多串式逆变器相比,微逆变器有明显优势。它直接连接到每个光伏组件,确保...

    光伏并网微逆变器核心技术小析.docx

    光伏并网微逆变器是近年来在太阳能发电系统中逐渐受到重视的一种技术,尤其在提升系统效率和灵活性方面具有显著优势。相较于传统的集中式、串式和多串式并网逆变器,微逆变器直接连接到每个光伏组件,确保每个组件都...

    大学健美操教育的问题与路径小析.doc

    \n\n此外,练习形式的单一性也是挑战之一。传统的健美操教学流程往往过于程式化,缺乏互动性和趣味性,难以激发学生的学习兴趣。这种教学方式无法充分照顾到每个学生的需求,可能导致学生感到乏味,从而影响教学效果...

    滞销楼盘问题小析DOC

    《滞销楼盘问题小析》是一份针对房地产行业中普遍存在的滞销楼盘现象进行深度剖析的文档。这份资料旨在提供一种理解和解决滞销楼盘问题的方法论,对于房地产开发商、投资者、销售团队以及相关行业从业者来说,都具有...

    小波分析讲解与实例教学.rar_向小析_图像修复_实例讲解_小波分析_小波分析讲解

    对小波分析分讲解以及实例教学,可以实现,内附word说明

    唐人送别诗小析 (2003年)

    根据给定文件“唐人送别诗小析 (2003年)”的内容,我们可以从中提炼出关于唐代送别诗的一些重要知识点。 ### 一、唐代送别诗的特点 #### 1. 文字浅显,节奏舒缓 唐代送别诗的语言通常通俗易懂,如同日常交谈般自然...

    5°专场视觉设计小析

    网站的专场设计,应该算是网页视觉设计师的必修课,应该也算是最基本功。她所需要的设计理论都是最基本,但同时也是最重要的。设计理论版本多如牛毛,我这里仅仅整理5个方面来分析网页专场设计的一些方法,本人并非...

    Wifi,ZigBee和蓝牙大战小析资料下载

    智能家居被看作是下一个风口,但是近两年智能家居市场一直不温不火。一方面,很多智能产品并不能够抓住用户痛点,真正满足用户的需求,很多用户对此的接受度不高。另一方面,这个市场的格局还未形成, 无论是技术...

    论文研究-计算约简的差别矩阵简化算法不成立.pdf

    论文研究-计算约简的差别矩阵简化算法...实际应用中给出一种简化算法:一边从信息表中提取差别元素构成合取范式,一边用分配律、吸收律作逻辑公式的等价变换,直接得到最小析取范式.本章给出反例,说明该简化算法不总成立.

    论文研究-一种基于改进区分矩阵的属性约简算法.pdf

    现有的很多约简算法都是由构造决策表的区分矩阵出发,将矩阵中非空元素的合取范式转化为极小析取范式。但是,基于Skowron提出的区分矩阵约简算法对不相容决策表会产生错误的结果。为此,提出一种改进的区分矩阵的定义,...

Global site tag (gtag.js) - Google Analytics