栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

String类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

String类

今天是String 类

  • String类是fina类  不可被继承  不可被重写
  • String的成员变量是 private final char value[];----->也就是String 字符串不可变的原因
  • 来看一下几个构造方法
    • public String()  //1  ---  无参构造函数
    • public String(String original)  //2 --- 把传进来的参数的值赋给实例对象
    • public String(char value[])  //3 把传入值初始化拷贝给实例对象
    • public String(int[] codePoints, int offset, int count)  //4 这个特殊一点 其实和上面一样  传入Ascll码的数字  也就相当于char 数组了
  • 再说一下字符串常量池 -------  字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用
    //字符串常量池
            String s3 = "abc";    //在常量池中创建
            String s4 = "abc";    //常量池中已经存在 返回对象引用
            System.out.println(s3 == s4); //true   
            String s5 = new String("abc");  //这里是在堆中开辟了新的空间
            System.out.println(s3 == s5); //false

  • 接下来说一下字符串一些常用的方法
  • public String substring(int beginIndex, int endIndex)//字符串的截取 // 左闭右开
    //字符串的截取 // 左闭右开
            String s6 = "abcdef";
            System.out.println(s6.substring(1,5)); //bcde
  • public int compareTo(String anotherString)//字符串的比较
    //字符串的比较   前面的减去后面的
            // 大于 0  前面的比后面大
            //同样的还有compareToIgnoreCase  忽略大小写来比较
            String s7 = "a";
            String s8 = "b";
            System.out.println(s7.compareTo(s8));  //-1    就是a减去b的Ascll码
  • public String concat(String str)//字符串拼接(配图中有原理解释)
     //通过调用Arrays.copyOf() 复制一个新的字符串  
    //再通过getChars() 把需要拼接的字符串嫁接到复制结束的字符串上面
            String s9 = "abc";
            String s10 = "abc";
            s9.concat(s10);
  • public int indexOf(String str)
    public int indexOf(int ch)
    //单个字符的查找可传入单个字符  也可以传入该字符的Ascll码  也可以传入字符串 最后返回其所在位置
  • //字符串单个字符的查找   可用传入字符和ascll码
            String s11 = "zxcvbn";
            System.out.println(s11.indexOf("x")); //1
            System.out.println(s11.indexOf(98)); //4
  • String replace(CharSequence target, CharSequence replacement)
    //字符串中字符的替换 如果想传入匹配规则替换  正则表达式 就可以调佣这个
    public String replaceAll(String regex, String replacement)
    //字符串中字符的替换
            String s12 = "woaizhongguo";
            System.out.println(s12.replaceFirst("o", "a"));

  • 再看一下其他的方法
    public boolean regionMatches(int toffset, String other, int ooffset,int len)
    区域匹配的方法 见示例
    
    //其他方法
            //regionMatches()
            String s13 = "asdfgh";
            String s14 = "bsdujh";
            //第一个参数  调用的字符串的起始位置
            //第二个参数   是被调用的字符串
            //第三个参数  是被调用的字符串的起始位置
            //第四个参数  是匹配的长度
            System.out.println(s13.regionMatches(1, s14, 1, 2));
  • 最后我们看一下public boolean contains(CharSequence s) 包含方法
    它的底层实现是上面讲的index方法区比较的
    //底层是调用了index()方法
            boolean asd = s13.contains("asd");
            System.out.println(asd);  //true
  • 还有其他的一些对于字符串的变化操作  基于String 的不可变性  我们对于不同的场景使用StrigBuilder  StringBuffer 两个类来进行操作   ----> 详情 请看我本专栏的下一篇博客

 
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号