Java学习笔记之常用API学习笔记2

来源:互联网 发布:外文数据库检索 编辑:程序博客网 时间:2024/06/06 12:46

Java学习笔记之常用API学习笔记2

一、      StringBuffer类

1、 简介

StringBuffer类用于内容可以改变的字符串,可以将其它各种类型的数据增加、插入到字符串中,也可以转置字符串中原来的内容。JDK1.0。

2、 常用构造方法

public StringBuffer()//构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。

public StringBuffer(intcapacity) //构造一个不带字符,但具有指定初始容量的字符串缓冲区。

public StringBuffer(Stringstr)//构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为16加上字符串参数的长度。

3、 常用方法

3.1添加功能

public StringBuffer append(xxx b)//在原有数据的基础上添加新数据,[xxx:任意类型数据],返回当前字符串缓冲区对象。

public StringBuffer insert(int offset, Stringstr)//在指定的位置上,将指定的参数类型数据,插入到当前的字符串缓冲区对象中,返回当前字符串缓冲区对象

public int capacity()//获得此字符串缓冲对象的当前容量

示例代码:

publicclass StringBufferMethod {

public staticvoid main(String[]args) {

//创建字符串缓冲区对象

StringBufferbuffer =new StringBuffer();//16

//添加任意类型数据

buffer.append("hello").append(false).append(12345).append(67890);

//插入数据

//buffer.insert(buffer.length(), "你好");//末尾插入

buffer.insert(10, "你好");//其他位置插入

System.out.println(buffer.toString());//打印

System.out.println("实际使用容量:"+buffer.length());

System.out.println("容量:" +buffer.capacity());

}

}

结果:

hellofalse你好1234567890

实际使用容量:22

容量:34

注意:StringBuffer类重写了Object类中的toString()方法

3.2删除功能

public StringBuffer deleteCharAt(int index)//删除掉指定位置上的字符

public StringBuffer delete(intstart,int end)//从指定位置开始,到指定位置结束,在当前的字符串缓冲区对象中删除,包左不包右

示例代码:

publicclass StringBufferMethod2 {

public staticvoid main(String[]args) {

//创建对象

StringBufferbuffer =new StringBuffer();

//添加字符

buffer.append("hello");

buffer.append("World");

buffer.append("你好");

buffer.append(12345);

System.out.println("添加后的字符串是:"+buffer);     //打印添加后的字符

buffer.deleteCharAt(16);   //删除一个字符

System.out.println("删除一个字符:"+buffer);

buffer.delete(10, 12); //删除指定范围内的字符 ,包左不包右

System.out.println("删除多个字符:"+buffer);     //打印

}

}

结果是:

添加后的字符串是:helloWorld你好12345

删除一个字符:helloWorld你好1234

删除多个字符:helloWorld1234

3.3截取功能

和String类的截取功能一样,返回String类型的新字符串,原字符串的内容没有改变。

public String substring(intstart, int end)//从指定位置开始到指定位置结束,截取该字符串缓冲区的数据,返回字符串对象

public String substring(intstart) //从指定位置开始到最后,截取该字符串缓冲区的数据,返回字符串对象。

示例代码:

publicclass StringBufferMethod4 {

public staticvoid main(String[]args) {

StringBufferbuffer =new StringBuffer();

//添加数据

buffer.append(false).append("Java").append("SSH").append("JNI");

System.out.println(buffer);//输出添加后的数据

Stringresult =buffer.substring(9, 12);//包左不包右

System.out.println(result);

StringBufferbuffer1 =new StringBuffer();

buffer1.append(123).append("JavaEE").append("JavaWeb");

System.out.println(buffer1);//输出添加后的数据

Stringresult1 =buffer1.substring(3);

System.out.println(result1);

}

}

结果是:

falseJavaSSHJNI

SSH

123JavaEEJavaWeb

JavaEEJavaWeb

3.4反转功能

public StringBuffer reverse()//将此字符序列用其反转形式取代。

3.5替换功能:包左不包右

public StringBuffer replace(int start, int end,String str)//从指定位置开始,到指定位置结束,用给定的字符串,将字符串缓冲区中的数据替换,

//返回当前的字符串缓冲区对象。

示例代码:

publicclass StringBufferMethod3 {

public staticvoid main(String[]args) {

//创建对象

StringBufferbuffer =new StringBuffer();

//添加字符串

buffer.append("Hello");

buffer.append("JavaWeb");

buffer.append("JavaEE");

buffer.append("Android");

System.out.println(buffer);//打印添加后的字符串

buffer.replace(0, 5, "JavaSE");//替换指定字符串包左不包右

System.out.println(buffer);//打印替换后的结果

//创建对象

StringBufferbuffer2 =new StringBuffer("123");

System.out.println(buffer2);//打印反转前的内容

buffer2.reverse();//反转

System.out.println(buffer2);//打印反转后的结果

}

}

结果是:

HelloJavaWebJavaEEAndroid

JavaSEJavaWebJavaEEAndroid

123

321

4、StringBuffer和String的相互转换:

StringBuffer 转换到 String的方式:

1.通过String类的构造方法

public String(StringBuffer buffer)

2.通过String类的普通方法

public static StringvalueOf(Objectobj)

3.通过StringBuffer类中的toString()方法

4.通过StringBuffer类中的substring()方法 (注:不常用)

       String 转换到 StringBuffer的方式:

1.通过StringBuffer类的构造方法

public StringBuffer(Stringstr)

2.通过StringBuffer类的方法

public StringBuffer append(Stringstr)

public StringBuffer insert(int offset, Stringstr)

示例代码:

public class StringBufferTest {

public staticvoid main(String[]args) {

StringBuffersb =new StringBuffer("JavaSE");

// StringBuffer -----> String

//方式1通过String类的public String(StringBuffer buffer)方法

//String str = new String( sb);

//方式2通过String类的public static String valueOf(Object obj)方法

//String str = String.valueOf(sb);

//方式3通过StringBuffer类的toString()方法

Stringstr =sb.toString();

System.out.println(str);

//String -----> StringBuffer

Strings ="Hello";

//方式1通过StringBuffer类的构造方法

//StringBuffer buffer2 = new StringBuffer(s );

//方式2通过StringBuffer类的方法, public StringBuffer append(String str)

StringBufferbuffer2 =new StringBuffer();

buffer2.append("haha");

System.out.println(buffer2);

}

}

5、String类和StringBuffer类的区别

String类长度固定,内容固定。主要用于比较两个字符串、查找和抽取串中的字符或字串、字符串与其他类型之间的相互转化等。

StringBuffer类长度可变,内容可变。当对字符串进行插入、删除、翻转等操作,推荐使用StringBuffer。

6、String类和StringBuffer类作为参数传递问题

java参数传递

传递基本类型,形式参数的改变对实际参数没有影响

传递引用类型,形式参数的改变对实际参数有影响

String做为参数传递: 形式参数的改变对实际参数没有影响,因为String是一个常量

StringBuffer作为参数传递:形式参数的改变对实际参数有影响

7、编程练习,int数组拼接成一个字符串

public classStringBufferTest2 {

public staticvoid main(String[]args) {

//1:创建int[]数组

int[] arr = {1,2,3,4,5};

//调用转换方法

String str = concatString(arr);

System.out.println(str);//打印转换结果

}

public static StringconcatString(int[]arr){

//定义一个StringBuffer对象,用来拼接字符串

StringBuffer buffer = new StringBuffer();

//2: for遍历数组,得到每一个元素

for (int i = 0; i < arr.length;i++) {

//3:StringBuffer类的append()方法拼接字符串

buffer.append(arr[i]);//返回StringBuffer类型

}

//4:返回结果,用StringBuffer类的toString方法把StringBuffer转换成String类型

return buffer.toString();

}

}

二、StringBilder类:

1、简介:

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作StringBuffer 的一个简易替换。StringBuilder类是jdk1.5以后出现的,推荐使用,原因效率高,但是线程不安全

2、常用构造方法:和StringBuffer类中的一致

3、常用方法:和StringBuffer类种的方法一致

4、String、StringBuffer、StringBuilder的区别

String: 从JDK1.0开始,长度固定,内容不可变

StringBuffer: 从JDK1.0开始,长度可变,内容可变,线程同步 --代码运行安全 -- 效率低

StringBuilder:从JDK1.5开始,长度可变,内容可变,线程不同步 -- 代码运行有隐患 -- 效率高

三、Arrays类:数组类

       1、简介:

              针对数组进行操作的工具类,提供了排序,查找等功能。   

       2、常用构造方法:

              无

       3、常用方法:

              public static StringtoString(int[] a)   //把各种数组 转换为字符串

              public static voidsort(int[] a)            //把各种数组 进行元素排序

              public static intbinarySearch(int[] a,int key)   //在各种类型数组中,进行执行数值的查找,折半查找方式(二分查找法)

              注意:该方法的使用,前提要求 给定的数组是一个有序的数组

排序的3种常用方法

       1、冒泡排序算法

       public static voidbubbleSort(int[] arr){

              //外层循环用来控制比较的次数

              for (int i = 0; i <arr.length-1; i++) {

                     //内层循环用来控制参与比较的元素

                     // arr.length-1是防止下标越界,再减i是去除重复比较次数

                     for (int j = 0; j< arr.length-1-i; j++) {

                            if (arr[j]> arr[j+1]) {

                                   //两个数交换

                                   inttemp = arr[j];

                                   arr[j]= arr[j+1];

                                   arr[j+1] = temp;

                            }

                     }

              }

       }

       2、选择排序

       public static voidselectSort(int[] arr) {

              //外循环控制比较的次数

              for (int i = 0; i <arr.length-1; i++) {

                     //内循环控制参与比较的元素

                     for (int j = i+1;j < arr.length; j++) {

                            //比较元素大小

                            if (arr[i]> arr[j]) {

                                   inttemp = arr[i];

                                   arr[i]= arr[j];

                                   arr[j]= temp;

                            }

                     }

              }

       }

       3、二分查找法(折半查找法),前提:数组是有序的

       public static inthalfSearch(int[] arr, int key) {

              //定义三个变量,max,min,mid

              int min = 0;

              int max = arr.length -1;

              int mid = (min+max)/2;

              while (arr[mid] != key){//判断key与数组中的元素是否相等

                     if (key <arr[mid]) {

                            //要查找的数在左边

                            max = mid-1;//更新最大值

                     } else {

                            //要查找的数在右边

                            min =mid+1; //更新最小值

                     }

                     if (min > max){//当最小值比最大值还大时,表示该数不存在

                            return -1;

                     }

                     mid =(min+max)/2;//更新中间值

              }            

              return mid;

       }

0 0