黑马程序员--StringBuffer类数组高级Arrays类包装类day(10)

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------




         今天学习了很多内容,当然也非常重要,StringBuffer类即字符串缓冲区,改善了String类内容固定的问题。但是StringBuffer数据是不同步的,安全但是效率不高,所以我们经常用到的是StringBuilder,这两者用法一样。数组高级部分则是讲解了两方面内容:排序和查找。排序主要掌握冒泡排序和选择排序,查找呢则要掌握自然查找和二分查找。Arrays类则是对数组进行操作的工具类,要掌握一些基本操作的方法,排序和查找。最后一个重要问题就是基本类型包装类的问题,老师主要举了两个类Integer和Character,学习和掌握了这两个类,别的包装类也就掌握了。好了,以下就是总结的具体内容


1:StringBuffer(掌握)
         (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了
            一个字符串缓冲区类。StringBuffer供我们使用。
         (2)StringBuffer的构造方法
                   A:StringBuffer()  无参构造,初始容量是16个字符
                   B:StringBuffer(int size)   构造一个不带字符,但具有指定初始容量的字符串缓冲区
                   C:StringBuffer(String str)  构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
        (3)StringBuffer的常见功能

                   A:添加功能
                        append(任意类型数据) 可以把任意类型的数据添加到字符串缓冲区,并返回字符串缓冲区本身
                        insert(int offset, 任意类型数据) 在指定位置把任意类型的数据插入到字符串缓冲区
 
                  B:删除功能
                        delete(int start, int end) 移除此序列的子字符串中的字符 
                        deleteCharAt(int index) 移除此序列指定位置的 char


                 C:替换功能
                        replace(int start, int end, String str)  使用给定 String 中的字符替换此序列的子字符串中的字符


                D:反转功能
                        reverse() 将此字符序列用其反转形式取代


                E:截取功能(注意返回类型为String,StringBuffer本身不变化)
                        substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列

                        substring(int start, int end) 返回一个新的 String,它包含此序列当前所包含的字符子序列



      (4)StringBuffer的练习
               A:String和StringBuffer相互转换
                        String --> StringBuffer
                                  通过构造方法
                        StringBuffer --> String
                                  通过toString()方法
               B:字符串的拼接 append()
               C:把字符串反转 reverse()
               D:判断一个字符串是否对称(java程序日志中) 
      (5)面试题
               A:String,StringBuffer,StringBuilder的区别
                         a:String内容是不可变的,而后两个可变
                         b:StringBuffer数据是同步的,安全,效率低,
                            StringBuilder数据是不同步的,不安全,效率高。  
  
              B:StringBuffer和数组的区别?
                         两者都可以看作是一个容器来装其他的数据。
                         但是StringBuffer得数据最终是一个字符串数据,
                         数组可以放置多种数据,但必须是同一种类型。
     (6)注意的问题:
              String作为形式参数,StringBuffer作为形式参数
                         注意:String作为参数传递和基本类型数据作为参数传递是一样的,
                      
2:数组高级以及Arrays(掌握)
     (1)排序
             A:冒泡排序
                         相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处。同理,其他的元素就可以排好。

                          public static void bubbleSort(int[] arr) {
                                for(int x=0; x<arr.length-1; x++) {
                                      for(int y=0; y<arr.length-1-x; y++) {
                                            if(arr[y] > arr[y+1]) {
                                                int temp = arr[y];
                                                arr[y] = arr[y+1];
                                                arr[y+1] = temp;
                                            }
                                       }
                                 }
                            }

              B:选择排序
                           把0索引的元素,和索引1以后的元素都进行比较,第一次完毕,最小值出现在了0索引。同理,其他的元素就可以排好。

                          public static void selectSort(int[] arr) {
                                for(int x=0; x<arr.length-1; x++) {
                                      for(int y=x+1; y<arr.length; y++) {
                                            if(arr[y] < arr[x]) {
                                                 int temp = arr[x];
                                                 arr[x] = arr[y];
                                                 arr[y] = temp;
                                            }
                                       }
                                }
                           }
      (2)查找
              A:基本查找
                          针对数组无序的情况

                          public static int getIndex(int[] arr,int value) {
                                int index = -1;

                                for(int x=0; x<arr.length; x++) {
                                      if(arr[x] == value) {
                                          index = x;
                                          break;
                                      }
                                }

                               return index;
                           }
              B:二分查找(折半查找)
                         针对数组有序的情况(千万不要先排序,在查找)

                         public static int binarySearch(int[] arr,int value) {
                               int min = 0;
                               int max = arr.length-1;
                               int mid = (min+max)/2;

                              while(arr[mid] != value) {
                                    if(arr[mid] > value) {
                                        max = mid - 1;
                                    }else if(arr[mid] < value) {
                                         min = mid + 1;
                                   }

                                   if(min > max) {
                                         return -1;
                                   }

                                    mid = (min+max)/2;
                             }

                             return mid;
                       }
      (3)Arrays工具类
               A:是针对数组进行操作的工具类。包括排序和查找等功能。
               B:要掌握的方法
                          把数组转成字符串:
                                String toString()


                           排序:
                                void  sort(各种类型的数组)
                                void  sort(各种类型的数组 a, int fromIndex, int toIndex) 对指定范围内的数组进行排序 


                          二分查找:
                                int binarySearch(各种类型的数组,要查找的数据)


     (4)Arrays工具类的源码解析
     


3:Integer(掌握)
     (1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
                byte     Byte
                shortShort
                intInteger
                long     Long
                floatFloat
                doubleDouble
                charCharacter
                booleanBoolean
     (2)Integer的构造方法
              A:Integer i = new Integer(100);
              B:Integer i = new Integer("100");
                           注意:这里的字符串必须是由数字字符组成
     (3)String和int的相互转换
              A:String --> int
                             Integer.parseInt("100");
              B:int --> String
                             String.valueOf(100);
     (4)其他的功能(了解)
              进制转换
     (5)JDK5的新特性
             自动装箱基本类型-->引用类型
             自动拆箱引用类型-->基本类型

     (6)面试题
             -128到127之间的数据缓冲池问题
                       通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,
                       如果数据是该范围内的,每次并不创建新的空间


4:Character(了解)
    (1)Character构造方法
            Character ch = new Character('a');
    (2)要掌握的方法:
            A:判断给定的字符是否是大写
                        isUpperCase(char ch)


            B:判断给定的字符是否是小写
                        isLowerCase(char ch)


            C:判断给定的字符是否是数字字符
                        isDigit(char ch)


            D:把给定的字符转成大写
                        toUpperCase(char ch)


            E:把给定的字符转成小写
                        toLowerCase(char ch)


    (3)案例:
            统计字符串中大写,小写及数字字符出现的次数(java程序日志中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值