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. java 输入输出项目

    package hellohe; import java.util.Scanner; /** * * @author Administrator *1.导入java.util.scanner; *2. ...

  2. lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】

      转自:http://blog.csdn.net/pukuimin1226/article/details/17558247 添加:2013-12-25 更新:2013-12-26 新增分页功能. ...

  3. excel的常用公式

    1,合并单元格 例子 B1="delete from table where id='"&A1&"';" 注意最好单元格为文本格式 1,去重复列 ...

  4. linux下进程、端口号相互查看方法

    linux下通过进程名查看其占用端口: 1.先查看进程pid ps -ef | grep 进程名 2.通过pid查看占用端口 netstat -nap | grep 进程pid 例:通过nginx进程 ...

  5. 初步理解MVC

    一.Asp.net WebForms 与Asp.net MVC 概念 Asp.net是创建WEB应用的框架,MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系. 我们可将原来的Asp.net ...

  6. ClassLoader 机制

    JAVA启动后,是经过JVM各级ClassLoader来加载各个类到内存.为了更加了解加载过程,我通过分析和写了一个简单的ClassLoader来粗浅的分析它的原理. JVM的ClassLoader分 ...

  7. RMAN_学习实验1_RMAN备份标准过程(案例)

    2014-12-23 Created By BaoXinjian

  8. IGS_学习笔记03_Integrated SOA Gateway设定配置(案例)

    20150506 Created By BaoXinjian

  9. about_并查集

    前天刚学了并查集,挺好用的,虽然我现在只会用它来解决是不是亲戚啊,是不是朋友啊,带权并查集还不是很理解. 并查集也叫做不相交集合,主要有3个操作,初始化,查找,合并. 并查集其中一个很大的应用就是kr ...

  10. NeHe OpenGL教程 第四十三课:FreeType库

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...