Java基础---StringBuffer

来源:互联网 发布:阿里云ces加内存 编辑:程序博客网 时间:2024/06/05 20:54

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


1:StringBuffer
 (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了
    一个字符串缓冲区类。StringBuffer供我们使用。
 (2)StringBuffer的构造方法
  A:StringBuffer()
  B:StringBuffer(int size)
  C:StringBuffer(String str)
 (3)StringBuffer的常见功能(自己补齐方法的声明和方法的解释)
  A:添加功能
  B:删除功能
  C:替换功能
  D:反转功能
  E:截取功能(注意这个返回值)
 (4)StringBuffer的练习(做一遍)
  A:String和StringBuffer相互转换
   String -- StringBuffer
    构造方法
   StringBuffer -- String
    toString()方法
  B:字符串的拼接
  C:把字符串反转
  D:判断一个字符串是否对称
 (5)面试题
  小细节:
   StringBuffer:同步的,数据安全,效率低。
   StringBuilder:不同步的,数据不安全,效率高。
  A:String,StringBuffer,StringBuilder的区别
  B:StringBuffer和数组的区别?
 (6)注意的问题:
  String作为形式参数,StringBuffer作为形式参数。
 
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:要掌握的方法(自己补齐方法)
   把数组转成字符串:
   排序:
   二分查找:
 (4)Arrays工具类的源码解析
 (5)把字符串中的字符进行排序
  举例:
   "edacbgf"
   得到结果
   "abcdefg"

3:Integer(掌握)
 (1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
  byte Byte
  short Short
  int Integer
  long Long
  float Float
  double Double
  char Character
  boolean Boolean
 (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的新特性
  自动装箱 基本类型--引用类型
  自动拆箱 引用类型--基本类型
 
  把下面的这个代码理解即可:
   Integer i = 100;
   i += 200;
 (6)面试题
  -128到127之间的数据缓冲池问题


  String:
  StringBuffer:
  StringBuilder:
  冒泡排序
  选择排序
  二分查找
 

 重点:
 
  一定要写的
   1.冒泡,选择排序,二分查找,各写两遍,原理理解下
   2.把总结上的案例写一遍,看一遍总结
    A:String和StringBuffer相互转换
    B:字符串的拼接
    C:把字符串反转
    D:判断一个字符串是否对称
package itcast_01;

public class Demo {

 /**
  * /** 统计大串中小串出现的次数 举例:在字符串”
  * woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中
  * java出现了5次
  *
  * 分析: 1.定义统计变量 int count = 0; 2.在大串中找小串, int index = str.indexOf("java");
  * 3.比较 找不到(index == -1) return count; 找到了(index != -1) count++; str =
  * str.substring(index + 4); 重复2
  */

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String str = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
  // 定义统计变量
  int count = 0;

  while (true) {
   // 在大串中找小串
   int index = str.indexOf("java");
   // 比较
   if (index != -1) { // 不等于-1 就是说明找到了 Java
    count++;
    // 截取大串,将截取后的新串赋值给大串;
    str = str.substring(index + 4);
   } else { // 找不到。
    break;
   }

  }
  System.out.println("大串中子串出现了"+count+"次");
 }

}
======================================================================
package cn.itcast_me;

public class SelectSort {

 /**
  * /选择排序,  从0索引开始,单挑剩下的每一个.
  * 第一轮:从从0索引开始,单挑剩下的每一个.
  * 第二轮:从从1索引开始,单挑剩下的每一个.
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //创建一个数组,是你测试用的。
  int[] arr = {2,13,5,9,16,7,29,53,18};
  //调用排序方法功能,实现排序。
  selectSort(arr);
 }
 
 public static void printarr(int[] arr) {
  for (int i = 0; i < arr.length; i++) {
   System.out.print(arr[i]+" ");
  }
  System.out.println();
 }
 
 public static void selectSort(int[] arr) {
  printarr(arr);
  //要进行arr.length-1次。
  for (int j = 0; j < arr.length-1; j++) {
  // 第一轮:从0索引开始,单挑剩下的每一个.
   for (int i = j+1; i < arr.length; i++) {
    if (arr[i]<arr[j]) {
     int temp = arr[i];
     arr[i] = arr[j];
     arr[j] = temp;
    }
   }
   printarr(arr);
  }
 }

}
=================================================================

package cn.itcast_me;

public class bubbleSort {

 public static void main(String[] args) {
  // TODO 冒泡排序
  int[] arr = {24, 69, 80, 57, 13};
  bubblesort(arr);
 
 }

 private static void bubblesort(int[] arr) {
  for (int j = 0; j < arr.length-1; j++) {
   for (int i = 0; i < arr.length-1; i++) {
    if (arr[i]>arr[i+1]) {
     int temp = arr[i];
     arr[i] = arr[i+1];
     arr[i+1] = temp;
    }
   }
   printarr(arr);
  }
 }

 public static void printarr (int[] arr) {
  // TODO Auto-generated method stub
  for (int i = 0; i < arr.length; i++) {
   System.out.print(arr[i]+" ");
  }
  System.out.println();
 }

}
==================================================================

package cn.itcast_me;

public class SortDemo {

 /**
  *
  * 把字符串中的字符进行排序。
  * 举例:”dacgebf”
  * 结果:”abcdefg”
  *
  */
 public static void main(char[] args) {
  // TODO Auto-generated method stub
  String arr = "dacgebf";
  System.out.println(arr);
  char[] chr = arr.toCharArray();// 把arr变成字符数组,用chr接受。
  sort(chr);
 }

 public static void printArr(char[] chr) {
  for (int i = 0; i < chr.length; i++) {
   System.out.print(chr[i]);
  }
  System.out.println();
 }
 
 public static void sort(char[] chr) {
 
  // TODO Auto-generated method stub
  for (int i = 0; i < chr.length-1; i++) {
   for (int j = i+1; j < chr.length; j++) {
    if (chr[j]<chr[i]) {
     char temp = chr[j];
     chr[j] = chr[i];
     chr[i] = temp;
    }
   }
   printArr(chr);
  }
 }

}



1.Arrays类
 Arrays.toString(int[])//数组拼接字符串
 任意类型---->字符串    
       任意类型 + ""
       String.valueOf(任意类型);
       String---->int
       int i =  Integer.parseInt(String);

2.正则表达式
 String类的方法:
  matches(regex);
  split(regex);
  replaceAll(regex,"*");
3.Math类
 ceil
 floor()
 round()
4.Date类
5.Calendar
  DateFormat
 SimpleDateFormat
6.BigInteger
7.BigDecimal

 重点:
  案例: 有一个字符串:”91 27 46 38 50”
   写代码输出结果是 :”27 38 46 50 91”
  SimpleDateFormat
   解析和格式化都要会写
  Date类
  Calendar(日历类)
   getInstance()
   set()
   get(int)
   add(int,int);
  正则表达式(别人写好的,你会用即可,然后能大体看懂正则的意思)
   要知道BigInteger和BigDecimal有什么用??


  
  

0 0