Java之String类

1.初识String类

String是一个引用类型,所以str可以直接赋值一个字符串。

并且Java中也没有\0这种说法。

2.String的构造方法

可以直接用字符串常量进构造,也可以用new的方法去构造(二者等价)

也可以传入一个字符数组进入,也会被转化为字符串。

3.String的内部实现

大家可能会疑惑String内部的hash是用来干什么的?

String类中的hash通常不是直接暴露给用户的字段,但字符串对象在内部或在使用时(如存储在HashSetHashMap等基于哈希的集合中)会计算其哈希码(hash code)。这个哈希码是一个整数,用于快速比较字符串对象是否相等,而不需要逐字符比较,这在处理大量字符串时能够显著提高性能。

  • 哈希码的计算:Java中的String类重写了Object类的hashCode()方法,以提供基于字符串内容的哈希码。这样,如果两个字符串内容相同(即equals()方法返回true),那么它们的哈希码也相同。
  • 用途:哈希码主要用于基于哈希的集合中,如HashSetHashMap等,以提高查找、插入和删除操作的效率。

4.String的成员函数

要获取字符串的某一位,可以用charAt(),下标从0开始。

查某个字符第一次初现的下标可以用indexOf().

同样也可以用来查一个字串。

lastIndexOf可以反向查找。

ValueOf可以把整数,boolean甚至自定义类转化为字符串。

转换函数

String substring(int beginIndex)
从指定索引截取到结尾
String substring(int beginIndex, int endIndex)
截取部分内容
5.  字符串的不可变性
String 是一种不可变对象 . 字符串中的内容是不可改变。字符串不可被修改,是因为:
1. String 类在设计时就是不可改变的, String 类实现描述中已经说明了
以下来自 JDK1.8 String 类的部分实现:
String 类中的字符实际保存在内部维护的 value 字符数组中 ,该图还可以看出:
1. String 类被 fifinal 修饰,表明该类不能被继承
2. value 被修饰被 fifinal 修饰,表明 value 自身的值不能改变,即不能引用其它字符数组,但是其引用空间中 的内容可以修改
2. 所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象
纠正 】网上有些人说:字符串不可变是因为其内部保存字符的数组被 fifinal 修饰了,因此不能改变。
这种说法是错误的,不是因为 String 类自身,或者其内部 value fifinal 修饰而不能被修改。
fifinal 修饰类表明该类不想被继承, fifinal 修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内 容是可以修改的
6. 字符串修改
注意:尽量避免直接对 String 类型对象进行修改,因为 String 类是不能修改的,所有的修改都会创建新对象,效率 非常低下。
因此:尽量避免对 String 的直接需要,如果要修改建议尽量
使用 StringBuffffer 或者 StringBuilder
借助 StringBuffffer StringBuilder
StringBuilder 的介绍
由于 String 的不可更改特性,为了方便字符串的修改, Java 中又提供 StringBuilder StringBuffffer类。这两个类大 部分功能是相同的,大家可以参考 Java Platform SE 8
String StringBuilder 最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可
以修改 。频繁修改字符串的情况考虑使用 StringBuilder
注意: String StringBuilder 类不能直接转换。如果要想互相转换,可以采用如下原则 :
String 变为 StringBuilder: 利用 StringBuilder 的构造方法或 append() 方法
StringBuilder 变为 String: 调用 toString() 方法。
至此关于String类的讲解到此结束,谢谢观看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值