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

Java基础13-字符串类

2012-04-09 23:05 337 查看
<--

注意:

String在方法操作后不会改变自身,不同于StringBuilder!!!

-->


一.字符串的存储

* 1.字符串缓冲区

字符串是常量, 不能被修改, 所以可以共享, 多个引用指向相同的字符串常量时, 其实引用的是同一个对象, 这个对象在缓冲区中

示例1:

String s1 = "abc";

String s2 = "abc";

System.out.println(s1 == s2);

结果为: true

原理是: 第一个字符串"abc"创建后,存储在了字符串常量池中,所以第二个可以直接使用该字符串

这段代码总共创建了几个字符串对象: 1个

示例2:

String s1 = "abc";

String s2 = new String("abc");

System.out.println(s1 == s2);

结果为: false

原理是: 第一个字符串"abc"创建后,存储在了字符串常量池中,而第二个先创建对象,然后再指向了已存在的"abc".

这段代码总共创建了几个字符串对象: 2个

* 2.字符串串联

示例1:

String s1 = "abc";

String s2 = "a";

String s3 = "bc";

String s4 = s2 + s3;

System.out.println(s1 == s4);

结果为: false

原理是: 字符串串联使用的是字符串缓冲区的append()方法,使用new重新创建了字符串,所以不相等

示例2:

String s1 = "abc";

String s2 = "a" + "bc";

结果为: true

原理是: 字符串常量相加,编译时就会直接相加,等价于String s2="abc",而"abc"已经在字符串常量池里存在了

3.字符串类构造函数

使用平台默认码表, 将字节数组转为字符串: new String(byte[] b)

使用指定码表, 将字节数组转为字符串: new String(byte[] b, String s)

使用指定码表, 将字节数组中的一部分数据转为字符串: new String(byte[] b,int offset,int len,String s)

使用字符数组创建字符串: new String(char[] c)

*** 4.字符串常用方法

查找指定位置上的字符: charAt(int index)

查找指定字符第一次出现的位置: indexOf(char c)

查找指定字符最后一次出现的位置: lastIndexOf(char c)

替换字符串: replace(String old, String new)

截取字符串的子串: substring(int beginindex)/substring(int beginindex, int endindex)

分割字符串: split(String s)

判断是否包含一个字符串: contains(String s)

按字典顺序比较两个字符串: compareTo(String s)

获取长度: length()

去掉前后空白: trim()

5.StringBuffer和StringBuilder的区别

StringBuffer: 线程安全

StringBuilder: 线程不安全

6.写出下面代码的运行结果

public class Foo {

public static void main(String[] args) {

String strValue = "ABCDEFG";

strValue.substring(3);

strValue.concat("123");

System.out.println(strValue);

String value = new String ("ABCDEFG");

System.out.println(strValue == value);

}

}

结果:

ABCDEFG

false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: