欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java 参数传递,

来源: javaer 分享于  点击 17121 次 点评:71

java 参数传递,


唉,老了!


搞了这么多年的,到头来基本的东西都忘记得差不多了!


1、Java中所有东东都是通过值传递。而对象,压根就不会被传递。

2、变量的值要么是原始类型,要么就是引用,而不是对象本身。


所以都是值传递,只不过这个值可能是原始类型的值,也可能是对象的地址(引用,见第二条)。

其实都是叫法不同,基本数据类型直接把数据复制一份,非基本数据类型(包括数组)把它的引用复制一份(其实就是内存地址),相当于多个引用指向同一个对像,调用其中任何一个引用改变这个对象,其他多个引用也随之改变,但当其中一个引用指向别的对象时,原来的引用不发生改变。

参考文章:http://tjuking.iteye.com/blog/1405532 的第二个例子, 函数中的对象只是其本身指向了别的对象,对于越来的对象和对象的应用时没有影响的。



参考:

原理:java参数传递(超经典): http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.html


表象: http://blog.csdn.net/steedhorse/article/details/6892569


或者这么说: 

1. 原始类型是值传递

2. 非原始类型是应用传递(也就是传地址值,上文说的对象地址的意思)


简单增加一个通过main 往args里面传递数据的例子:

如下参数传递给public static void main(String[] args) {

a) -d "\\t" "E:\LearningMaterial\ebook\Data Mining\LensKit\grouplens-lenskit-hello-25c12e76a10e\src\dataset\ml-100k\u.data" 6

传递后,args[1]等于:  \\\\t

b) -d \t "E:\LearningMaterial\ebook\Data Mining\LensKit\grouplens-lenskit-hello-25c12e76a10e\src\dataset\ml-100k\u.data" 6

传递后,args[1]等于:  \\t

c)    -d "\t" "E:\LearningMaterial\ebook\Data Mining\LensKit\grouplens-lenskit-hello-25c12e76a10e\src\dataset\ml-100k\u.data" 6

传递后,args[1]等于: \\t

由此可以看出, main接受的参数都当作是没有转义意义的参数,都是必须参数。 如果需要转义,得自己用双引号或者单引号(不可变)进行封装。

d)准确做法,注意双引号中间空格是一个tab键

   -d "" E:\LearningMaterial\ebook\Data Mining\LensKit\grouplens-lenskit-hello-25c12e76a10e\src\dataset\ml-100k\u.data" 6

相关文章

    暂无相关文章
相关栏目:

用户点评