Java学习笔记之常用API学习笔记2
来源:互联网 发布:外文数据库检索 编辑:程序博客网 时间:2024/06/06 12:46
一、 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;
}
- Java学习笔记之常用API学习笔记2
- Java学习笔记之常用API学习笔记1
- Java学习笔记之常用API学习笔记3
- JAVA学习笔记(十八)- API常用类
- JAVA 常用API String 对象 学习笔记
- 【Java学习笔记】12.常用API
- Java学习笔记之Java API
- 【Unity3D】常用API学习笔记
- 黑马学习笔记--常用API
- Java学习笔记之常用类
- java学习笔记之常用类
- JAVA学习笔记之(常用类)
- java学习笔记之sql常用语句
- Android OpenGL ES学习笔记之常用API
- Java Sound API 学习笔记
- Java Mail API 学习笔记
- JAVA Logging API 学习笔记
- RTC Java API 学习笔记
- 前端性能优化指南(含移动端)
- 2014-4-27-Jquery学习
- C和指针读书笔记-第14章(预处理器)
- 判断一个整数是否是n^m次方类型数据,并比较乘法和除法性能差异
- 黑马程序员-------Java笔记问答总结01
- Java学习笔记之常用API学习笔记2
- 汇编指令: MOV、MOVSB、MOVSW、MOVSD、MOVSX、MOVZX
- SQlite3 二进制数据(BLOB)的存取【基于wxSqlite3的封装的操作】
- nodejs入门【安装接触】
- AndroidStudio中怎样删除Module
- Cstring转int型问题(error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *”))
- window未捕获异常处理
- 使用Java操作Redis(二)
- hdu1025 (最长上升子序列n*logn)