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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 13155155528 中级黑马   /  2014-8-5 21:19  /  2462 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args)
   {
       char[] charss={'0','1','2','3','4','5','6','7'};
       String strr= arrayToString(charss);
       System.out.println(strr);
   }
   
   public static String arrayToString(char[] chars){
      
       String str="[";
   
       for (int i=0;i<=chars.length-1 ;i++ ){
        str=str+chars[i]+',';
       } System.out.println(chars.length);
       str=str+"]";
   
       return str;
数组可以放在下面的方法里吗?
chars代表什么意思?
为什么chars.length不是charss.length?
为什么System.out.println(chars.length);输出结果是8

14 个回复

倒序浏览
为什么System.out.println(chars.length);输出结果是8这个问题是为什么chars.length可以当charss.length用
回复 使用道具 举报
楼主明早我来教你,我一般8点到,早上早点来教室,我坐老师的右边,你懂的
回复 使用道具 举报
数组不能放入到下边,你要把数组往下边的chars里面传值。相当于 char[] chars ={'0','1','2','3','4','5','6','7'};
chars就相当于你传入数组在下面方法中的一个名字 ,chars可以改变的  char 或c都可以
下面那个方法和charss没有关系,因为你已经把charss的值赋给了chars, 所以应该是chars.length
chars.length 是求数组的长度,而不是角标 。 数组中有8个数,所以是8.
回复 使用道具 举报
一个个问题来解答吧
第一个问题,是String strr= arrayToString(charss);这一句话调用了arrayToString(char[] chars)这个函数,而且不是把整个数组放进去,而是把头指针传进去。
第二个问题,chars什么意思都不代表。。就是用户自己在定义函数时候的一个形参和(int x)是一个道理只是这个题目里不是int类型而是char[] 数组类型,你可以吧chars换成abc也可以,当然 后面也要相应变动。
第三个问题,你传到这个函数里的是用chars这个形参,而不是charss这个main函数里的值,在arrayToString(char[] chars)这个函数里你只能用chars这个变量(因为根本没有charss这个变量啊)
第四个问题,这个有一个小陷阱,请注意for (int i=0;i<=chars.length-1 ;i++ )这个for循环中判断条件i<=chars.length-1就决定了这个数组的长度最多只有8。而且str=str+"]";是在System.out.println(chars.length);这句话之后,也不会影响它的长度。因为charss这个数组的长度是8,所以传到 arrayToString(char[] chars)这个函数的长度也只有8,其实你可以试着输出一下这个数组,你就会发现内容不是你想的那样,会少一点。
希望这样讲你能明白。建议你在多看一下c语言的基础。
回复 使用道具 举报 1 0
数组是你在main函数定义的,不能放在下面的方法里,除非你在类里面定义成静态变量。
chars叫形式参数,charss叫实际参数,第4行代码把charss放进这个函数,函数就把charss当成chars来做运算。
chars是你自己写的一个函数里的,是你以后要用这个函数的时候传进去的数组的一个统称,你以后可以传张三李四,但都会当成chars来做运算.
8个数长度当然是8了
回复 使用道具 举报
吴杰栋 发表于 2014-8-5 21:32
楼主明早我来教你,我一般8点到,早上早点来教室,我坐老师的右边,你懂的

懂得了!原来是同道中人呀
回复 使用道具 举报
kangkai 发表于 2014-8-5 21:51
数组不能放入到下边,你要把数组往下边的chars里面传值。相当于 char[] chars ={'0','1','2','3','4','5',' ...

谢谢解答
回复 使用道具 举报
叼哥 发表于 2014-8-5 21:58
数组是你在main函数定义的,不能放在下面的方法里,除非你在类里面定义成静态变量。
chars叫形式参数,char ...

谢谢解答
回复 使用道具 举报
张小楼 发表于 2014-8-5 21:56
一个个问题来解答吧
第一个问题,是String strr= arrayToString(charss);这一句话调用了arrayToString(char ...

谢谢支持
回复 使用道具 举报
形参和实参的问题,貌似大家都说的很清楚。
回复 使用道具 举报
数组要放在方法里的话就得改代码了。chars是形参,代表以后你要传递进来的数组。charss是你new出来的,不是函数中的形参。因为你定义的charss一共有8个值,所以输出结果是8.
回复 使用道具 举报
冒牌高手 发表于 2014-8-6 08:53
数组要放在方法里的话就得改代码了。chars是形参,代表以后你要传递进来的数组。charss是你new出来的,不是 ...

谢谢解答
回复 使用道具 举报
13155155528 发表于 2014-8-5 21:21
为什么System.out.println(chars.length);输出结果是8这个问题是为什么chars.length可以当charss.length用 ...

Lz,你的java基础比较薄弱,建议回炉锻造

你糊涂的地方是函数的传参。

charss已经当做参数传给了arrayToString方法,你看arrayToString(char[] chars)的参数表,传过来的char[]型的参数会被赋值给一个叫做chars的变量,相当于执行了一次
char[] charss = {你程序里的东西}
char[] chars;
chars = charss;
回复 使用道具 举报
zeus00456 发表于 2014-8-6 22:43
Lz,你的java基础比较薄弱,建议回炉锻造

你糊涂的地方是函数的传参。

谢谢解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马