java字符串

Posted Yienfong_Chueng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字符串相关的知识,希望对你有一定的参考价值。

1、字符串的不变性:

  • String对象创建后则不能被修改,是不可变的,所谓的修改是创建了新对象,所指向的内存空间不同。
  • 一旦一个字符串在内存中创建,则这个字符串将不可以改变如果需要一个可以改变的字符串,则可以使用StringBuffer和StringBuilder。
  • 每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用“==”比较时也为false,如果比较内容是否相同,则应该使用“equals()”方法。
    “==”和“equals()”区别:
    ==:判断字符串在内存中首地址是否相同,即判断是否同一个字符串对象。
    equals():比较存储在两个字符串对象中的内容是否一致。
    PS:字节是计算机存储信息的基本单位,1个字节等于8位,gbk编码中1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节。

2、String类常用方法:

int length() //返回当前字符串的长度
int indexOf(int ch) //查找ch字符在该字符串中第一次出现的位置
int indexOf(String str) //查找str子字符串在该字符串中第一次出现的位置
int lastIndexOf(int ch) //查找字符ch在该字符串中最后一次出现的位置
int lastIndexOf(String str) //查找str子字符串在该字符串中最后一次出现的位置
String substring(int beginIndex)//获取begin位置开始到结束的字符串
String substring(int beginIndex,int endIndex)//获取从begin开始到end位置的子字符串。注意:包括begin位置的字符,不包括end位置的字符。

String trim()//返回去除前后空格的字符串
boolean equals(Object obj)//将该字符串与指定对象比较,返回true或false
String toLowerCase() //将字符串转换为小写
String toUpperCase()//将字符串转换为大写
char charAt(int index)//获取字符串中指定位置的字符
String[] spilt(String regx,int limit)//将字符串分割为子字符串,返回字符数组
String getBytes()//将该字符串转换为bytes数组。

3、StringBuilder类
因为String类具有不可变性,所以使用String类,程序运行时会额外创建一个对象,当频繁操作字符串时,就会额外产生很多临时变量。使用StringBuilder和StringBuffer类可以避免这个问题。
StringBuilder和StringBuffer类不同之处:
StringBuffer线程安全,而StringBuilder没有实现线程安全安全,所以性能略高,因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用StringBuilder类。
当字符串缓冲区去被多个线程使用时,JVM不能保证StringBuilder的操作是安全的,虽然它的速度快。但是可以保证StringBuffer是可以正确操作的。
当在单线程下进行操作时,使用StringBuilder,因为速度快。
StringBuilder类常用方法:

StringBuilder append(arg)//追加内容到当前StringBuilder对象的末尾。
StringBuilder insert(位置,参数)//将内容插入到StringBuilder指定位置。
String toString()//将StringBuilder对象转换为String对象
int length()//获取字符串的长度

以上是关于java字符串的主要内容,如果未能解决你的问题,请参考以下文章

从 Java 字符串的末尾删除行尾字符

Selenium:在动态加载网页中滚动到页面末尾

Bash Heredoc 格式在 ) 末尾添加新行;

java的subString,可以截取指定字符到该行的末尾吗?

Java:去掉 字符串开头的 0;去掉 字符串 末尾的 0

格式为“07-apr-2016”的 Java 日期字符串在转换为 sqldate 时会产生错误的结果