Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

时间:2022-03-29 13:49:32

课程概要

String 字符串

String字符串常用方法

StringBuffer

StringBuilder

String字符串:

1.实例化String对象

直接赋值  String str="Hello";  推荐这种

使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间

如图:Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

源代码 StringDemo01.java

2.String内容的比较

String str="Hello";
String str1=new String("Hello");
//System.out.println(str==str1); false
System.out.println(str.equals(str1));
//"=="比较的是内存地址 equals比较是内容

详细源代码如下StringDemo02.java

3.字符串内容不可改变

String str="hello";
String str1=str+"World";
System.out.println(str1);

感觉是组合了 改变了 但是通过图

StringDemo03.java

#String字符串常用方法

1.字符串的长度 :length()方法

2.字符串转换成数组:toCharArray();

3.从字符串中取出指定位置的字符charAt();

4.字符串与byte数组的转换:getBytes()

5.过滤字符串中存在的字符:indexOf() 有返回当前位置下标 无返回-1

System.out.println(str.indexOf("@"));

6.去掉字符串的前后空格trim()

System.out.println(str.trim());

7.从字符串中取出子字符串
8.大小写转换 toLowerCase() toUpperCase();
9.判断字符串的开头结尾字符,endWith() startWith()
10.替换String字符串中的一个字符replace()

StringDemo04.java

#StringBuffer

1.认识StringBuffer
缓冲区,本身也是操作字符串,但是与String不同,StringBuffer是可以更改的、
即String是常量StringBuffer是个变量 StringBuffer是个操作类,所以必须通过实例化进行操作

StringBuffer sb=new StringBuffer();
sb.append("jikexueyuan");//append添加内容 Sql语句时前后注意空格
System.out.println(sb.toString());

StringBufferDemo01.java

2.StringBuffer常用方法
append()//追加
insert()插入这个方法
replace()
indexOf

StringBufferDemo02.java

3.StringBuffer的应用

String str="jikexueyuan";
for (int i = 0; i < 100; i++) {
str=str+i;

}
System.out.println(str);
//开辟100个空间+str1个=101个

}

4.0 StringBuilder

1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3. StringBuilder:线程非安全的
  StringBuffer:线程安全
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。 对于三者使用的总结:1.如果要操作少量的数据用 = String
       2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
       3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer