JavaSE 字符串

  • API
    • API 概述
  • String
    • String 概述
    • String 构造方法
    • String 对象的特点
    • 字符串的比较
    • 通过帮助文档查看 String 中的方法
  • StringBuilder
    • StringBuilder 概述
    • StringBuilder 的构造方法
    • StringBuilder 的添加和反转方法
    • String 和 StringBuilder 的相互转换
    • 通过帮助文档查看 StringBuilder 中的方法

API

API 概述

API(Application Programming Interface):应用程序编程接口
Java API:指的就是 JDK 中提供的各种功能的 Java 类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,
只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

String

String 概述

String 类在 java.lang 包下,所以使用的时候不需要导包
String 类代表 字符串,Java 程序中的所有字符串文字(例如:“ABC”)都被实现为此类的实例,也就是说, Java 程序中所有的双引号字符串,都是 String 类的对象
字符串的特点:

  • 字符串不可变,它们的值在创建后不能被改变
  • 虽然 String 的值是不可变的,但是它们的值可以被共享
  • 字符串效果上相当于字符数组( char[ ] ),但是底层原理是字节数组( byte[ ] )

String 构造方法

String 对象的特点

  1. 通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
char[] chs = {'A','B','C'};
String s1 = new String(chs);
String s2 = new String(chs);

上面的代码中,JVM 会首先创建一个字符数组,然后每一次 new 的时候都会有一个新的地址,只不过 s1 和 s2 参考的字符串内容是相同的
2. 以 " " 方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会创建一个 String 对象,并在字符串池中维护

String s3 = "ABC";
String s4 = "ABC";

上面的代码中,针对第一行代码,JVM 会建立一个 String 对象放在字符串池中,并给 s3 参考;
第二行则让 s4 直接参考字符串池中的 String 对象,也就是说它们本质上是同一个对象

字符串的比较

使用 == 做比较

  • 基本类型:比较的是 数据值 是否相同
  • 引用类型:比较的是 地址值 是否相同

字符串是对象,它比较内容是否相同,是通过 equals() 方法来实现的

  • public boolean equals(Object anObject): 将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串

通过帮助文档查看 String 中的方法

StringBuilder

StringBuilder 概述

StringBuilder 是一个可变的字符串类,可以把它看成是一个容器,这里的可变是指 StringBuilder 对象中的内容是可变的

String 和 StringBuilder 的区别:

  • String:内容是不可变的
  • StringBuilder:内容是可变的

StringBuilder 的构造方法

StringBuilder 的添加和反转方法

String 和 StringBuilder 的相互转换

  1. StringBuild 转换为 String
    public String toString():通过 toString() 就可以实现吧 StringBuilder 转换为 String
  2. String 转换为 StringBuilder
    public StringBuilder(String s): 通过构造方法就可以实现把 String 转换为 StringBuilder

通过帮助文档查看 StringBuilder 中的方法

JavaSE 字符串相关推荐

  1. JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别

    一.包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足, 在设计类时为每个基本数据类型设计了一个对应的类进行代表,这 ...

  2. java产生字符函数_java生成字符串md5函数类(javaSE)

    //实现生成MD5值 import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.B ...

  3. JavaSE——StringBuffer与StringBuilder拼接字符串详细解释

    目录 一.基本了解 1.1使用字符串频繁拼接会出现什么问题? 1.2  了解StringBuffer 1.3 了解StringBuilder 1.4 StringBuffer与StringBuilde ...

  4. 2019-9-19【Javase】String字符串、装箱和拆箱、日期类、正则

    文章目录 一.字符串 1.String类 2.StringBuffer类 StringBuffer 和 StringBuilder区别: 二.装箱和拆箱 装箱和拆箱: 比较: 常用的功能: 三.日期类 ...

  5. javaSE (十五)正则表达式应用(字符串排序、替换、叠词的切割与替换、查找和导出)

    1.字符串排序: 描述:将字符串"91 27 46 38 50"排序,得到"27 38 46 50 91" 将字符串切割成字符串数组 String[] stra ...

  6. 【JavaSE系列】Java中的字符串之字符串常量池

    ⭐️前面的话⭐️ 本篇文章带大家认识Java基础知识--字符串类,在前面我们已经知道如何在Java中定义字符串,本文将介绍Java字符串中的字符串常量池,探究字符串相等问题.

  7. 【JavaSE】day03_Date、SimpleDateFormat、Calendar、Collection

    [JavaSE]day03_Date.SimpleDateFormat.Calendar.Collection 1.Date及其经常使用API 1)JAVA 中的时间 Java中的时间使用标准类库的D ...

  8. JVM---StringTable(字符串常量池)

    StringTable(字符串常量池) 字符串常量池 StringTable(字符串常量池) String的基本特性 String 的底层结构 String 的内存分配 String 的基本操作 字符 ...

  9. 生成唯一字符串算法_面试官问:在分布式场景,生成唯一ID,你有几种方案?...

    来源:http://t.cn/RG0AW0a 说明:本文代码采用C#,重要的是理解解决方案,代码实现都是次要的. 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结.生成I ...

  10. 读取字符串字符时出错_JVM | 运行时常量池和字符串常量池及intern()

    本文知识点 这一块的知识点,一直都是最为混乱的,网上很多博客有的都自相矛盾,因此,这一块需要深入学习,本文以JDK11为基础,尽量参考官方文档 静态常量池 运行时常量池及字符串的引用 各种String ...

最新文章

  1. pandas使用groupby函数和agg函数获取每个分组特定变量独特值的个数(number of distinct values in each group in dataframe)
  2. 收藏:用DE-9IM判断二维空间位置关系
  3. C# 笔记 获取程序当前目录
  4. 如何使用Sublime Text 2重新格式化HTML代码?
  5. 官方版下载_药店大学app官方版下载
  6. lamp怎么使用mysql_我的LAMP实现过程——MySql
  7. boost::range_const_reverse_iterator相关的测试程序
  8. 我是如何用Jquery实现网页缩小放大的
  9. java学到哪里最容易蒙,蒙哥比vs蒙克(目前最好的哪个)
  10. JBox2d入门学习二 -----我的小鸟
  11. python类型转换astype时间_Pandas数据类型转换的几个小技巧
  12. kafka 控制台命令
  13. 【数据仓库】数据仓库设计前如何粗估所需的存储空间大小?
  14. SIGPIPE信号处理
  15. 电脑一直自动输入一个字符
  16. 酷派新机先进得让人害怕,凄惨背后的原因竟是这样?
  17. 关于IT公司技术委员会职责
  18. scrapy爬取51job职位信息(针对2020.851job新的反爬虫机制)
  19. Z字型变幻,整数反转
  20. 达达php源码,达达房卡麻将二次开发VIP系统学习课程

热门文章

  1. nvidia显卡驱动,cuda,和cudnn版本
  2. SELinux permissive模式 设置
  3. 树莓派docker 搭建owncloud个人云盘
  4. SDN:势不可挡的网络演进大潮
  5. IPv4和IPv6比特转发率和包转发率的关系
  6. Tkinter文件夹选择路径功能+打开位置目录功能(Python3.6.X)
  7. cesium模型不遮挡点线面_VueCLI3.0干货系列之集成Cesium三维地球框架
  8. C++11中using 的使用
  9. 基于matlab的高等数学,基于MATLAB的高等数学问题求解
  10. Java编程思想读书笔记(一)第1~13、16章