黑马程序员技术交流社区

标题: 关于String类的总结,感觉总结的很详细,给大家分享一下 [打印本页]

作者: Brilliant—_Me    时间: 2013-8-22 21:50
标题: 关于String类的总结,感觉总结的很详细,给大家分享一下


String 这个类非常特殊,下面是它的一些特点:
1、Sring类是final类型的,不能被继承。
2、例如:String str = "abc";//这样的语句生成的也是一个字符串对象,而这里却没有用new语句。
3、字符串String是常量,它们的对象被创建之后就是不能被改变的。
例如:
String s1 = "hello";
String s2 = " world";
String s3 = s1 + s2;
s1和s2对象生成之后就不能再被修改了,修改之后的字符串实际上都是生成了一个新的对象。s3也是生成的一个新的字符串对象,是把s1和s2里面的内容拼接到一块。
4、字符串支持使用“+”来连接多个字符串。实际上是生成了一个新的字符串对象,而不是在原有字符串的基础上追加内容。
5、java会维护着一个字符串池(String Pool,字符串池位于内存的栈中)【下面讲解String两种赋值方式的实际执行流程】:
a)、String s = “aaa”;(采用字面值方式赋值)
1) 查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool中创建一个“aaa”对象,然后将String  Pool中的这个“aaa”对象的地址返回来,赋给引用变量s,这样s会指向String Pool中的这个“aaa”字符串对象
2) 如果存在,则不创建任何对象,直接将String Pool中的这个“aaa”对象地址返回来,赋给s引用。
b)、String s = new String(“aaa”); (采用new方式创建对象)
1)  首先在String Pool中查找有没有“aaa”这个字符串对象,如果有,则不在Strng Pool中再去创建“aaa”这个对象了,直接在堆中(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给s引用,导致s指向了堆中创建的这个“aaa”字符串对象。
2)  如果没有,则首先在String Pool中创建一个“aaa“对象,然后再在堆中(heap)创建一个”aaa“对象,然后将堆中的这个”aaa“对象的地址返回来,赋给s 引用,导致s指向了堆中所创建的这个”aaa“对象。


重点:栈和堆是计算机内存的两大主要区域,java中所有new出来的对象都位于堆中。


熟悉完以上知识之后重点查看以下代码,以及打印出来的每个结果:
Java代码  





下面这些打印结果在找工作之前需要记忆
Java代码  




作者: xinchenglong    时间: 2013-8-22 22:12
我分享一下string类的常用用法,希望大家,互相交流,共同进步:
Java中String类的常用方法:

public char charAt(int index)
返回字符串中第index个字符;
public int length()
返回字符串的长度;
public int indexOf(String str)
返回字符串中第一次出现str的位置;
public int indexOf(String str,int fromIndex)
返回字符串从fromIndex开始第一次出现str的位置;
public boolean equalsIgnoreCase(String another)
比较字符串与another是否一样(忽略大小写);
public String replace(char oldchar,char newChar)
在字符串中用newChar字符替换oldChar字符
public boolean startsWith(String prefix)
判断字符串是否以prefix字符串开头;
public boolean endsWith(String suffix)
判断一个字符串是否以suffix字符串结尾;
public String toUpperCase()
返回一个字符串为该字符串的大写形式;
public String toLowerCase()
返回一个字符串为该字符串的小写形式
public String substring(int beginIndex)
返回该字符串从beginIndex开始到结尾的子字符串;
public String substring(int beginIndex,int endIndex)
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
public String trim()
返回该字符串去掉开头和结尾空格后的字符串
public String[] split(String regex)
将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2