黑马程序员技术交流社区

标题: 有关基本数据类型对象的一个代码问题 [打印本页]

作者: 18353665932    时间: 2014-6-14 16:30
标题: 有关基本数据类型对象的一个代码问题
  1. package cn.itcast.api.p2.wrapper.test;

  2. import java.util.Arrays;

  3. public class WrapperTest2 {

  4.         private static final String SPACE = " ";
  5.         /**
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {

  9.                 /*
  10.                  * 综合练习:
  11.                  * "34 9 -7 12 67 25"要求对这个字符串中的数值进行从小到大的排序,
  12.                  /
  13.                  
  14.                  
  15.                 String str = "34 9 -7 12 67 25";
  16.                
  17.                 str = sortStringNumber(str);//这是个什么方法?有什么用?
  18.                 System.out.println(str);
  19.         }

  20.         public static String sortStringNumber(String str) {
  21.                 String[] str_nums = toStringArray(str);
  22.                         int[] nums = toIntArray(str_nums);
  23.                         sortIntArray(nums);
  24.                         return arrayToString(nums);
  25.         }
  26.         private static String arrayToString(int[] nums) {
  27.                
  28.                 StringBuilder sb = new StringBuilder();//这里的字符串缓冲区有什么用》???
  29.                 for (int i = 0; i < nums.length; i++) {
  30.                         if(i!=nums.length-1)
  31.                                 sb.append(nums[i]+SPACE);
  32.                         else
  33.                                 sb.append(nums[i]);
  34.                 }
  35.                
  36.                 return sb.toString();
  37.         }

  38.                 private static void sortIntArray(int[] nums) {
  39.                 Arrays.sort(nums);//这里的方法有什么用??
  40.         }
  41.                 private static int[] toIntArray(String[] str_nums) {
  42.                
  43.                 int[] arr = new int[str_nums.length];
  44.                
  45.        
  46.                 for (int i = 0; i < str_nums.length; i++) {
  47.                        
  48.                         arr[i] = Integer.parseInt(str_nums[i]);
  49.                 }
  50.                
  51.                
  52.                 return arr;
  53.         }
  54.         private static String[] toStringArray(String str) {
  55.                
  56.                 return str.split(SPACE);
  57.         }
  58.        
  59.        

  60. }
复制代码
求各位大神帮忙解决在代码中注释的问题,告诉小弟为什么!谢谢啦!

作者: a6217815    时间: 2014-6-14 17:08
1.str = sortStringNumber(str);//这是个什么方法?有什么用?

sortStringNumber()是一个自定义的将输入的若干任意整数排序的方法,是若干方法的一个集合体。
首先,他调用了toStringArray(str)以空格为标记切割字符串;其次调用了toIntArray()将切割获得的字符串数组转换成int型数组;然后是调用sortIntArray()对得到的整形数组排序;最后调用arrayToString()方法,将排列好的整型数组转换成字符串输出。

2.StringBuilder sb = new StringBuilder();//这里的字符串缓冲区有什么用???

避免多次分配对象,提高效率

3.Arrays.sort(nums);//这里的方法有什么用??

给得到的整型数组进行从小到大的排序
作者: 18353665932    时间: 2014-6-14 17:16
a6217815 发表于 2014-6-14 17:08
1.str = sortStringNumber(str);//这是个什么方法?有什么用?

sortStringNumber()是一个自定义的将输入的 ...

谢谢大神,但是第二个我还是不太明白,我知道是为了提高效率才用的字符串缓冲区,但是没看出来在哪节省效率了。。。。
作者: HKing    时间: 2014-6-14 17:17
1、str = sortStringNumber(str);//这是个什么方法?有什么用?
解答:sortStringNumber是在下面实现的方法,它用来实现对字符串中的数值进行从小到大的排序。
2、StringBuilder sb = new StringBuilder();//这里的字符串缓冲区有什么用》???
解答:这里的StringBuilder用来将int类型数组nums里面的元素转换为String类型,并存储,整个函数arrayToString就是将int类型的数组转换为一个特定的字符串。
3、Arrays.sort(nums);//这里的方法有什么用??
解答:sort是Arrays里面的静态方法,作用是将数组nums进行升序排序

希望对你有所帮助吧。。。

作者: HKing    时间: 2014-6-14 17:29
18353665932 发表于 2014-6-14 17:16
谢谢大神,但是第二个我还是不太明白,我知道是为了提高效率才用的字符串缓冲区,但是没看出来在哪节省效 ...

哈哈,我也不是什么大神,就跟你一样正在走流程准备进黑马。你说的第二个问题的,你可以看下这里吧,里面有详细的描述,应该可以的吧:http://blog.csdn.net/rmn190/article/details/1492013
大家一起交流学习,共同进步哈:handshake
作者: 18353665932    时间: 2014-6-14 17:31
HKing 发表于 2014-6-14 17:17
1、str = sortStringNumber(str);//这是个什么方法?有什么用?
解答:sortStringNumber是在下面实现的方法 ...

谢谢,有点明白了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2