String 类及其内部丰富的成员函数,以及 Java 与之相搭配的工具类,是进行字符串解析的重要工具。

  • String 对象,将 String 对象转换为 byte[],使用str.getBytes()
  • Character:
    • Character.MIN_VALUE:’\u0000’
    • Character.MAX_VALUE:’\uFFFF’

0. String 对象相等性的比较

String str1 = "abcd"'
String str2 = "abcd";
String str3 = "ab" + "cd";
String str4 = "ab";
str4 += "cd";

其中,str1 == str2 == str3,而不等于 str4

1. 常见成员函数

  • 切分:split()

  • 修建、整理:trim()

    • 所谓的修剪、整理,其实就是删除字符串前后的空格(with any leading and trailing whitespace removed.)
    • 常和split()相搭配,对切分出来的单个字符串删除前后的空格,split("- -")[0].trim()
  • 查询相匹配的位置:indexOf()(第一次出现的)、lastIndexOf()(最后一个出现的)

    public int indexOf(String str) {return indexOf(str, 0);
    }
    public int indexOf(String str, int fromIndex);
    
  • 根据起始和终止位置,截取子串(substring)

    String substring(int beginIndex, int endIndex);
    

    可用于截断,比如删除一个 URL 信息开头的 “GET /” 部分:

    str = str.substring("GET /".length());
    
  • 以某前缀(prefix)开始,以某后缀(suffix)结束

    boolean startsWith(String prefix);
    boolean endsWith(String suffix);
    

2. String 与 Char[] 的交互

  • str.getChars() ⇒ 将字符串中的内容拷贝到 char[] 数组中:

    public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)

    String s = "hello";
    char[] dst = new char[5];// char[5] { '\000', '\000', '\000', '\000', '\000' }
    s.getChars(0, 2, dst, 2);// 从 dst 的第二个数据开始,将 s 的前两个元素复制到 dst 数组中;//  char[5] { '\000', '\000', 'h', 'e', '\000' }
    

3. 重要特性

  • 不可变: String 对象是不可变的(public final class String),String 类中每一个看起来会修改 String 值的方法,实际上都会首先创建一个全新的 String 对象,以包含修改后的字符串内容;

    • 也即对对原字符串的修改不是 inplace 的,<a href=“http://blog.csdn.net/lanchunhui/article/details/70153734”, target="_blank">【编程】常见概念的理解 —— inplace、vanity url、vanilla(code/software)、编译、链接、build、(delegate、proxy)
  • String 对象是不可变的,因此可以给一个 String 对象加任意多的别名,因为 String 对象具有只读特性,所以指向它的任何引用都不可能改变它的值。

Java 基础 —— Character 与 String相关推荐

  1. java基础数据类型与String类型区别

    区别:Java内存存放位置不一样,基本数据类型存在栈(stack),String的对象实例存在堆(heap).另外String,不是基本数据类型,判断是否相等,不能使用==,而应该使用equals方法 ...

  2. JAVA基础5——与String相关的系列(1)

    与String相关的系列 String, 是JAVA中常见的一个引用类型,且其具有一定的特殊性. String类型被设置为final型,即不可继承,也就不可修改其中的实现. String可以改变吗 S ...

  3. Java基础篇:String、StringBuffer、StringBuilder

    一.String: String并不是基本数据类型,而是一个被final修饰的不可变对象.通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象. 字 ...

  4. Java基础 main 参数String[] args的用法

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  5. Java基础之神奇String类(一)

    目录 一.初识String类 二.String类常用方法 (1)字符串构造 1.构造方式 2.String源码保存方式 3.注意小贴士 (2)字符串比较 1.四种比较方式 2.实例演示 (3)字符串查 ...

  6. qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String

    在程序开发中,我们最常用的就是字符串,我们经常声明或初始化各类字符串. 针对String 类型的字符串,a=null,说明其不指向内存区任何一个字符串,但是a=""不同,其指向内存 ...

  7. Java基础之字符串String:

    String ----------------------------------------------------------------------------------------- 一.S ...

  8. [Java基础]int和String的相互转换

    int和String的相互转换:

  9. 【JAVA基础篇】String类详解

    昨天参加了一场机试,发现自己居然对String类的api不熟了,所以今天来总结一下(基于JDK1.8). 1.父类和实现的接口 没有父类,或者说父类是Object 接口:Serializable.Co ...

最新文章

  1. 【Python】青少年蓝桥杯_每日一题_9.11_买鸡
  2. linux shell命令行选项与参数用法详解
  3. Python豆瓣书籍信息爬虫
  4. mstsc远程桌面全频或自定义窗口
  5. 唐宇迪学习笔记9:逻辑回归与梯度下降策略
  6. [数据库系统]关系代数表达式的优化算法
  7. 【测试管理】版本定义
  8. 身高预测_大部分都很准哦
  9. csu1671 经营小卖部(DP 完全背包 好题)
  10. python面向对象程序设计董付国ppt_(董付国)Python 学习笔记---Python面向对象程序设计(1)...
  11. FreeRtos(1)-----任务创建与管理
  12. 三维视频融合技术.在公共安全领域中的应用
  13. 祝贺!中国战队EDG夺冠
  14. 使用 Vue 脚手架
  15. 剑桥学霸强烈推荐:每天花20分钟看这些视频,英语水平暴增
  16. redis数据备份与恢复
  17. (转)VC IMM/IME输入法编程
  18. 鸿蒙宴文言知识积累,文言文鸿门宴知识点汇总
  19. SIMPLIS仿真软件4-POP分析详解
  20. redolog 和 bin log

热门文章

  1. android gridview滑动监听,Android GridView 滑动条设置一直显示状态(推荐)
  2. 内核参数 linux dd,Linux dd 命令详解(测磁盘的吞吐量)
  3. Conditional Expectation Entropy
  4. 用CommonDialog公共对话框选取多个文件
  5. 服务器2008r2网络禁止修改,windows-server-2008-r2 – Windows 2008 R2标准服务器 – 如何禁用RC4...
  6. TestNG安装及配置
  7. ArrayList、Vector、LinkedList的特点和区别
  8. SQL执行insert into后返回主键ID
  9. Android安装后没有完成和打开按钮
  10. a链接易混淆与form表单简易验证用法详解