关于String与StringBuffer

String类的一些特点

  1:它是一个特殊类,一旦被初始化,内容就不可以被改变,一般有两种初始化的方式

  --| String s1 = “abc”;//abc存在字符串常量池中,它就是一个对象,以后有代码需要使用到abc的话,可以直接使用,不用在去开辟字符串abc的空间

  --| String s2 = new String(“abc”);//有了new关键字,需要在堆内存中开辟一个abc的空间,栈中的s2存储的是堆中abc的地址

    s1和s2的区别?  s1在内存中只有一个对象,s2在内存中有2个对象.

    

 1 public class StringDemo {
 2     public static void main(String[] args) {
 3         /*
 4          * String特点
 5          * 字符串对象一旦被初始化,就不会被改变
 6          */
 7         String s1 = "abc";  //"abc"存在在字符串常量池中,没就创建,有就直接用
 8         String s2 = "abc";
 9         System.out.println(s1 == s2);    //true
10         String s3 = "nba";
11         String s4 = new String("nba");//在堆内存中开辟一个nba的空间
12         System.out.println(s3 == s4);//false, 比较的是地址,一个在常量池中,一个在堆内存中
13         System.out.println(s3.equals(s4));//在String中的equals(),复写了OBJ中的equals(),它比较的是内容
14
15     }
16 }

  String类中一些常用的方法

    1:获取

      int length();

      char charAt(int index);

      int indexOf(String str);  索引str出现的第一次的位置,假如str不存在的话,返回-1,它可以用于对指定的字符串来判断是否存在

      int indexOf(String str,int fromIndex);

      int lastIndexOf(String str);

    2:判断

      boolean contains(String str);

      boolean isEmpty();

      boolean endsWith(String str);

      boolean startsWith(String str);

      boolean equals(String str);  判断字符串的内容是否相同,大小写有区别

      boolean equalsIgnoreCase();   判断字符串的内容是否相同,这个是不区分大小写的

    3:转换

      3.1 将字符数组转成字符串。 
              构造函数:String(char[]) 
          String(char[],offset,count):将字符数组中的一部分转成字符串。

      静态方法: 
          static String copyValueOf(char[]); 
          static String copyValueOf(char[] data, int offset, int count);

          static String valueOf(char[]):

    4:替换

      String replace(String oldChar,String newChar);

    5:获取字符串的子串

      String subString(int beginIndex);  beginIndex是截取子串索引的开始位置,包括这个位置

      String subString(int beginIndex,int endIndex);获取2个索引值之间的子串,包头,不包尾巴

    6,转换,去除空格,比较。 
      将字符串转成大写或则小写。 
        String toUpperCase(); 
        String toLowerCase();

      将字符串两端的多个空格去除。 
        String trim();   这个方法在以后开发的时候,设计用户输入的密码和用户名的时候会有很大的作用

      对两个字符串进行自然顺序的比较。 
        int compareTo(string);

--------------------------------------------------------------------------------------------------------------------

StringBuffer

  StingBuffer是一个容器,是字符串缓冲区,特点:长度可以改变,可以字节操作多种数据类型,最终通过toSting()来变成字符串

    1,存储。 
        StringBuffer append():将指定数据作为参数添加到已有数据结尾处。 
        StringBuffer insert(index,数据):可以将数据插入到指定index位置。

    2,删除。 
        StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。 
        StringBuffer deleteCharAt(index):删除指定位置的字符。 
    
    3,获取。 
        char charAt(int index) 
        int indexOf(String str) 
        int lastIndexOf(String str) 
        int length() 
        String substring(int start, int end) 
  
    4,修改。 
        StringBuffer replace(start,end,string); 
        void setCharAt(int index, char ch) ;

    5,反转。 
        StringBuffer reverse(); 
    6, 将缓冲区中指定数据存储到指定字符数组中。 
        void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

    StringBuffer在开发是时候,使用的次数较多 .原因?

    String在使用的时候,我们在改变它的值的时候,会伴随这它的内存地址也会变化,对于StringBuffer,改变它的值,它所占用的内存地址是不会改变的

    从这一点上来看,StringBuffer的效率是高于String的。

时间: 2024-12-16 04:20:26

关于String与StringBuffer的相关文章

String、StringBuffer与StringBuilder之间区别

最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 String:字符串常

Java:String、StringBuffer和StringBuilder的区别

Java:String.StringBuffer和StringBuilder的区别 1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包含如下定义: [java] view plain copy /** The value is used for character storage. */ private final char value[]; /** The offset is the first index

String和StringBuffer

一.String和StringBuffer添加字符的效率PK String s="abc"; StringBuffer sb=new StringBuffer("abc"); s+="xyz"; sb.append("xyz"); +操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串.添加多个字符也就意味着要一次又一次的对字符串重新分配内存.使用StringBuffer类就避免了这

Java中的String、StringBuffer和StringBuilder

任何语言都离不了字符串的处理.Java中处理字符串的三个类String.StringBuffer和StringBuilder.这三个到底有什么区别呢? 他们三个都是实现了CharSequence接口.但实现过程不一样. 其实他们的使用方法都很简单,这里看下StringBuilder的用法. public class TestStringBuffer{ public static void main(String args[]){ StringBuffer str=new StringBuffer

String、StringBuffer与StringBuilder区别

关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是"字符创常量",也

java 笔记 String 和Stringbuffer

String 是一个类,而不是java中的基本数据类型. String s = "abc";  "abc"是一个对象,存放在常量池中.一旦被初始化就不能被更改了. s = "cde";  这里并没有改变字符串,而是使对象引用指向字符串cde: String s1 = new String("abc"); String s2 = "abc"; 这两者有什么不同,第一个有两个对象,一个是"abc&qu

string与stringbuffer的区别

最近在做项目到时候遇到这个问题,犯了致命的错误,提示javaVM内存溢出. 问题原因:使用string拼接字符串,导致的.此字符串的量很大. 区别:string是非变长的字符串,在每次拼接的时候相当于每次都生成一个新的string对象,所以如果是循环22次,会生成22个string对象,而我们只需要最后一个,这就对javaVM造成了很大的影响,导致内存溢出. stringbuffer是生成一次对象后,每次在这个对象上面追加内容,这样就很大的提高了性能. string与stringbuffer的转

String、StringBuffer、int的地址不同,equals和=的比较不同

今天做了一个简单的登录界面,用到了struts框架,属性模型获取用户登录信息 1.新建项目struts,新建login.jsp页面,在根目录的WEB-INF文件夹里新建black文件夹,新建welcome.jsp页面,用于登陆成功后跳转.注:WEB-INF文件夹不能直接访问 1 <body> 2 <form action="logincheck.action" method="post"> 3 账户:<input type="

String、StringBuffer与StringBuilder 复习回顾总结

1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是"字符创常量",也就是不可改变的对象.对于这句话的理解你可能会产生这样一个疑问  ,比如这段代码: 1 String s = "

java中String、StringBuffer与StringBuilder

昨天遇到一道编程题关于字符串中字符内容的替换,题目如下: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public class Solution { public String replaceSpace(StringBuffer str) { //添加代码 } } 于是想通过此题对java中字符串的定义与处理方式有所了解. 一.String java中没有内置的字符串类型,在标准jav