黑马程序员技术交流社区

标题: String和StringBuffer [打印本页]

作者: ice24    时间: 2015-6-24 12:16
标题: String和StringBuffer
String类中存储的字符串常量,不是存储在堆空间中,而是存储在方法区下的常量池中;
在开发中,如果要对字符串数据进行频繁的修改,建议使用字符串缓冲区对象;
小结:
String类是用来描述字符串常量。存储在String类中的字符串不能直接修改。
(如果修改了就相当于又重新创建了一个字符串常量对象,重新被String引用)
小结:
indexOf和lastIndexOf的区别:
indexOf是返回匹配的字符或子字符串第一次出现的角标,从前向后匹配
lastIndexOf是返回匹配的字符或子字符串最后一次出现的角标,从后向前匹配

equals和equalsIgnoreCase的区别:
equals在比较字符串内容时区分大小写字母
equalsIgnoreCase比较时不区分大小写字母
String类中的isEmpty方法还可以使用:length==0代替 或 equals(“”)代替

String类中方法可以划分为:
  判断方法:
equals :判断两个字符串是否相等(比较字符串的内容),在比较字符串区分大小写
equalsIngnoreCase:判断两个字符串是否相等。在比较字符串时不区分大小写(忽略大小定)
startsWith:判断字符串是否以什么字符串开头
endsWith:判断字符串是否以什么字符串结尾
isEmpty:判断字符串是否为空(不是空对象,是空字符串)。
可以用length()==0或equals(“”)代替
contains:判断当前字符串中是否含某个字符或字符串
compareTo:比较两个字符串大小。返回值:0、正数、负数

获取方法:
length:获取字符串的长度
charAt:获取指定位置上的字符
indexOf:从前向后获取指定字符或子字符串在字符串中的第一次出现位置
lastIndexOf:从后向前获取指定字符或子字符串在字符串中的第一次出现位置
substring:获取指定位置的子字符串

转换方法:
  getBytes:把字符串转换为字节数组
  toCharArray:把字符串转换为字符数组
  基本数据类型转换为字符串: String类中的静态方法valueOf
                           最简单的转换字符串方式:基本数据+””
  把字节数组转换为字符串:String构造方法
  把字符数组转换为字符串:String构造方法  或 String.valueOf()
  toLowerCase:把字符串中的字母转换为小写字母
  torUpperCase:把字符串中的字母转换为大写字母

切割方法:
  split:按照指定的字符串进行切割。返回值为:字符串数组

其它方法:
  trim:去除字符串两端的空格  例:“   N  BA   “    结果为:” N  BA”
  replace:按照指定的字符或子字符串对当前字符串的某个字符或子字符串进行替换
          例: “cba”.replace(‘c’,’N’)  结果:“Nba”
               特殊的应用:可以作为删除使用     “abc”.replace(“b”,””);  结果:“ac”

StringBuffer的特点:
属于字符串缓冲区。对象内部维护了一个可以存储字符的可变数组
可以对存储在StringBuffer中的字符串进行修改
任何类型的数据只要存储到StringBuffer中全部按字符存储

StringBuffer中的setCharAt()和replace方法的区别:
都可以替换StringBuffer中的字符数据。
setCharAt方法只能替换一个字符,replace除了可以替换一个字符外,还可以替换字符串(replace还可以作为删除功能存在)

Integer
(1)为了让基本类型的数据进行更多的操作,Java就为每种基本类型提供了对应的包装类类型
                byte                 Byte
                short                Short
                int                Integer
                long                Long
                float                Float
                double                Double
                char                Character
                boolean                Boolean
(2)Integer的构造方法
                A:Integer i = new Integer(100);
                B:Integer i = new Integer("100");
                        注意:这里的字符串必须是由数字字符组成
        (3)String和int的相互转换
                A:String -- int
                        Integer.parseInt("100");
                B:int -- String
                        String.valueOf(100);
       
        (4)JDK5的新特性
                自动装箱        基本类型--引用类型
                自动拆箱        引用类型--基本类型

StringBuffer中常用的方法:
append(value)  把vaule值添加到StringBuffer容器中
insert(index,value) 在指定的位置(角标)上插入新的数据,之前存在的数据就会向后移动(不会覆盖原有的数据)
replace(start,end,value)  替换指定位置(有开始角标,有结束角标)上的字符串
delete(start,end)  移除指定位置(包含头不包含尾)上的字符
deleteCharAt(index)  移除指定位置上的字符(单一字符)
length();    获取字符串长度
capacity();  获取StringBuffer的容量
toString();  转换为String字符串
reverse();   反转功能
substring()  截取功能(注意这个返回值)               
               
               


StringBuffer和StringBuilder的区别:
StringBuffer属于线程安全的缓冲区对象,效率比较低(因为需要判断线程是否同步,所以效率低)。
StringBuilder属于线程不安全的缓冲区对象,效率比较高(不需要考虑线程的问题,所以效率高)
在开发中,如果对线程操作有要求时,就使用StringBuffer;对线程没有任何要求时,就使用StringBuilder







作者: Happe_Sun    时间: 2015-6-24 13:27
学习学习
作者: 有艺术的刺客    时间: 2015-6-24 13:36
先看看,支持一下
作者: 爱李萝卜    时间: 2015-6-24 13:58
总结,复习
作者: 王冲6060    时间: 2015-6-24 18:49
感谢分享
作者: 腹黑生姜    时间: 2015-6-24 21:15
很棒的!
作者: candy_xue    时间: 2015-6-24 21:41
刚好学到这里 但是没有像你一样好好总结  没那么清晰 你总结的真好
作者: 风随心动    时间: 2015-6-24 21:41
总结的很全
作者: 繁华落幕    时间: 2015-6-24 21:52
复习一下   感觉不错   谢谢
作者: a1224577182    时间: 2015-6-24 22:27
总结的不错
作者: D.reamJA    时间: 2015-6-24 22:32
好贴,String 方法我总是记得很混乱,收藏~
作者: 走在这里    时间: 2015-6-24 22:52
等我学过了我要过来看看好好整理思路




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