java面向对象——String类

java.lang.String 类由final关键字修饰,表示该类不能被继承

该类用于描述字符串,使用该类创建的对象可以描述java应用程序中的所有字符串字面值(常量)

如:“abc” , 而且该字符串字面值是个常量不能更改。

String s1 = "hello";
s1 = "world";		//本质上就是在改变s1本身的指向,而不是指向的内容。

String s1 = null;	和	String s1 = "";	有什么区别?
前面的形式表示没有字符串对象,后面的形式表示有字符串对象但没有内容。

【自动装箱池】

在Integer类的内部提供了一个自动装箱池,该池中已经实现了-128~127之间的整数的装箱过程,因此若程序中需要使用该范围装箱时,直接可以去池中获取,不需要创建新对象。

【字符串常量池】

出亍性能的考虑,JVM会将第一次出现的字符串常量对象缓存在常量池中;对于重复出现的字符串直接量,JVM会首先在缓存池中查找,如果存在即返回该对象。 否则再新建一个对象。

String str1 = "WhatisJava";
String str2 = "WhatisJava";
System.out.println(str1 == str2);		//true  常量池中已存在,即使用str1所指向的对象。
String str3 = new String("WhatisJava");
System.out.println(str1 == str3);		//false   使用new关键字将会创建新的String对象,和常量池无关

常用构造方法

String() - 使用无参的形式构造对象。
String(byte[] bytes) - 使用参数指定的字节数组来构造对象。
String(byte[] bytes, int offset, int length) 
- 使用bytes数组中从offset位置开始的length个字节来构造对象。
String(String original) - 使用参数指定的字符串内容来构造对象(着重关注)。
String(StringBuffer buffer) - 根据参数指定的StringBuffer对象来构造对象。
String(StringBuilder builder) - 根据参数指定的StringBuilder对象来构造对象。

常用成员方法

char charAt(int index) - 用于根据参数指定的下标返回对应位置的字符。
int length() - 用于返回字符串的长度。

int compareTo(String anotherString) - 表示按照字典顺序来比较两个字符串大小
   - 若当前字符串大则返回正数; 若相等则返回0; 若当前字符串小则返回负数。
   - 从第一个字符起进行对应位置的减法运算,若所有位置的字符都一样则根据字符串的长度来确定大小关系。
如:
  	"hello"  和 "world"      ‘h’小于'w',因此"world"比较大。
  	"hello"  和 "hehe"        'l' 大于'h',因此"hello"比较大。
  	"hello"  和 "helloWorld"  由于"helloWorld"比较长,因此该字符串大.
int compareToIgnoreCase(String str) - 比较字符串的大小,不考虑大小写。
boolean equals(Object anObject) - 用于判断调用字符串和参数字符串是否相等。
boolean equalsIgnoreCase(String anotherString) - 判断是否相等但忽略大小写。


boolean contains(CharSequence s) - 判断调用字符串中是否包含参数字符串。
   - 接口类型的引用作为方法的形参,实参需要传递实现类的对象/匿名内部类。
boolean endsWith(String suffix) - 判断当前字符串是否以suffix为结尾。
boolean startsWith(String prefix) - 判断当前字符串是否以prefix为开头。
String toLowerCase() - 用于将所有字符都转换为小写。
String toUpperCase() - 用于将所有字符都转换为大写。
String trim() - 用于返回字符串的副本,忽略两边的空白字符。
    
byte[] getBytes() - 用于将字符串内容转换为byte数组并返回。

int indexOf(int ch) - 用于根据参数指定的字符来返回对应的下标。若参数指定的字符不存在,则返回-1.
int indexOf(int ch, int fromIndex) - 从fromIndex位置开始查找ch出现的位置。
int indexOf(String str) - 查找参数指定字符串第一次出现的位置。
int indexOf(String str, int fromIndex) - 从fromIndex位置开始查找str出现位置

int lastIndexOf(int ch) - 查找ch在当前字符串中最后一次出现的位置。
int lastIndexOf(int ch, int fromIndex) - 用于从fromIndex位置开始反向查找ch出现的位置。
int lastIndexOf(String str) - 用于查找参数指定字符串最后一次出现的位置。
int lastIndexOf(String str, int fromIndex) - 用于从fromIndex位置开始反向查找str出现的位置。

String substring(int beginIndex) - 用于获取从参数指定位置开始的子字符串。
String substring(int beginIndex, int endIndex)
	- 用于获取从beginIndex位置开始到endIndex位置之间的子字符串。

StringBuilder 类和StringBuffer 类

java.lang.String类是用于描述字符串字面值,但对象一旦创建则字符序列不可更改。
java.lang.StringBuilder类和StringBuffer类是用于描述可变字符序列的。
其中StringBuffer类是早期提供的类,支持线程安全,效率比较低。
其中StringBuilder类是后期增加的类,不支持线程安全,但效率高,推荐使用该类。

StringBuilder类(常用)

java.lang.StringBuilder类是用于描述可变字符序列的,可以直接更改当前字符串本身的内容。

常用的方法

StringBuilder(String str) - 根据参数指定的字符串来构造对象。其中初始容量为 16 + 参数字符串的长度。

int capacity() - 用于获取调用对象的容量并返回(初始容量+字符串长度)。
int length() - 用于获取长度(字符的个数)并返回。
int indexOf(String str) - 查询str的位置(下标)并返回。
StringBuilder reverse() - 反转字符序列。

StringBuilder insert(int offset, String str) - 将str插入到offset的位置上。
StringBuilder append(String str) - 将str追加到当前字符串的末尾。
StringBuilder delete(int start, int end) - 将字符串中从start位置(包含)到end位置(不包含)的内容删除。
StringBuilder replace(int start, int end, String str) - 将字符串从start到end用str替换。

该类没有重写equals()、hashCode()方法,但重写了toString()方法的原因?

没有必要,因为它直接对当前字符串操作,而Sting类,当字符串改动时,会创建新的内存空间来存放改动的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值