您的位置:首页 > 编程语言 > Java开发

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

2015-04-27 21:09 651 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: