String类__ 下

来源:互联网 发布:2016最新人工智能产品 编辑:程序博客网 时间:2024/04/28 19:26



StringBuffer是字符串缓冲区。

StringBuffer是一个容器。
特点:

1,长度是可变化的。
2,可以直接操作多个数据类型。
3,最终会通过toString方法变成字符串。

对数据库的四大操作
C create U update R read D delete

StringBuffer的面盆理论(有意思)
将StringBuffer看做是一个面盆,无论你向面盆里面放入或者取出什么东西,返回的是这个面盆,面盆始终都不会改变。
StringBuffer的增删操作返回的都是StringBuffer类型

StringBuffer中的常用方法
1,存储。

StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
代码示例:
/**存储1.append();2.insert(index,数据);*/class AppendDemo {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append(99).append("asd");//返回的都是StringBuffer。在数据尾部加上数据sb.insert(2,"=");//在指定的位置插入数据System.out.println(sb.toString());}}


2,删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。


/**删除StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。StringBuffer deleteCharAt(index):删除指定位置的字符。*/class DeleteDemo {public static void main(String[] args) {StringBuffer sb = new StringBuffer("asdfghjkl");sb.delete(2,4);//删除容器中一段角标范围的内容,注意:包含头不包含尾System.out.println(sb.toString());sb.deleteCharAt(1);//删除制定索引处的字符System.out.println(sb.toString());}}


3,获取。
char charAt(int index) :返回指定索引处对应的字符
int indexOf(String str) :返回要查找的字符串的起始索引位置
int lastIndexOf(String str) :反向查找字符串的起始索引位置
int length() :获取容器的长度
String substring(int start, int end) :获取指定起始和结束位置的字符串(包含起始头,不包含结束尾)

代码示例:
/**获取。char charAt(int index) :返回指定索引处对应的字符int indexOf(String str) :返回要查找的字符串的起始索引位置int lastIndexOf(String str) :反向查找字符串的起始索引位置int length() :获取容器的长度String substring(int start, int end) :获取指定起始和结束位置的字符串*/class GetDataDemo {public static void main(String[] args) {StringBuffer sb = new StringBuffer("asdfghjkl");sop(sb.charAt(3));sop(sb.indexOf("fghj"));sop(sb.lastIndexOf("hj"));sop(sb.length());sop(sb.substring(3,5));//同样的包含头不包含尾}public static void sop(Object obj){System.out.println(obj);}}
 
4,修改。
StringBuffer replace(start,end,string);将容器中指定的起始和结束位置中的数据,替换成要求的字符串
void setCharAt(int index, char ch) ;将字符放入容器中的指定索引处

代码示例:
/**修改StringBuffer replace(start,end,string);将容器中指定的起始和结束位置中的数据,替换成要求的字符串void setCharAt(int index, char ch) ;将字符放入容器中的指定索引处*/class ChangeDemo{public static void main(String[] args) {StringBuffer sb = new StringBuffer("asdfghjkl");sb.replace(1,3,"qwer");System.out.println(sb.toString());sb.setCharAt(2,'p');System.out.println(sb.toString());}}

5,反转。
StringBuffer reverse();将容器中的字符串进行翻转

代码示例:
/**反转StringBuffer reverse();将容器中的字符串进行翻转*/class ReverseDataDemo {public static void main(String[] args) {StringBuffer sb = new StringBuffer("asdfghjkl");System.out.println(sb.reverse());}}

6,将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

/**将缓冲区中指定数据存储到指定字符数组中。void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) */class SetDemo {public static void main(String[] args) {StringBuffer sb = new StringBuffer("asdfghjkl");char[] ch1 = new char[5];//存储在空的数组中,输出的结果有明显的空格char[] ch2 = {'q','w','e','r'};//存储在有具体元素的数组中,存入的元素会将原数组中的元素覆盖掉sb.getChars(1,3,ch1,1);sb.getChars(1,3,ch2,1);print(ch1);print(ch2);}public static void print(char[] ch){for (int a = 0;a<ch.length ;a++ ){System.out.print(ch[a]);}}}

注意:
存储在有具体元素的数组中,存入的元素会将原数组中的元素覆盖掉。

JDK1.5 版本之后出现了StringBuilder.
StringBuffer和StringBuilder的方法一样

StringBuffer和StringBuilder的区别:
StringBuiderStringBuffer的效率稍高

StringBuffer是线程同步,安全。
StringBuilder是线程不同步,不安全。

单线程操作,使用StringBuilder效率高。
多线程操作,使用StringBuffer 安全。

以后开发,建议使用StringBuilder

升级三个因素:
1,提高效率。
2,简化书写。
3,提高安全性。

基本数据类型对象包装类。

基本数据类型  基本数据类型对象包装类
byte-->Byte
short-->Short
int-->Integer
long-->Long
boolean-->Boolean
float-->Float
double-->Double
char-->Character

基本数据类型对象包装类的最常见作用,
就是用于基本数据类型和字符串类型之间做转换

1.基本数据类型转成字符串。

1.1基本数据类型+""
1.2基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
2.字符串转成基本数据类型。
2.1静态方法
xxx a = Xxx.parseXxx(String);
示例:
int a = Integer.parseInt("123");
double b = Double.parseDouble("12.23");
boolean b = Boolean.parseBoolean("true");
2.2非静态方法
Integer i = new Integer("123");
int num = i.intValue();

十进制转成其他进制。
static String toBinaryString(int i);
static String toHexString(int i );
static String toOctalString(int i);

其他进制转成十进制。
static int parseInt(string,radix);string是其他进制表现形式,radix是要转换的进制的基数

代码示例:

/**基本数据类型对象包装类*/class DataDemo {public static void main(String[] args) {//基本数据类型转换成字符串String ch = Character.toString('a');//将字符转换成对象String in = Integer.toString(34);//将int型数据转换成对象sop(ch);sop(in);//字符串类型转换成基本数据类型//静态方法int i = Integer.parseInt(in);//将字符串转换成int型数据//非静态方法Integer s = new Integer("23");//此字符串中只能是int型数据,否则会报NumberFormatExceptionint a = s.intValue();sop(i);sop(a);//十进制转换成二进制sop(Integer.toBinaryString(6));//其他进制转换成十进制sop(Integer.parseInt("110",2));//后面的基数是说明字符串中的值是哪种进制}public static void sop(Object obj){System.out.println(obj);}}

JDK1.5版本以后出现的新特性。

1.5版本之前将基本数据类型转换成字符串
特性一:自动装箱和拆箱
Integer x = new Integer(4);
1.5版本之后,可以这样定义
Integer x = 4;
之所以可以这样定义是因为,在定义这个对象的时候有一个自动装箱的过程。
自动装箱的过程相当于new Integer(4)
x = x+ 2;
在使用这个变量的时候,x 进行自动拆箱。变成了int类型。和2进行加法运算。
自动拆箱的过程相当于x.intValue() ,然后将结果赋值给x;
特性二:内存空间
Integer m = 128;
Integer n = 128;
sop("m==n:"+(m==n));
输出结果为false,m和n的值超过了byte的取值范围,将会开辟新的空间

Integer a = 127;
Integer b = 127;
sop("a==b:"+(a==b));
结果为true。因为a和b指向了同一个Integer对象。
因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间。




0 0
原创粉丝点击