A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Ci功 中级黑马   /  2015-9-28 10:04  /  3371 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
swap(int[] arr,int a ,int b)与swap(int[a], int)



前面的函数可以实现将两个数组中的元素换位置,
后面的这个函数为什么不能实现这样的功能。
懂的同学,回答下,感激不紧。

最佳答案

查看完整内容

引用型变量它有具体的对象类型,并且它指向的是一个内存地址。而非引用型变量我理解就是那些基本数据类型了,没有对象类型,并且指向的是基本数据。arr就是是一个引用型变量,它是一个数组对象的引用,指向的是这个数组对象的内存地址。a和b就属于基本数据类型,指向的就是整数。int[a]和int的结果就是一个整数,这是一个基本数据类型。 你是不是以为传入int[a]、int就相当于把数组和角标传入到方法里面去了。没有,你这样传入的只 ...

9 个回复

倒序浏览
引用型变量它有具体的对象类型,并且它指向的是一个内存地址。而非引用型变量我理解就是那些基本数据类型了,没有对象类型,并且指向的是基本数据。arr就是是一个引用型变量,它是一个数组对象的引用,指向的是这个数组对象的内存地址。a和b就属于基本数据类型,指向的就是整数。int[a]和int[b]的结果就是一个整数,这是一个基本数据类型。
你是不是以为传入int[a]、int[b]就相当于把数组和角标传入到方法里面去了。没有,你这样传入的只是两个元素值而已,int[a]代表的是一个整数。和数组以及角标没关系。我们要看它的结果是什么。

评分

参与人数 1黑马币 +3 收起 理由
Ci功 + 3 很给力!

查看全部评分

回复 使用道具 举报
sorry,改正下,swap(int[] arr,int a ,int b)与swap(int[a], int[b])
回复 使用道具 举报
swap是你自定义的方法吧,前面那个swap传入了数组和要交换的元素的角标,这就明确了要对哪个数组中的哪两个元素进行操作,而后面的swap方法值传入了两个元素值,并没有明确好数组和角标。也就是说后面的swap(int[a],int[b])与swap(int x,int y)其实是一样的。
回复 使用道具 举报
水果牛牛 发表于 2015-9-28 10:21
swap是你自定义的方法吧,前面那个swap传入了数组和要交换的元素的角标,这就明确了要对哪个数组中的哪两个 ...

能不能通过内存分析来解释一下呢?
回复 使用道具 举报
Ci功 发表于 2015-9-28 10:36
能不能通过内存分析来解释一下呢?

这个需要用到内存分析吗?
回复 使用道具 举报
Ci功 中级黑马 2015-9-28 10:41:38
7#
水果牛牛 发表于 2015-9-28 10:38
这个需要用到内存分析吗?

或者说是变量的作用范围,引用型变量和非引用型变量。能从这个角度能解释一下吗?有劳了
回复 使用道具 举报
Ci功 中级黑马 2015-9-28 11:12:14
8#
水果牛牛 发表于 2015-9-28 11:05
引用型变量它有具体的对象类型,并且它指向的是一个内存地址。而非引用型变量我理解就是那些基本数据类型了 ...

哦,懂了,完美回答。
回复 使用道具 举报
Ci功 发表于 2015-9-28 11:12
哦,懂了,完美回答。

多谢,就差一个技术分了。
回复 使用道具 举报
雨来 高级黑马 2015-10-13 15:37:55
10#
首先 你要有一个数组  在有两个参数    就一个  你要给谁交换位置呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马