栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Java传值的哲学解释

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Java传值的哲学解释

一般开始接触代码世界,很多人都是从C或C++开始的。C和C++像文言文一样,性能好效率高,全面又古老,前人辈出,但是指针等特性又让人觉得强大、直接但是难把握。这种特点延伸到了OC等其他衍生语言上。

而Java消除了指针的概念,在参数传递方面尤其有着对应现实世界的哲思。Java是值传递的,这点和C家族完全不同。

当你在现实世界中,用现实的事物,在你的头脑中计算,赋值的过程往往和Java的值传递思想是一致的,从这点上来说Java更加“真实”。

门口的柿子树有2米高,按样子明年能长到3米高,于是你知道,柿子树从2米变成了3米。当然了,只是你脑子这么想了一下(赋值和计算),这个过程体现了你有一定的计算、预测能力,而并不是你一思考,柿子树立即跟着你的思维长到了3米高。

用Java的“话”来说,你是复制了一份柿子树的高度放在你脑子里,给其加上了另一个高度,你计算出了一个结果。但是柿子树它还在那里,安静地看着你。

C家族就不同了,那是一片void的虚空,魔幻的世界,就像吃了红伞伞,你无所不能,为所欲为,思维的指针所到之处,寸草不生,强大的人越强大,糊涂的人越糊涂。

其实Java并不是没有指针,就像一把粗粝的刀,给它裹上了兽皮,不那么剌手。但是层层包装之后,加上思前顾后想兼顾的东西太多,效率比起C来确实下降了些。

public class TestObj {
	int x;
	int y;
	public void swap_int(int x,int y) {
		x = x+y;
		y = x-y;
		x = x-y;
	}
}
public class Main {

	public static void main(String args[]) {		
		System.out.println("Launch succeeded!");	

//测试传值-开始		
		int a = 1, b = 2;	
		func_swap_int(a,b); //内容拷贝
		System.out.println("Step1: "+"a = "+a+" "+"b = "+b);	

		TestObj o1 = new TestObj();
		TestObj o2 = new TestObj();
		o1.x = 10;
		o2.x = 20;
	    int temp = o1.x; //指针拷贝
	    o1.x = o2.x;
	    o2.x = temp;
	    System.out.println("Step2: "+"o1.x = "+o1.x+" "+"o2.x = "+o2.x);
	    
	    o1.y=30;
	    o1.swap_int(o1.x, o1.y); //内容拷贝
	    System.out.println("Step3: "+"o1.x = "+o1.x+" "+"o1.y = "+o1.y);
	    int temp2 = o1.x; //指针拷贝
	    o1.x = o1.y;
	    o1.y = temp2;
	    System.out.println("Step4: "+"o1.x = "+o1.x+" "+"o1.y = "+o1.y);
	    o1.x = o1.x+o1.y; //指针拷贝
	    o1.y = o1.x-o1.y;
	    o1.x = o1.x-o1.y;	    
	    System.out.println("Step5: "+"o1.x = "+o1.x+" "+"o1.y = "+o1.y);	    
	    }
//测试传值-结束	
	
		public static void func_swap_int(int x,int y) {
			x = x+y;
			y = x-y;
			x = x-y;
		}
}

耍好了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号