final类,无子类。

类内定义了char数组value[],私有,不可修改。
String的长度,length()。
判空,isEmpty()。
索引index处的字符,charAt(index)。
字符(ch)所在的索引,indexOf(ch)

一、构造函数

(1)无参构造,value[]长度为0
  1. public String(){this.value = new char[0];}
(2)用String构造
  1. public String(String original) {
  2. this.value = original.value;
  3. this.hash = original.hash;
  4. }
(3)用char数组构造
  1. public String(char value[]) {
  2. this.value = Arrays.copyOf(value, value.length);
  3. }
  4. 数组完全拷贝
  5. public String(char value[], int offset, int count) {
  6. if (offset < 0) {
  7. throw new StringIndexOutOfBoundsException(offset);
  8. }
  9. if (count < 0) {
  10. throw new StringIndexOutOfBoundsException(count);
  11. }
  12. // Note: offset or count might be near -1>>>1.
  13. if (offset > value.length - count) {
  14. throw new StringIndexOutOfBoundsException(offset + count);
  15. }
  16. this.value = Arrays.copyOfRange(value, offset, offset+count);
  17. }
  18. 数组部分拷贝

二、生成子字符串

  1. a.子符串范围:beginIdex-->最后
  2. public String substring(int beginIndex) {
  3. if (beginIndex < 0) {
  4. throw new StringIndexOutOfBoundsException(beginIndex);
  5. }
  6. int subLen = value.length - beginIndex;
  7. if (subLen < 0) {
  8. throw new StringIndexOutOfBoundsException(subLen);
  9. }
  10. return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);
  11. }
  12. b.子符串范围:beginIdex-->endIndex
  13. public String substring(int beginIndex, int endIndex) {
  14. if (beginIndex < 0) {
  15. throw new StringIndexOutOfBoundsException(beginIndex);
  16. }
  17. if (endIndex > value.length) {
  18. throw new StringIndexOutOfBoundsException(endIndex);
  19. }
  20. int subLen = endIndex - beginIndex;
  21. if (subLen < 0) {
  22. throw new StringIndexOutOfBoundsException(subLen);
  23. }
  24. return ((beginIndex == 0) && (endIndex == value.length)) ? this
  25. : new String(value, beginIndex, subLen);
  26. }

三、替换

字符替换,replace(char oldChar, char nerChar)
字符串替换,replaceFirst(String regex, String replacement)
                      replaceFirst(String regex, String replacement)

四、切割

  1. public String[] split(String regex, int limit) {
  2. /* fastpath if the regex is a
  3. (1)one-char String and this character is not one of the
  4. RegEx's meta characters ".$|()[{^?*+\\", or
  5. (2)two-char String and the first char is the backslash and
  6. the second is not the ascii digit or ascii letter.
  7. */
  8. char ch = 0;
  9. if (((regex.value.length == 1 &&
  10. ".$|()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1) ||
  11. (regex.length() == 2 &&
  12. regex.charAt(0) == '\\' &&
  13. (((ch = regex.charAt(1))-'0')|('9'-ch)) < 0 &&
  14. ((ch-'a')|('z'-ch)) < 0 &&
  15. ((ch-'A')|('Z'-ch)) < 0)) &&
  16. (ch < Character.MIN_HIGH_SURROGATE ||
  17. ch > Character.MAX_LOW_SURROGATE))
  18. {
  19. int off = 0;
  20. int next = 0;
  21. boolean limited = limit > 0;
  22. ArrayList<String> list = new ArrayList<>();
  23. while ((next = indexOf(ch, off)) != -1) {
  24. if (!limited || list.size() < limit - 1) {
  25. list.add(substring(off, next));
  26. off = next + 1;
  27. } else { // last one
  28. //assert (list.size() == limit - 1);
  29. list.add(substring(off, value.length));
  30. off = value.length;
  31. break;
  32. }
  33. }
  34. // If no match was found, return this
  35. if (off == 0)
  36. return new String[]{this};
  37. // Add remaining segment
  38. if (!limited || list.size() < limit)
  39. list.add(substring(off, value.length));
  40. // Construct result
  41. int resultSize = list.size();
  42. if (limit == 0)
  43. while (resultSize > 0 && list.get(resultSize - 1).length() == 0)
  44. resultSize--;
  45. String[] result = new String[resultSize];
  46. return list.subList(0, resultSize).toArray(result);
  47. }
  48. return Pattern.compile(regex).split(this, limit);
  49. }


java的String类(一)的更多相关文章

  1. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  2. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

  3. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  4. 深入分析Java的String类的方法与特点

    字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 ...

  5. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  6. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  7. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

  8. JAVA的String类的常用方法(转载)

    Java-String类的常用方法总结   一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的f ...

  9. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  10. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

随机推荐

  1. Android 查看內存使用

    一.使用dumpsys meminfo命令 1.使用dumpsys meminfo查看内存使用情况 2.过滤某个进程可以使用 dumpsys meminfo | grep -i phone 二,使用t ...

  2. C++11中的Lambda表达式

    原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...

  3. HTML5判断设备在线离线及监听网络状态变化例子

    经测试android ipad默认的浏览器支持,用appcan封装的网页也支持 本文原创,转载请说明出处 <!doctype html> <html> <head> ...

  4. 轻量级开源内存数据库SQLite性能测试

    [IT168 专稿]SQLite是一款轻型的数据库,它占用资源非常的低,同时能够跟很多程序语言相结合,但是支持的SQL语句不会逊色于其他开源数据库.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品 ...

  5. linux杂谈

    1. 目录的stick位 一般情况下,如果一个用户对一个目录有写权限,那么他就可以删除该目录下的文件,即使这些文件不是他的.为了防止这种情况,我们需要为目录设置stick位: chmod a+t yo ...

  6. bzoj3743 Kamp

    Description 一颗树n个点,n-1条边,经过每条边都要花费一定的时间,任意两个点都是联通的. 有K个人(分布在K个不同的点)要集中到一个点举行聚会. 聚会结束后需要一辆车从举行聚会的这点出发 ...

  7. Python哈希函数hashlib

    hashlib常用加密方法:md5(), sha1(), sha224(), sha356(), sha384(), sha512()等 结果显示方法: digest():    返回二进制字符串 h ...

  8. C#Winfrom系统打印机调用/设置默认打印机

    实现如下效果: 实现方式如下: using System;using System.Drawing.Printing;using System.Runtime.InteropServices;usin ...

  9. 像装软件一样装系统 Win8下怎么装Win7

    像装软件一样装系统 Win8下怎么装Win7 首先,你需要一个Windows7的ISO镜像文件,非ghost版本 一般选中ISO文件,点反键在弹出菜单中以“装载”或“window资源管理器”方式打开 ...

  10. 免安装Oracle客户端使用PLSQL Developer 7/8 连接Oracle10/11g

    众所周知,Oralce的客户端几百兆太大,网上也有许多DIR的处理.这里的处理使用官方提供ORALCE工具包Instant Client Package! 下载地址:http://www.oracle ...