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 web编程篇

    李兴华JavaWeb开发实战经典 http://download.csdn.net/detail/shenzhq1980/9137653 Servlet与JSP核心编程 第2版_1 http://do ...

  2. 【linux】压缩和解压缩

    .gz格式 压缩gzip: gzip只能压缩文件,且压缩后文件消失,不能压缩目录. [root@andon tmp]# ls ml orbit-gdm pulse-2sLvu7UbjUYf pulse ...

  3. 【转】Asp.Net MVC3 简单入门详解过滤器Filter

    原文地址:http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组 ...

  4. NodeJS的异步编程风格

    NodeJS的异步编程风格 http://www.infoq.com/cn/news/2011/09/nodejs-async-code NodeJS运行环境因其支持Javascript语言和异步编程 ...

  5. asp.net和脚本获取当前的URL、IP地址

    介绍一下ASP.NET取得当前页面的完整URL 的方放,icech做成了函数,直接用吧! private string GetPath() { string strPath = "http: ...

  6. Android AVD创建及设置中各参数详解

    设置AVD时有些参数比较模糊,特地找了篇文章,大家参考下! 本文根据如下的模拟器安装做一些解释: Name:自定义虚拟的名称,不能有空格或者其他非法字符,否则不能创建,即Creat AVD不能高亮点击 ...

  7. NOR Flash擦写和原理分析 (二)

    Nor Flash上电后处于数据读取状态(Reading Array Data).此状态可以进行正常的读.这和读取SDRAM/SRAM/ROM一样.(要是不一样的话,芯片上电后如何从NorFlash中 ...

  8. 【原】sql 查询结果合为一行

    SELECT COUNT(*) AS AllCount,t.AssignedCount,(COUNT(*)-t.AssignedCount) AS UnassignedCountFROM 药品表jOI ...

  9. Scala第一章学习笔记

    面向对象编程是一种自顶向下的程序设计方法.用面向对象方法构造软件时,我们将代码以名词(对象)做切割,每个对象有某种形式的表示服(self/this).行为(方法).和状态(成员变量).识别出名词并且定 ...

  10. PLSQL_PLSQL调优健康检查脚本SQLHC(案例)

    2014-08-23 Created By BaoXinjian