Java String类用法详解

 更新时间:2021年06月24日 11:54:14   作者:入错行的北北  
今天给大家带来的是关于Java的相关知识,文章围绕着Java String类用法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下

一、简介

零碎知识点

  • extends Object
  • implements serializable,Comparable< String >,charSequence
  • String类表示字符串,所有字符串文字都是此类的对象
  • 字符串是不变的,值在创建后无法更改
  • 对象一旦声明则不可改变,改变的只是地址,原来的字符串还是存在的,并且产生垃圾
  • 任何一个“”都为字符串对象,无赋值则为匿名对象
  • 用“+”拼接字符串尽量避免,一般用append+toString
  • StringBuilder(线程不安全)和StringBuffer(线程安全),忽略线程安全,其它都一样

由于String对象是不可变的,所以可以共享(即两个字符串一样则共享同一块内存地址)

//共享
String t1 = "123";
String t2 = "123";
System.out.ptintln(t1 == t2);//true,(== 比较的是内存地址)

字符串常量池

存在于方法区(加载代码的内存区),被所有的线程共享

堆在逻辑上的划分

堆在逻辑上被分为三部分:
新生代:存储刚创建的对象(GC询问次数最多为15次,>15则进入老年代)
老年代:垃圾回收次数超过15次(即15次之后依然存活的对象)
永久代:静态修饰的所有东西(类、方法、常量…)

每一个字符串对象的创建都会放入永久代(每次创建都先去永久代,前提:不用new,new开辟新内存)

二、创建对象

2.1 直接引用常量区

String s = " ";

String str = “abc” ;

2.2 使用构造方法

String()

String str = new String(“abc”); 

2.3 两种实例化方法的区别

区别

直接赋值:

  • 只开辟一块堆内存空间,并且会自动入池,不会产生垃圾
  • 会将匿名对象“”放入对象池,下一次不同对象直接赋值时直接利用池中已经存在的匿名对象

构造方法:

  • 在堆内存创建对象
  • 会开辟两块堆内存空间,其中一块堆内存会变成垃圾被系统回收,而且不能够自动入池,需要通过public String intern();方法进行手工入池。

三、常用方法

Modifier and Type Method Description
char charAt​(int index) 返回指定索引处的 char值。
int compareTo​(String anotherString) 按字典顺序比较两个字符串。
boolean endsWith​(String suffix) 测试此字符串是否以指定的后缀结尾。
boolean equals​(Object anObject) 将此字符串与指定的对象进行比较。
boolean equalsIgnoreCase​(String anotherString) 将此 String与另一个 String比较,忽略了大小写。
void getChars​(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将此字符串中的字符复制到目标字符数组中。
int indexOf​(int ch) 返回指定字符第一次出现的字符串中的索引。
int indexOf​(int ch, int fromIndex) 返回指定字符第一次出现的此字符串中的索引,从指定索引处开始搜索。
int indexOf​(String str) 返回指定子字符串第一次出现的字符串中的索引。
int indexOf​(String str, int fromIndex) 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。
boolean isEmpty() 返回 true ,当且仅当, length()是 0 。
int lastIndexOf​(int ch) 返回指定字符最后一次出现的字符串中的索引。
int lastIndexOf​(int ch, int fromIndex) 返回指定字符最后一次出现的字符串中的索引,从指定的索引开始向后搜索。
int lastIndexOf​(String str) 返回指定子字符串最后一次出现的字符串中的索引。
int lastIndexOf​(String str, int fromIndex) 返回指定子字符串最后一次出现的字符串中的索引,从指定索引开始向后搜索。
int length() 返回此字符串的长度。
String repeat​(int count) 返回一个字符串,其值为此字符串的串联重复 count次。
String replace​(CharSequence target, CharSequence replacement) 将此字符串中与文字目标序列匹配的每个子字符串替换为指定的文字替换序列。
String replaceAll​(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的每个子字符串替换。
String replaceFirst​(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的第一个子字符串替换。
boolean startsWith​(String prefix) 测试此字符串是否以指定的前缀开头。
boolean startsWith​(String prefix, int toffset) 测试从指定索引开始的此字符串的子字符串是否以指定的前缀开头。
String stripLeading() 返回一个字符串,其值为此字符串,并删除了所有前导 white space 。
String stripTrailing() 返回一个字符串,其值为此字符串,并删除所有尾随 white space 。
CharSequence subSequence​(int beginIndex, int endIndex) 返回作为此序列的子序列的字符序列。
String substring​(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串。
String substring​(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。
char[] toCharArray() 将此字符串转换为新的字符数组。
String toLowerCase() 使用默认语言环境的规则将此 String所有字符转换为小写。
String toUpperCase() 使用默认语言环境的规则将此 String所有字符转换为大写。
String toUpperCase​(Locale locale) 使用给定 Locale的规则将此 String所有字符转换为大写。
static String valueOf​(T i) 返回T参数的字符串表示形式。

到此这篇关于Java String类用法详解的文章就介绍到这了,更多相关Java String内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你开发脚手架集成Spring Boot Actuator监控的详细过程

    教你开发脚手架集成Spring Boot Actuator监控的详细过程

    这篇文章主要介绍了开发脚手架集成Spring Boot Actuator监控的详细过程,集成包括引入依赖配置文件及访问验证的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • java中hashmap容量的初始化实现

    java中hashmap容量的初始化实现

    这篇文章主要介绍了java中hashmap容量的初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • JAVA中重写(Override)与重载(Overload)的相关示例

    JAVA中重写(Override)与重载(Overload)的相关示例

    这篇文章主要给大家介绍了关于JAVA中重写(Override)与重载(Overload)的相关示例,重写(override)和重载(overload)是两种不同的方法重用技术,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 使用Spring底层组件实现Aware接口

    使用Spring底层组件实现Aware接口

    这篇文章主要介绍了使用Spring底层组件实现Aware接口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 浅谈Springboot2.0防止XSS攻击的几种方式

    浅谈Springboot2.0防止XSS攻击的几种方式

    本文主要介绍了Springboot2.0防止XSS攻击的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • maven搭建java ee项目图文教程

    maven搭建java ee项目图文教程

    这篇文章主要为大家详细介绍了maven搭建java ee项目图文教程,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Java如何生成带网站链接(URL)的二维码

    Java如何生成带网站链接(URL)的二维码

    自从微信扫描出世,二维码扫描逐渐已经成为一种主流的信息传递和交换方式,这篇文章主要给大家介绍了关于Java如何生成带网站链接(URL)的二维码的相关资料,文中通过图文实例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • java中i=i++和j=i++的区别小结

    java中i=i++和j=i++的区别小结

    这篇文章主要给大家介绍了关于java中i=i++和j=i++区别的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java 中HashCode作用_动力节点Java学院整理

    Java 中HashCode作用_动力节点Java学院整理

    这篇文章主要介绍了Java 中HashCode作用以及hashcode对于一个对象的重要性,对java中hashcode的作用相关知识感兴趣的朋友一起学习吧
    2017-05-05
  • 详解Java如何优雅的处理异常

    详解Java如何优雅的处理异常

    在编写 Java 程序的过程中,有一种异常几乎每个开发者都会遇到——空指针异常(NullPointerException),那么我们应该如何有效且优雅的处理空指针异常呢,下面小编就来详细介绍这个处理方案吧
    2023-08-08

最新评论