黑马程序员_字符串String

------- android培训java培训、期待与您交流!

 

简单定义一个字符串变量s1String s1 = "abc";

 

Stringjava.lang包中的一个类,所以s1是一个类类型变量,"abc"是一个对象,s1指向该对象。字符串的最大特点是,一旦初始化就不可以被改变。如二次赋值,s1 = "kk";这里并不是字符串"abc"变了,而是s1的指向变了。

这里简单说一下常量池的概念,在Java的程序编译和运行过程中,会产生很多长期不变的常量,如类,方法和参数的名称及其类型,以及程序中定义的一些常量,常量池可以理解为一个特殊的内存空间,专门用来存储这些常量。字符串对象因为数量有限,而且使用频率很高,如果每次使用都在内存中创建对象,会造成大量的内存浪费,所以,也会放在常量池当中。

 

这里定义两个字符串:

String s1 = "abc";

String s2 = new String("abc");

s1s2有什么区别?

s1在内存中只有一个对象。

s2在内存中有两个对象。

 

String类适用于描述字符串事物,那么他就提供了多个方法对字符串进行操作。这里对常见的操作进行一下总结:

 

1,获取。

   字符串中包含的字符数,也就是字符串的长度。

    int length();   获取长度。

 

   根据位置获取位置上的某个字符。

    char charAt(int index);

 

   根据字符获取该字符在字符串中的位置。

    int indexOf(int ch);

   返回的是ch在字符串中第一次出现的位置。

 

    int indexOf(int ch,int fromIndex);

   fromIndex指定位置开始,获取ch在字符串中的出现的位置。

 

    lastIndexOf();

   反向索引。  

 

2,判断。

 

字符串中是否包含某一个字串。

boolean contains(str)

特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不存在,所以,也可以用于对指定的字符串判断是否包含。

而且该方法既可以判断,又可以获取出现的位置。

 

字符串中是否有内容。

boolean isEmpty():原理就是判断长度是否为0

 

字符串是否是以指定内容开头。

boolean startsWith(str);

 

字符串是否是以指定内容结尾。

boolean endsWith(str);

 

字符串内容是否相同,重写了Object类中的equals方法。

boolean equals(str);

 

判断内容是否相同,并忽略大小写。

boolean equalsIgnoreCase();

 

3,转换。

 

将字符数组转成字符串。

构造函数:String(char[]);

          String(char[],offset,count):将字符数组中的一部分转换成字符串。

静态方法:static String copyValueOf(char[]);

          static String copyValueOf(char[] data,int offset,int count);

          static String valueOf(char[]);

 

将字符串转换成字符数组。**

char[] toCharArray();

 

将字节数组转成字符串。

String(byte[]);

String(byte[],offset,count):将字节数组中的一部分转成字符串。

 

将字符串转成字节数组。

byte[] getByte();

 

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

static String valueOf(int);

static String valueOf(double);

 

3+"";//String.valueOf(3);

 

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

 

4,替换。

 

String replace(oldchar,newchar);

注意:如果要替换的字符不存在,返回的是原字符串。

 

5,切割。

 

String[] split(regex);

 

6,子串。获取字符串的一部分。

 

String substring(begin);//从指定位置开始到结尾。

String substring(begin,end);//包含头,不包含尾。

s.substring(2);可以改写成s.substring(2,s.length());

 

7,转换,去除空格,比较。

 

将字符串转成大写或者小写。

String toUpperCase();

String toLowerCase();

 

将字符串两端的多个空格去除。

String trim();

 

对两个字符串进行自然顺序的比较。

int compareTo(string);

 

StringBuffer

是字符串缓冲区。是一个容器。

 

特点:

1,长度是可变的。

2,可以操作多个数据类型。

3,最终通过toString()方法变成字符串。

 

常用操作:CURD(增删改查)

Create Update Read Delete

 

1,存储。

StringBuffer append();将指定数据作为参数添加到已有数据结尾处。

StringBuffer insert(index,数据);可以将数据插入到指定index位置。

 

2,删除。

StringBuffer delete(start,end);删除缓冲区中的数据,包含start,不包含end

StringBuffer deleteCharAt(index);删除指定位置的字符。

 

3,获取。

char charAt(int index);

int indexOf(String str);

int lastIndexOf(String str);

int length();

String substring(int start,int end);

 

4,修改。

StringBuffer replace(start,end,string);

void setCharAt(int index,char ch);

 

5,反转。

StringBuffer reverse();

 

6,将缓冲区中指定数据存储到指定的字符数组中。

void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);

 

JDK1.5版本之后出现了StringBuilder

StringBuffer是线程同步。

StringBuilder是线程不同步。

开发建议使用StringBuilder

 

 

 

---------------- android培训java培训、期待与您交流! ----------

详细请查看:http://edu.csdn.net/heima/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值