• Java String类和StringBuffer类


      1、String类

      用于字符串操作,本质是字符数组char[ ]。

      String对象的值是不可变的,即当你修改一个String对象的类容,JVM不会改变原来的对象,而是生成一个新String对象。

     

      2、构造(new)字符串

      String类的构造函数有5个,可以通过字节数组、字符数组构造对象,也可以通过String对象(即复制一个String)来创建新的String对象,还可以构造空的字符串。

     

      3、不可变字符串

    /*串池技术*/
    String name="java course";

      这种方式使用了串池(String Pool)技术,串池是一段字符串的内存缓冲区。

      如上创建字符串对象时,JVM会检查name在串池中是否存在内容相同的字符串对象,若不存在,则在池中创建一个字符串name,否则会把name指向已经存在的对象。(这样貌似很高效)

     

      4、字符串长度——String.length()方法,返回字符串的个数。(一个汉字也是一个字符)

      5、两个字符串比较——依次比较字符编码

    /*compareTo(String s)*/
    /*大于s,返回大于0的值;小于,返回小于0的值;相等,返回0。*/
    String s1="abc";
    String s2="abd";
    int result=s1.compareTo(s2);    //-1
    
    /*compareToIgnoreCase()忽略大小写*/
    String s3="aBc";
    String s4="ABC";
    result=s3.compareToIgnoreCase(s4);    //0

      

      6、equals(),判断两个String对象内容是否相同,返回true或false

      equals()在String中被重写,而“==”比较的是两个对象在内存中的地址是否一样。

      忽略大小写:equalsIgnoreCase()

     

      7、子串查找

      indexOf(),返回子串第一次出现的位置;

      lastIndexOf(),从字符串末尾向前找,返回第一次出现的位置;

      8、截取子串

      substring(int start,int end),不包含索引值为end的字符

     

      9、分割字符串  

    public String[] split(String regex);
    
    /*limit是分割后返回的字符串数组的元素个数*/
    public String[] split(String regex,int limit);

      “|”、“*”、“+”作为分隔符时,要加上转义字符“\”;“”就要写成“\\”;

      多个分隔符用“|”连接,也可以在正则表达式中添加空格。

     

      10、int、String转换

      静态方法:valueOf(int n);

      String对象转换为数字,使用包装类Integer的静态方法int parseInt(String s),只不过必须传入数字字符串。

     

      11、包装类  

      Java为每个基本数据类型定义了包装类,共8种,位于java.lang下。它们的使用方式一致,实现基本数据类型与包装类的相互转换。

      为什么需要包装类?因为包装类型是一个类,有属性有方法,所以就比基本数据类型功能强大。

      自动装箱:Autoboxing,将基本数据类型自动转换为包装类。例如可以将整型变量直接复制给Integer类型的变量

      自动拆箱:Unboxing,将包装类自动转换为基本数据类型。例如:

    /*加法操作中,Integer先自动转换为int,完成运算,然后再次转换为Integer*/
    Integer b;
    Integer y=b+2;

     

      12、增强的switch语句

      Java 7后可以在switch语句的测试条件表达式中使用String对象,其实是调用了equals()方法。

     

      13、StringBuffer

      也用来代表字符串,StringBuffer在进行字符串处理时,不生成新的对象,在内存的使用上优于String类。

      所以在经常需要对一个字符串进行修改操作如插入、删除,使用StringBuffer更加高效。

      两者的很多方法相同,只是StringBuffer改变对象自身。

      StringBuffer的内部使用字符数组,当放入StringBuffer对象的字符长度超过初始化时设置的字符数组长度时,需要重新开辟长度增加两倍的字符数组,并把原来的字符数组内容复制到新字符数组中。

      所以设置合适的长度,对StringBuffer的性能影响很大。

      StringBuffer的主要方法偏重对字符串进行修改操作,这也是引入StringBuffer的原因!

     

      14、String和StringBuffer相互转换:

    String s="abc";
    StringBuffer sb1=new StringBuffer("123");
    
    StringBuffer sb2=new StringBuffer(s);
    String s1=sb1.toString();

     

     

      

     

  • 相关阅读:
    如何在百度网盘中批量添加好友,批量创建群组,导出群链接等
    批量对百度网盘好友及群组发文字消息及分享文件
    百度网盘禁止查看别人分享主页的资源收集解决办法
    C#调用windows API实现 smallpdf客户端程序进行批量压缩
    邓西百度网盘目录导出工具
    .net sqlite 内存溢出 问题的分析与解决。
    移动呼死你防护业务白名单批量导入工具
    如何拦截电话轰炸、短信轰炸
    以技术原理入手从根本上拦截屏蔽解决响一声电话呼死你炸你妹电话轰炸短信轰炸,远离电话短信骚扰
    邓西百度网盘批量分享工具
  • 原文地址:https://www.cnblogs.com/bigbigbigo/p/8420643.html
Copyright © 2020-2023  润新知