Java基础-String类

1、简单介绍

java中的String类定义为final类型,不支持扩展,即该类不存在子类。

由上图的源码可以看出,底层使用final数组存储数据,且String类实现了Serializable,和Comparable接口,分别使其具有可序列化和可比较大小的特性,后文将详细描述。

2、字符串的声明和使用

字符串声明可分为两种方式,通过字面量直接赋值,此时的字符串常量存储在方法区的常量池中,且常量池中不存储相同的常量。

String str1="abc";

借助new关键字创建对象,new创建的对象在中分配内存空间,对象的引用变量(str1、str2)存储在中,保存对象在堆中的地址。

String str2=new String("DEF");

声明方式不同,在内存空间中的分配的区域不同,具体见下图。这里主要设计堆、栈和方法区三个内存区域,关于堆、栈存储的内容见文章:java基础-数组_ITsOK6的博客-CSDN博客

同时还可以得出,使用new关键字创建字符串对象时,通常情况下会在堆和方法区中各创建一个对象,特别的,当字符串存储的数据已经在常量池中存在时,只在堆中创建一个对象,该对象指向常量池中的常量。

3、String类的常用方法

  • public int length();返回字符串的长度(字符数);
  • public char charAt(int index);返回字符串在指定位置index上的字符
  • public boolean isEmpty();判断当前字符串是否为空
  • public String toLowerCase() ;字符转为小写
  • public String toUpperCase();字符转为大写
  • public String trim():去除前导空白和尾部空白字符之后返回字符串副本

  • public boolean equals(Object anObject) ;比较两对象内容是否相同

  • public boolean equalsIgnoreCase(String anotherString) ;忽略大小写比较内容
  • public String concat(String str) ;将指定字符串str连接到当前字符串后面并生成新的字符串返回

  • public String substring(int beginIndex);从beginIndex索引开始截取字符串并生成新的字符串返回
  • public String substring(int beginIndex, int endIndex) ;截取索引在[startIndex,endIndex)区间内的字符串并返回(重新创建字符串,不改变原字符串的值)。

方框内的参数含义如下:

@param  value    Array that is the source of characters//原字符串
 @param  offset   The initial offset//截取开始索引
 @param  count   The length//截取的字符个数


方框内的参数含义如下: 

original – the array from which a range is to be copied//待复制的数据
from – the initial index of the range to be copied, inclusive//开始索引
to – the final index of the range to be copied, exclusive. (This index may lie outside the array.//结束索引

  • public int compareTo(String anotherString);
    
    比较两个字符串的大小,返回结果为0,两字符串相等;返回结果大于0,当前字符串大于annotherString;返回结果小于0,当前字符串小于annotherString。实现逻辑是依次比较两个字符串中的每一个字符,若不相同,返回两个字符的差值,若在循环范围内所有字符相同,则结果为两字符串长度的差值。源码如下:

  • public int indexOf(int ch)/public int indexOf(String str);返回字符串中字符ch或字符串str首次出现的位置。

4、String、StringBuilder和StringBuffer之间的关系

 三者都是常用的字符串类,主要区别体现在可变性、性能和线程安全性方面,详细见文章String、StringBuffer、StringBuilder区别_ITsOK6的博客-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值