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

Java基础——字符串类String

2017-02-24 21:17 746 查看
字符串是由字符构成的一个序列。在很多语言中,字符串都被当作字符数组来处理,但是在Java中,字符串是一个对象。String类中有11个构造方法以及40多个处理字符串的方法。所以String类不仅在程序设计中非常有用,也是一个学习类和对象的很好的例子。

构造一个字符串

String 字符串名称 = new String(字符串的内容);

Java将字符串“直接量(指的是:字符串的内容)“ 看作String对象。所以,下面的语句也是合法的:

String 字符串的名称 = “字符串的内容”;

还可以用字符数组创建一个字符串。例如: 下面创建一个字符 串“Java”

char[] 字符串名称 = {字符串的内容}; 这里是{’j’,’a’,’v’,’a’}

(p.s:我总是将String和char两个类型搞混,char类其实是字符类型)

我们通过构造字符串这个例子了解其中的差别:

String message = new String("Java");
char[] message = {'j','a','v','a'};


字符串的比较

说到字符串的比较,相信刚开始学习Java的我们都会最先尝试”==“这个操作符。事实上,这个操作符只能检测两个字符串是否指向同一个对象,但是并不会告诉你他的对象是否相同。

此时我们需要尝试下equals方法。这个就是我们所需要的方法。这个方法返回的是布尔型变量”true”和”false”。

还有一个compareTo方法,这个方法也具备equals的功能:判断两个字符串是否相等,但是该方法返回值是0;若两个字符串不相等,如s1为“abc”,s2为“abg”, s1.compareTo(s2)返回的是-4,这个-4是根据字符在同一码的顺序相减得出来的。

String类中还有其他的比较字符串的方法。如:忽略大小写、是否有某些特定的前缀等等。这些就需要大家查下资料,不一一列出了。

字符串的长度、字符以及组合字符串

获取字符串的长度:
s1.length();
p.s:获取数组a的元素个数时就要使用
a.length


获取单个字符:
s1.charAt();
当然,下标也是从0开始的。下面的例子也是允许的:

"welcome".charAt(0)//这个的返回值就是"w";


我们在使用一个字符串是往往是知道它的直接量值的,为了方便起见,Java允许在不创建变量的情况下,使用字符串的直接量应用字符串。

下面是连接两个字符串:

String s3 = s1.concat(s2);
String s3 = s1 + s2;//这两个方法是等价的。


如果一个是数字,一个是字符串,用’+’连接时则先将数字转化为字符后相连。注意:若要使用加号实现连接的功能,则至少要有一个操作数必须为字符串。

获取子串

substring(开始的下标);//返回这个
4000
字符串中从指定的下标开始到字符串末尾的子串;
substring(开始的下标,结束的下标);//返回这个字符串从开始小标到结束下标的子串。要注意的是:结束下标处的字符不是子串的一部分!

String message = "Welcome to Java".substring(0,11) + "HTML";
//这个message的内容变为"Welcome to HTML"

//如果开始的下标和结束的下标相同的话,返回的会是一个长度为0的空字符串。如果 开始下标“小于”结束下标则会出现运行错误。


获取字符串中的某个字符或者某个子串

indexof(ch: char):int 返回字符串中第一次出现ch字符的下标,如果不匹配返回-1;

indexof(ch: char,fromIndex: int):int 返回字符串中fromIndex下标后第一次出现ch字符的下标,如果不匹配返回-1;

indexof(s:String):int 返回字符串中第一次出现s字符串的下标,如果不匹配返回-1;

indexof(s:String,fromIndex: int):int 返回字符串中fromIndex下标后第一次出现s字符串的下标,如果不匹配返回-1;

lastIndexof(ch: char):int  返回字符串中最后一次出现ch字符的下标,如果不匹配返回-1;

lastIndexof(ch: char,fromIndex: int):int 返回字符串中fromIndex下标后最后一次出现ch字符的下标,如果不匹配返回-1;

lastIndexof(s:String):int 返回字符串中最后一次出现s字符串的下标,如果不匹配返回-1;

lastIndexof(s:String,fromIndex: int):int int 返回字符串中fromIndex下标后最后一次出现s字符串的下标,如果不匹配返回-1;


字符串的转换、替换与分割

toLowerCase():String 返回将所有字符都转化为小写之后的新字符串;

toUpperCase():String 返回将所有字符都转化为大写之后的新字符串;

trim():String 返回去掉两端的空白字符之后的新字符串;

replace(旧字符,新字符):String 返回一个新字符替换这个字符串中所有和他匹配的字符的新字符串;

replaceFirst(旧字符串,新字符串):String 这个只会将第一个与之匹配的字符串替换,然后返回之后的新字符串;

replaceAll(旧字符串,新字符串):String 这个将所有的旧的子串替换为新子串然后返回之后的新字符串;

split(String类型界定符):String 返回界定符分割的字符串所构成的一个字符串数组,注意:这个是字符串数组。分割的这个方法很有意思,大家可以去实践下。


字符串与数组之间的转换

字符串不是数组,但是字符串可以转换为数组,反之亦然。为了将字符串转换为一个字符数组,可以使用toCharArray方法,而将数字转换为字符串可以使用valueOf方法,例如:

char[] array = "Java".toCharArray();//字符串转换为字符数组;

String str = new String (new char[]{'J','a','v','a'});//用字符数组构造一个字符串;
String str = String.valueOf(new char[]{'J','a','v','a'});//用valueOf方法将字符数组转换为字符串;


将字符和数值转换成字符串

使用静态的valueOf方法能够将字符数组转化为字符串。可以使用valueOf方法的几个重载版本将字符和数值转换为字符串,这些重载方法的参数类型可以为char , double , long , int 和 float类型。

String str = String.valueOf(5.44);//返回值是由字符'5','.','4','4'组成的字符串;
//其它类型的参数也是同样的使用方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: