当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java入门

Java编程那些事儿75——String类使用

    Java编程那些事儿系列文章(全集目录)

    9.5.3 String和StringBuffer

    String和StringBuffer类都是代表字符串,也就是任意多个字符组成的序列。程序需要存储的大量文字一般都使用字符串进行代表。在这两个类中,包含了大部分关于字符串操作的方法,在实际操作字符串时,可以首先查阅这两个类中的方法。

    String和StringBuffer虽然都代表字符串,但是由于两个类内部实现的区别,所以一般把String看成不可变字符串,而把StringBuffer看成可变字符串,对于String的每次改变(例如字符串连接等)都会生成一个新的字符串,比较浪费内存,而StringBuffer每次都改变自身,不生成新的对象,比较节约内存。

    下面就详细介绍一下String和StringBuffer的实际使用。

    9.5.3.1 String类

    1、String对象的初始化

    由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:

String s = “abc”;

s = “Java 语言 ”;

    其实按照面向对象的标准语法,其格式应该为:

String s = new String(“abc”);
s = new String(“Java语言”);

    只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String s = new String(“abc”);实际上创建了两个String对象,一个是“abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。

    其它的构造方法的参数,可以参看String类的API文档。

    2、字符串的常见操作

    a、charAt方法

    该方法的作用是按照索引值(规定字符串中第一个字符的索引值是0,第二个字符的索引值是1,依次类推),获得字符串中的指定字符。例如:

String s = “abc”;
char c = s.chatAt(1);

    则变量c的值是‘b’。

    b、compareTo方法

    该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0.

    例如:

    String s = “abc”;

    String s1 = “abd”;

    int value = s.compareTo(s1);

    则value的值是小于0的值,即-1.

    在String类中还存在一个类似的方法compareToIgnoreCase,这个方法是忽略字符的大小写进行比较,比较的规则和compareTo一样。例如:

    String s = “aBc”;

    String s1 = “ABC”;

    int value = s. compareToIgnoreCase (s1);

    则value的值是0,即两个字符串相等。

    c、concat方法

    该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。例如:

    String s = “abc”;

    String s1 = “def”;

    String s2 = s.concat(s1);

    则连接以后生成的新字符串s2的值是“abcdef”,而字符串s和s1的值不发生改变。如果需要连接多个字符串,可以使用如下方法:

    String s = “abc”;

    String s1 = “def”;

    String s2 = “1234”;

    String s3 = s.concat(s1)。concat(s2);

    则生成的新字符串s3的值为“abcdef1234”。

    其实在实际使用时,语法上提供了一种更简单的形式,就是使用“+”进行字符串的连接。例如:

String s = “abc” + “1234”;

    则字符串s的值是“abc1234”,这样书写更加简单直观。

    而且使用“+”进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。而且“+”匹配的顺序是从左向右,如果两边连接的内容都是基本数字类型则按照加法运算,如果参与连接的内容有一个是字符串才按照字符串进行连接。

    例如:

    int a = 10;

    String s = “123” + a + 5;

    则连接以后字符串s的值是“123105”,计算的过程为首先连接字符串“123”和变量a的值,生成字符串“12310”,然后使用该字符串再和数字5进行连接生成最终的结果。

    而如下代码:

    int a = 10;

    String s = a + 5 + “123”;

    则连接以后字符串s的值是“15123”,计算的过程为首先计算a和数字5,由于都是数字型则进行加法运算或者数字值15,然后再使用数字值15和字符串“123”进行连接获得最终的结果。

    而下面的连接代码是错误的:

    int a = 12;

    String s = a + 5 + ‘s’;

    因为参与连接的没有一个字符串,则计算出来的结果是数字值,在赋值时无法将一个数字值赋值给字符串s.

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接