ITPub博客

首页 > 大数据 > 数据挖掘 > 好程序员大数据学习路线分享大数据之字符串

好程序员大数据学习路线分享大数据之字符串

原创 数据挖掘 作者:好程序员IT 时间:2019-09-25 16:05:17 0 删除 编辑

  好程序员大数据学习路线分享大数据之 字符串 , 不可变字符串:----String. 字符串本身不能发生改变 , 与指向字符串的引用无关 。

        String s1 = "1000phone";

     可变字符串 :----StringBuilder/StringBuffer. 字符串本身可以发生变化 , 与指向可变字符串的引用无关

        StringBuffer sBuffer = new StringBuffer("1000phone");

不可变字符串本身是一个常量,保存在常量区,是存储在了堆区中一块儿特殊的区域里。

 

字符串常量的特点:同一个字符串常量在常量区只允许存储一个。

 

    String s = "1000phone";// 不可变字符串

      当执行 s 的时候 , 会到常量区找叫 1000phone 的字符串 , 如果有直接让 s 保存他的地址 , 如果没有 , 会在常量区开辟一块儿空间存 1000phone.

    

    String s3 = new String("1000phone");

      执行 s3 时 , 由于进行了 new, 一定会现在堆中开辟一块儿空间 , 而 1000phone 是作为参数传给了对象 . 保存在了对象的一个 String

使用equals 进行 String 的比较

 

2. 转换 :

将字符数组转换成字符串

     char[] arr = {'p','h','o','n','e'};

     String string1 = new String(arr);  //string1 = phone

 

将字符串转换成字符数组

    char[] arr1 = string.toCharArray();

    System.out.println(arr1);

 

将字节数组转成字符串

        //String(byte[] bytes) 

        //String(byte[] bytes, int offset, int length)

        //String(byte[] bytes, String charsetName)// 使用指定的编码将字节数组转换成字符成

        byte[] bytes = {97,98,99,100};

        String string3 = new String(bytes);

        System.out.println(string3); //abcd

 

将字符串转成字节数组

        //byte[] getBytes() 

        byte[] bytes1 = string3.getBytes();

 

将基本数据类型转换成字符串

        //String.valueOf()

        String string4 = String.valueOf(true);

        System.out.println(string4);//true

 

子串:

    // 包含起始位置,不包含结束位置,到结束位置的前一位

    String substring(int beginIndex, int endIndex);

 

大小写转换

        String toLowerCase();  //  转成小写

        String toUpperCase();  //  转成大写

 

按字典顺序比较两个字符串

     字典顺序 : 按照 ASCII 表比较当前的两个字符 ,ASCII 码大的认为是大的字符

     规则 : 从左边第一个字符开始比较

     如果当前的字符不相同 , 直接认为 ASCII 大的字符串是大字符串 , 后面的字符停止比较

     当前字符比较的具体规则 : 使用前面的字符 - 后面的字符 , 返回差值 . 如果是负数 , 说明前面的字符串小于后面的 . 反之前面的大 .

     如果当前的字符相同 , 再去比较第二个字符 , 依次往后推 , 如果比到最后都相同 , 则认为两个字符串相等 , 差值返回 0.

    

        "1000PHone".compareTo("1000PHone");//0

        "1000AHone".compareTo("1000BHone");//-1

        "100000".compareTo("100");//-3

 

可变字符串:

  字符串缓冲区 .StringBuffer/StringBuilder

  区别 :

 StringBuffer: 出现在 jdk1.0, 是线程安全的 , 考虑了线程安全问题

 StringBuilder: 出现在 jdk1.5, 是线程不安全的 , 没有考虑线程安全问题

注意: 在不考虑线程安全问题时 , 尽量使用 StringBuilder, 因为速度快 , 效率高

 

使用:

    StringBuffer sBuffer = new StringBuffer();

    //1. 存储:

    //StringBuffer append(boolean b)    从最后插入

    sBuffer.append("abcd"); //abcd

    

    //StringBuffer insert(int offset, boolean b)    从指定位置插入

    sBuffer.insert(4, 123);

    System.out.println(sBuffer);//abcd123

    

    //2. 删除:

    //StringBuffer delete(int start, int end)    删除一部分字符串

    //StringBuffer deleteCharAt(int index)   删除一个字符

    System.out.println(sBuffer.deleteCharAt(4));//abcd23

    System.out.println(sBuffer.delete(2,4)); //ab23

    

    //3. 修改:

    //StringBuffer replace(int start, int end, String str)   替换指定的子字符串

    //void setCharAt(int index, char ch)  修改一个字符

    sBuffer.replace(1, 3, "ab") ; //aab3

    

    //4. 获取:

    //char charAt(int index) 

    System.out.println(sBuffer.charAt(0)); //a

 

    // 返回指定子字符串的下标    从左到右

    //int indexOf(String str)

    System.out.println(sBuffer.indexOf("ab"));//1

 

    // 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

    System.out.println(sBuffer.indexOf("ab",0)); //1

    System.out.println(sBuffer.indexOf("ab",2)); //-1

    

    //int lastIndexOf(String str) 

    // 返回指定子字符串 ( 从右边开始计数 ) 在此字符串第一次出现时的索引

    System.out.println(sBuffer.indexOf("ba")); //-1

    System.out.println(sBuffer.indexOf("ab")); //1

 

    //int lastIndexOf(String str, int fromIndex) 

    / 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

    System.out.println(sBuffer.indexOf("ab",1)); //1

 

    //5. 反转:

    //StringBuffer reverse()

System.out.println(sBuffer.reverse()); //3baa

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2658216/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410779