天天看点

Java String 类

怎么描述string的重要性呢?我想我无论怎么描述都没办法表达它的重要性,所以,认真学习string对于我们开发人员来说是非常重要的。

首先我们要明白,string类是用来操作和创建字符串的。比如说:

string str = “我是一个字符串”;

string str2 = new string(“我也是一个字符串”)

接着需要明白的也是最需要记住的,string不属于java内置数据类型,也就是不属于8种基本数据类型。string是一个对象,并且,string是一个非常特殊的现象,它有别的对象没有的一些特征。

Java String 类

对于上面两种创建字符串的方式我来具体的分析一下:

1、 对于string来说,有一个特殊的string pool,专门存储字符串数据。

2、 string str = “我是一个字符串”的创建过程:首先、java会去到string pool 寻找有没有一个值为“我是一个字符串”的东西,如果有,则返回该东西的位置给str对象,如果没有,则创建一个,并且把位置返回。

3、 对于string str2 = new string(“我也是一个字符串”)来说,java是先在堆内存中创建一个 “我也是一个字符串”的内存区域,并且把该区域的位置返回给str2,接着,还会再一次的去string pool里面检查是否有一个值为“我也是一个字符串”的东西,若没有,则创建一个。

由此可知:

1、我们现在可以知道的是,直接吧一个字符串赋值给一个string对象时,该字符串最多创建一次或者0次,为 new string(“…”)会创建1次或者是两次字符串。

2、变量的名称都是存储在栈里面的。

3、我们所持的变量(str str2)只是一个具体对象的内存地址,这个地址也可以叫做句柄。

需要做出补充的是:

1、 string类已经对object类的equals方法进行了覆盖

2、 在比较两个对象是否相等的时候,使用的用必须是equals方法,而不等使用“==”,我会在后续的写作中进行说明。

string常用方法

(1)length() 字符串的长度

  例:char chars[]={'a','b'.'c'};

    string s=new string(chars);

    int len=s.length();

(2)charat() 截取一个字符

  例:char ch;

    ch="abc".charat(1); 返回'b'

(3)getbytes()获取对应字节数组

(4)indexof()和lastindexof()

   indexof() 查找字符或者子串第一次出现的地方。

   lastindexof() 查找字符或者子串是后一次出现的地方。

(5)substring()  

  第二种是:string substring(int startindex,int endindex)

(6)concat() 连接两个字符串

(7)replace() 替换

  它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:

  string replace(char original,char replacement)

  例如:string s="hello".replace('l','w');

  第二种形式是用一个字符序列替换另一个字符序列,形式如下:

  string replace(charsequence original,charsequence replacement)

(8)trim() 去掉起始和结尾的空格

(9)valueof() 转换为字符串

(10)tolowercase() 转换为小写

(11)touppercase() 转换为大写

(12)startswith()和endswith()  

更多方法请参考string的api