java String

String str1 = "Sweet" ;     //方式1

String str2 = new String("Sweet");  //方式2

String str3 = str2;  //使引用相同

 

char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};

String helloString = new String(helloArray);  //char数组转换成字符串,可以类比其他类型;

 

str1.concat(str2)  //连接字符串str2连接在str1后面(直接用“+”也可)

concat只能接收字符串,而+可以是字符串或者数字及其他基本类型数据

+左右可以为null,concat会报空指针

如果拼接空字符串concat会稍快,但是可以忽略不计,如果拼接更多的字符串建议使用StringBuider。

+编译后就是使用了StringBuider来拼接,所以使用一行+就会创建一个StringBuilder,多个+就会创建多个,所以建议直接使用StringBuider。

原文链接:https://blog.csdn.net/weixin_53227758/article/details/120329806   (+和concat的区别来自这个链接)

 

==  和  equels

==比较的是地址

equels比较的是字符串中所包含的内容

 

 

常用方法:

int length()
返回此字符串的长度。

char charAt(int index)
返回指定索引处的 char 值。

boolean equals(Object anObject)
将此字符串与指定的对象比较。

boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此字符串复制到目标字符数组。

 

boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。

int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。

int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。

int lastIndexOf(int ch)
 返回指定字符在此字符串中最后一次出现处的索引。

 

boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。

 

int compareTo(Object o)
把这个字符串和另一个对象比较。

int compareTo(String anotherString)
按字典顺序比较两个字符串。

int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。

 

String 类是不可改变的解析

String s = "Google";
System.out.println(s);

s = "Runoob";
System.out.println(s);

输出结果为:

Google
Runoob

s 是一个String引用,指向一个新的字符串
"Runoob",原来的"Google"还是再内存。没有改变

jdk 的源码来分析。

字符串实际上就是一个 char 数组,并且内部就是封装了一个 char 数组。

并且这里 char 数组是被 final 修饰的:

 

length() 方法,length 属性和 size() 方法的区别:

  •  1、length() 方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
  •  2、length 属性是针对 Java 中的数组来说的,要求数组的长度可以用其 length 属性;
  •  3、Java 中的 size() 方法是针对泛型集合说的, 如果想看这个泛型有多少个元素, 就调用此方法来查看!

String StringBuffer StringBuilder区别

String:字符串常量,字符串长度不可变。Java中String 是immutable(不可变)的。用于存放字符的数组被声明为final的,因此只能赋值一次,不可再更改。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调用 StringBuffer 的 toString() 方法。Java.lang.StringBuffer 线程安全的可变字符序列。在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。

StringBuilder:字符串变量(非线程安全)。在内部 StringBuilder 对象被当作是一个包含字符序列的变长数组。

基本原则:

  • 如果要操作少量的数据用 String ;
  • 单线程操作大量数据用StringBuilder ;
  • 多线程操作大量数据,用StringBuffer。


















posted on 2021-12-30 10:42  SweetSir  阅读(47)  评论(0)    收藏  举报

导航